vendredi 29 juin 2012 (), par
D’abord, il faut se connecter à la base.
mysql_connect('serveur_bdd','utilisateur_bdd','mot_de_passe_bdd','MYSQL'); // or die ?
mysql_select_db("nom_base");
Ces quelques lignes de code pourront être mises seulement dans un fichier php que l’on va ensuite inclure dans toutes les pages qui en auront besoin.
include "connect.php";
Note : le système d’inclusion en PHP (include, require, include_once...) sera évoqué dans un autre article.
Puis on construit la requête
exemple :
$rek_sel="select * from spip_articles where id_rubrique=$id_rubrique_diapo and statut='publie' order by 'date' DESC limit $debut,$par_page "; // order by date DESC
Ici, il faut connaître suffisamment le langage SQL pour créer la requête.
Cela sera détaillé dans l’article suivant, il faut simplement retenir pour l’instant le fait que l’on met une requête texte en langage SQL dans une variable PHP.
On l’exécute
$res_sel=mysql_query($rek_sel);
et on récupère le résultat
Si le résultat ne peut comporter qu’une seule ligne maximum.
On envoie le résultat brut renvoyé par la précédente commande dans un tableau (d’une seule ligne, de fait), lequel est associatif (chaque colonne est nommée selon les champs choisis dans la clause SELECT de la requête plus haut).
Puis on récupère la valeur du ou des champs ciblés.
$rek_compt="select count(*) as total from spip_articles where id_rubrique=$id_rubrique_diapo and statut='publie'";
$res_compt=mysql_query($rek_compt);
$row_total=mysql_fetch_array($res_compt,MYSQL_ASSOC);
$total=$row_total["total"];
On prendra soin de tester si la valeur retournée est nulle ou chaîne vide, quand cela risque de se produire (ici, on a fait un comptage des lignes, donc forcément non vide, entre 0 et n).
Si le résultat comporte ou risque de comporter plusieurs lignes :
On envoie le résultat brut renvoyé par la commande précédente dans un tableau, lequel est de type associatif (chaque colonne est nommée selon les champs choisis dans la clause SELECT de la requête plus haut).
Puis on traite ce tableau ligne par ligne par une boucle WHILE (tant que le tableau de résultat renvoie une ligne, traiter la ligne).
while ($row_sel=mysql_fetch_array($res_sel,MYSQL_ASSOC)){
$id=$row_sel["id_article"];
$titre=htmlentities($row_sel["titre"]);
$texte=htmlentities($row_sel["texte"]);
...
...
}
Ici, htmlentities(texte) est une fonction PHP qui permet de transformer les caractères spéciaux - qui risquent d’être interprétés en html - par leur code html équivalent.
Enfin, on ferme la connexion à la base.
mysql_close();
Même si le serveur gère les connexions inactives, c’est plus propre.
A noter, le SQL est un langage complet, les requêtes peuvent donc devenir très complexes.
Cela n’étant pas l’objet de cet article, seules les bases seront évoquées ici.
Un article sur le SQL "avancé" pourra être écrit plus tard.