|
Tweet | Envoyer cette page |
Cours PHP | Plan du site |
Se connecter
Plus que 18 jours pour gagner 5 jeux !
Marre de la pub ? Devenez membre premium !
![]() | 21 décembre 2012 : la fin du monde ? |
![]() | "Il est déjà trop tard" : l'espèce humaine devrait s'éteindre ce siècle |
![]() | Démographie : la vraie vérité qui dérange |
![]() | Les abeilles, témoins du bon état de notre environnement, disparaissent massivement |
![]() | Un nouveau "continent" de déchets a été découvert dans l'océan Atlantique Nord ! |
![]() | Manger autant de viande est une aberration pour l'environnement et la santé |
![]() | Le pic pétrolier mondial : on doit s'y préparer dès maintenant ! |
![]() | Limiter l'augmentation de la température planétaire à 2 ºC n'est plus réalisable |
![]() | Le déclin de l'industrie nucléaire |
![]() | 7 milliards d'habitants sur Terre |
![]() | Pollution de l'air : plus de 2 millions de morts par an |
Marre de la pub ? Devenez membre premium !
Cartes et données mises à jour en "temps réel"Découvrez l'agenda du mois
> > Février 2012 < <
Marre de la pub ? Devenez membre premium !
www.notre-planete.info : environnement, développement durable et sciences de la Terre
Une fois que nous sommes connectés à MySQL et à une base de données, nous pouvons effectuer des tâches classiques dans un SGBD : afficher une table, supprimer un enregistrement, mettre à jour un enregistrement, afficher le résultat d'une requête... Il est donc indispensable d'avoir au préalable une bonne connaissance du langage SQL...
Toutes ces actions sont directement effectuées en SQL en exploitant les méthodes de la classe mysqli. Ici on utilisera la méthode PHP query ().
Admettons que nous soyons connectés à notre base de données comme vu précédemment.
Nous souhaitons par exemple afficher tous les enregistrements de la table nommée 'user' pour lesquels le champ intitulé 'nom' est égal à 'Samia' :
<?php
$requete = "SELECT * FROM user WHERE nom = 'Samia'";
$resultat = $mysqli->query ($requete);
?>
Cet exemple suffit pour comprendre comment PHP s'interface avec MySQL : une requête SQL est passée en argument de la fonction query (), cette requête est ici déclarée avant dans une variable de type chaîne de caractères.
Le raccourci suivant est bien sûr possible :
<?php
$resultat = $mysqli->query ("SELECT * FROM user WHERE nom = 'Samia'");
?>
De la même façon, on pourrait effectuer une requête de suppression, d'ajout...
Notons que le résultat de la requête se trouve dans la classe MySQLi_Result nommée $resultat. Ce résultat peut ensuite être exploité via différentes méthodes / fonctions. Nous utiliserons ici la méthode fetch_assoc() comme en témoigne l'exemple ci-dessous :
<?php
$ligne = $resultat->fetch_assoc();
echo 'le premier enregistrement a pour utilisateur '.$ligne["user"].' et pour score '.$ligne["score"];
?>
Ce qui donnera :
le premier enregistrement a pour utilisateur Samia et pour score 72
Pour récupérer les valeurs des champs d'un enregistrement, on utilise donc la fonction fetch_assoc() qui retourne l'enregistrement en cours sous la forme d'un tableau associatif.
En effet, si notre requête retourne plusieurs enregistrements, il suffit d'effectuer une boucle while qui lira tous les enregistrements jusqu'au dernier pour affichage, exploitation...
Nous prendrons ici l'exemple de l'affichage des 4 dernières actualités du portail notre-planete.info. Voici le code utilisé (en admettant que nous sommes déjà connectés à notre base)
<?php
// on limite à 4 le nombre d'enregistrements souhaité
$requete = "SELECT * FROM table_actus ORDER BY champ_date DESC LIMIT 4";
// envoi de la requête
$resultat = $mysqli->query($requete) or die ('Erreur '.$requete.' '.$mysqli->error);
// tant qu'il y a un enregistrement, les instructions dans la boucle s'exécutent
while ($ligne = $resultat->fetch_assoc()) {
// on convertit la date dans un format lisible
$date = date( "d/m", strtotime($ligne['champ_date']));
// mise en place d'un lien sur le titre et ajout dans la variable $news
$news .= '<li><strong>'.$date.'</strong><a href="http://www.notre-planete.info/actualites/actualites/actu_'.$ligne['champ_numero'].'.php">'
.$ligne['champ_actu'].'</a></li>';
}
// affichage de la variable $news qui s'est enrichie à chaque passage dans la boucle
echo "<ul>$news</ul>";
?>
Nous constatons que la fonction fetch_assoc() permet de récupérer les valeurs de l'enregistrement en cours tout en passant au suivant une fois la fonction appelée. C'est à dire qu'il n'est pas utile (comme en ASP par exemple) d'indiquer que l'on souhaite maintenant lire le prochain enregistrement, ils sont lus séquentiellement.
Notons qu'il n'est pas possible de "revenir en arrière", au premier enregistrement à lire avec cette méthode.
Le résultat sera le suivant :
Avec ces quelques fonctions, nous sommes donc capables d'interfacer facilement PHP avec MySQL, les limites étant celles de vos connaissances en algo et en MySQL ;-)
Détaillons quelque peu la méthode num_rows() qui permet de compter le nombre d'enregistrements retournés par une requête de sélection. Elle est très utilisée.
Par exemple, nous souhaitons retourner le nombre de photos enregistrées dans les galeries de photos de ce site.
<?php
$requete = "SELECT num FROM table_photos";
$resultat = $mysqli->query($requete) or die ('Erreur '.$requete.' '.$mysqli->error);
$nombre = $resultat->num_rows;
echo "$nombre photos disponibles !";
?>
Ce qui nous donnera :
3889 photos disponibles !
Une fois que la requête a été exécutée et les résultats affichés et/ou exploités, il faut libérer la mémoire associée. Ceci se fait grâce à la méthode free_result ou free
<?php
$requete = "SELECT num FROM table_photos";
$resultat = $mysqli->query($requete) or die ('Erreur '.$requete.' '.$mysqli->error);
$nombre = $resultat->num_rows;
// on libère la mémoire
$resultat->free_result;
echo "$nombre photos disponibles !";
?>
Prenons l'exemple d'une visualisation de toutes les actualités en environnement de l'année en cours sur le portail notre-planete.info
Nous choisirons ici de privilé
<?php
$serveur = "mysql.monserveursql.com";
$base = "mabase";
$user = "monuser";
$pass = "monpass";
$mysqli = new mysqli($serveur, $user, $pass, $base);
if ($mysqli->connect_error) {
die('Erreur de connexion ('.$mysqli->connect_errno.')'. $mysqli->connect_error);
}
?>
<?php
//les actualités seront mises dans un tableau
echo "<table>";
// on se connecte à la base de données via l'inclusion du fichier id_connect.inc.php
include ($_SERVER["DOCUMENT_ROOT"]."/inc/id_connect.inc.php");
$annee = 2005; //annee souhaitée
$rubrique = "environnement"; //rubrique affichée
//requête de sélection
$requete = "SELECT * FROM champ_actualites WHERE categorie='$rubrique'
AND YEAR(date)=$annee ORDER BY date DESC";
$resultat = $mysqli->query($requete) or die ('Erreur '.$requete.' '.$mysqli->error());
$n = $resultat->num_rows;
for($i=0;$i<$n;$i++) {
$ligne = $resultat->fetch_row();
$date = date("d/m", strtotime($ligne[2]));
$liste .= "<tr><td>";
if ($i%2==0)
$liste .= ' bgcolor="#eeeeee"';
$liste .= '><span style="color:#00216A; font-weight: bold">'.$date.'</span> - <a href="actu_'.$ligne[0].'.php">'.$ligne[4].'</a></td></tr>';
}
echo "$liste.</table>";
?>
Enfin, voyons comment s'effectuent d'autres types de requêtes sur une base de données : effacement, mise à jour...
Haut de page ^
Offres d'emploi et CV
Livres et DVD
Associations
Communiqués
Agenda
Flux RSS
Partenaires
Page mise à jour le 02/12/2011 25 connectés© 2001-2012 notre-planete.info® v. 5.69 - tous droits réservés
notre-planete.info est un site indépendant qui informe et sensibilise objectivement sur l'environnement, l'écologie, les sciences de la Terre et le développement durable
Mentions légales |
Presse |
Publicité |
Contact |
Liens et logos |
Soutenez notre-planete.info !