Il existe plusieurs possibilités de connexion aux base de données.
<?
// Syntaxe correcte pour PHP 5.6 :
$BaseMichel = new mysqli("localhost", "NomUtilisateur", "MotDePasse", "NomBaseDeDonnées");
$BaseMichel->query("INSERT INTO T_Client(NomClient) VALUES ('Durand')");
$Resultat = $BaseMichel->query("SELECT NomClient FROM T_Client");
$Resultat->data_seek(0);
while ($LigneActuelle = $Resultat->fetch_assoc())
{
echo $LigneActuelle['NomClient'] . "<br/>";
}
$BaseMichel->close();
?>
<?
mysql_connect("localhost",
"info3000", "MonMotDePasse");
mysql_close();
?>
Ouverture et fermeture d'une session de connexion chez Infomaniak
<?
mysql_connect("localhost",
"info3000", "MonMotDePasse");
mysql_close();
?>
@mysql_connect("localhost", "info3000", "MonMotDePasse") or die("Impossible de se connecter à la base de données");
Le fait de commencer la ligne par @ permet d'écrire or die quelque chose... C'est à dire qu'en cas d'erreur sur cette ligne, au lieu d'avoir le message d'erreur PHP généralement incompréhensible pour les novices, on a plutôt une phrase qui s'affiche à l'écran plus sympathique : "Impossible de se connecter à la base de données". Ensuite, la procédure PHP s'arrête net (les lignes suivantes de PHP ne sont pas exécutées)
mysql_connect("localhost",
"info3000", "MonMotDePasse");
mysql_select_db("info3000");
mysql_close();
Soit la table :
CREATE TABLE T_Copain
(
NomCopain varchar(30),
Prenom varchar(20),
Profession varchar (30)
);
Pour ajouter Jean-Louis Moretton, Maçon, il va falloir exécuter
la requête :
INSERT INTO T_Copain
VALUES('Moretton','Jean-Louis','Maçon');
Dans une instruction PHP, comme ceci :
mysql_connect("localhost",
"info3000", "MonMotDePasse");
mysql_select_db("info3000");
mysql_query("INSERT
INTO T_Copain VALUES('Moretton','Jean-Louis','Maçon');");
mysql_close();
Soit la même table qui contient les données suivantes (On a effacé Moretton) :
mysql_query("INSERT
INTO T_Copain VALUES('Van Gogh','Vincent','Peintre');");
mysql_query("INSERT INTO T_Copain VALUES('Colucci', 'Michel', 'Comique');");
mysql_query("INSERT INTO T_Copain VALUES('Goya', 'Chantal','Chanteuse');");
mysql_query("INSERT INTO T_Copain VALUES('Picasso', 'Pablo', 'Peintre');");
Il s'agit d'afficher ces données.
$Resultat = mysql_query("SELECT * FROM T_Copain;");
$Resultat ne va pas contenir directement le résultat, mais c'est un pointeur VERS les données résultantes. D'ailleurs, si on demande à l'afficher, il va simplement répondre Resource id #2: C'est normal car, quelque part, on ignore le nombre de champs et d'enregistrements à retourner. Il va falloir utiliser d'autres fonctions prévues pour extraires ces fameuses données :
On constate qu'il s'agisse d'une requête "Active", telle qu'un INSERT INTO, ou d'une requête "passive" (SELECT), dans les 2 cas, c'est l'instruction mysql_query qui est utilisée.Simplement, dans le cas d'une requête "active", il n'est pas besoin d'assigner le résultat dans une variable $Machin = mysql_query("INSERT INTO... Encore que ce serait possible, mais $Machin contiendrait juste 1 comme quoi ça c'est bien déroulé (je suppose que c'est ce que veut dire le 1). Par contre, pour les requêtes SELECT, il faut bien voir le résultat, alors dans ce cas on utilise une variable $Machin = mysql_query("SELECT...
La fonction mysql_numrows renvoie le nombre d'enregistrements de la requête
echo mysql_numrows($Resultat);
Le code suivant affiche le NomCopain du premier enregistrement (Colucci). (Les enregistrements sont comptés depuis 0)
$Resultat = mysql_query("SELECT
* FROM T_Copain ORDER BY NomCopain;");
echo
mysql_result($Resultat , 0 , "NomCopain");
mysql_result possède 3 paramètres :
Il ne faut pas aller au delà du nombre maximum d'enregistrements. Aussi, comme ils sont numérotés à partir de 0, c'est le 3 qui est le plus grand :
echo mysql_result($Resultat , 4 , "NomCopain");
Renvoie une erreur de type :
Warning: Unable to
jump to row 4 on MySQL result
Un simple for suffit : Dans la partie $Compteur<mysql_numrows($Resultat), on écrit bien < et pas <=, parce que je rappelle que les enregistrements sont comptés à partir de 0, donc, il faut compteur de 0 à 3 et pas 4, d'ou le <, qui s'arrêtera a 3..
for ($Compteur=0 ;
$Compteur<mysql_numrows($Resultat) ; $Compteur++)
{
echo mysql_result($Resultat , $Compteur , "NomCopain");
}
Affichons maintenant les 3 champs : Si nous les assignons à des variables, l'echo sera plus simple à écrire et à comprendre :
for ($Compteur=0 ;
$Compteur<mysql_numrows($Resultat) ; $Compteur++)
{
$NomCopain = mysql_result($Resultat , $Compteur , "NomCopain" );
$Prenom = mysql_result($Resultat , $Compteur
, "Prenom" );
$Profession = mysql_result($Resultat , $Compteur , "Profession");
echo $Prenom , " " , $NomCopain , " (" ,
$Profession , ")<BR>";
}
Et voici le code complet :
<?
// Séquence d'initialisation :
// =========================
mysql_connect("localhost", "info3000", "MonMotDePasse");
mysql_select_db("info3000");
// Corps
:
// =====
$Resultat = mysql_query("SELECT * FROM T_Copain ORDER BY NomCopain;");
for
($Compteur=0 ; $Compteur<mysql_numrows($Resultat) ; $Compteur++)
{
$NomCopain = mysql_result($Resultat , $Compteur , "NomCopain");
$Prenom = mysql_result($Resultat , $Compteur , "Prenom");
$Profession = mysql_result($Resultat , $Compteur , "Profession");
echo $Prenom , " " , $NomCopain , " ("
, $Profession , ")<BR>";
}
// Fin
:
// ===
mysql_close();
?>
---