NoShade.net est en vente — Contactez nous si vous êtes intéressé
Le siteTutoriauxInterviews
icone RSS NoShade.net

Accueil » Tutoriaux » PHP » Chapitre 4.2 : Lecture dans une BDD

Les tutoriaux Php

4.2 - Lecture dans une BDD


Se connecter à MySQL



Avant de pouvoir traiter avec MySQL, il est obligatoire de s'y connecter.
En effet, si vous ne dites pas à PHP à quelle base de données il doit se connecter, lui ne peut pas le deviner. :)

Voyons ensemble un petit script de connexion des plus simplistes (celui-ci peut être amélioré par la suite, par exemple pour retourner des erreurs en cas de problème, ou autre...).

<?php
    
// On met en variables les informations de connexion
    
$hote  'localhost';  // Adresse du serveur
    
$login 'root';       // Login
    
$pass  '';           // Mot de passe
    
$base  'test';       // Base de données à utiliser

    // On se connecte à la base de données
    
mysql_connect($hote$login$pass);

    
// On selectionne la base de données souhaitée
    
mysql_select_db($base);
?>


On enregistre généralement ce script dans un fichier "connexion.inc.php" (.inc comme include), et que l'on place à la racine de son site.
On en fait alors une include dès les premières lignes de la page index.php.
<?php include('connexion.inc.php'); ?>


Ce script ne marchera que si les informations de connexion sont correctes (logique!).
Voici pour chacune des installations que nous avons détaillées dans le chapitre 1.2, vos identifiants de connexion à mysql.
Pour ceux qui se demandent comment faire si vous voulez tester vos scripts PHP sur un serveur web, celles-ci varient selon les hébergeurs. Renseignez-vous donc auprès de celui-ci pour connaître vos informations de connexions. Nous avons ajouté les informations de connexions sur les serveurs FTP Free, ceux-ci étant grandement utilisés en général.

EasyPHP MAMP LAMP Free.fr
$hote localhost localhost:8889 localhost sql.free.fr
$login root root root Login du FTP
$pass root Votre mot de passe Mot de passe du FTP
$base test test test Login du FTP

Se déconnecter de MySQL



S'il est obligatoire de se connecter à la base de données avant toute instruction MySQL, il n'est pas obligatoire de s'y déconnecter une fois les informations voulues obtenues.
Cependant, par mesure de sécurité, il est préférable de se déconnecter de la base de données une fois que l'on en a plus besoin.

Pour cela, insérez en fin de page cette simple ligne de code PHP :
<?php mysql_close(); ?>


Voilà une précaution non négligeable pour la protection de votre site! :)


Afficher la liste des bouquins



Nous avons donc une page index.php, contenant comme première ligne, une include PHP du fichier "connexion.inc.php", et comme dernière ligne, la fonction mysql_close();.
Nous allons donc maintenant afficher du texte dans la page, entre les balises <body> et </body> donc.

Pour afficher des données, nous allons nous servir de plusieurs choses que vous avez apprises dans les chapitres précédents. Les arrays notamment, puisque, pour rendre plus lisible notre code, nous allons demander à MySQL de mettre en tableaux nos données, via la fonction mysql_fetch_array(), puis les boucles, pour nous permettre de demander à PHP d'afficher les données sous la même forme, les unes en dessous des autres, et ce tant qu'il y a des informations à afficher.

Si la théorie peut paraître compliquée, la pratique est plutôt simple, vous allez voir. :)

<?php include('connexion.inc.php'); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 TRANSITIONAL//EN">
<html>

    <head>
        <title>Mes bouquins</title>
    </head>
    <body>
<h1>Liste de mes bouquins</h1>
<?php
    
// On demande à MySQL de nous sélectionner tous les bouquins enregistrés
    
$demande mysql_query('SELECT * FROM bouquins');
    
// On fait une boucle où l'on met en array (tableau) toutes les donnees trouvées
    
while ($donnees mysql_fetch_array($demande))
    {
    echo 
'id : ' $donnees['id'] . '<br />';
    echo 
'éditeur : ' $donnees['editeur'] . '<br />';
    echo 
'Collection : ' $donnees['collection'] . '<br />';
    echo 
'Prêté à : ' $donnees['pret'] . '<br />';
    echo 
'Titre : ' $donnees['titre'] . '<br />';
    echo 
'Genre : ' $donnees['genre'] . '<br />';
    echo 
'Prix : ' $donnees['prix'] . '<br />';
    echo 
'Notes personnelles : ' $donnees['notes'] . '<br />';
    echo 
'<hr>';
    }
?>
    </body>
</html>
<?php mysql_close?>


Voici donc l'intégrale de notre page index.php.
Testez ce script chez vous avec votre navigateur web, il fonctionne et vous affiche déjà toutes les informations que nous avons demandé à PHP! :)

Ce qui doit le plus vous interpeller est certainement la 12eme ligne, c'est normal, voici notre première requête SQL!
Détaillons la ensemble.

SELECT : On demande à sélectionner les informations
* : Ce signe signifie "toutes", en l'occurrence, nous demandons donc à sélectionner toutes les informations
FROM : En Français, on le traduirait "depuis", ou "dans", nous demandons donc de sélectionner toutes les informations dans la table 'bouquins', que nous avions crée ensemble.

Il existe beaucoup d'autres mots, qui vont nous permettre de trier, de choisir les informations que l'on souhaite récupérer.
Nous pourrions ainsi demander à trier les livres selon leur prix, du moins cher au plus cher d'entre eux, ou encore ne demander à afficher que les romans, ou que les livres prêtés.

Mais nous allons déjà dans un premier temps améliorer un peu ce script.
Nous souhaiterions ne pas afficher le mot "Prêté à :", si le livre n'a pas été prêté, en effet, ça ne fait pas très joli...
Pour cela, avez vous une idée? ;)

Les conditions, bien entendu! Et notre petit mot magique "NULL"!

Au lieu d'écrire donc la ligne :

    echo 'Prêté à : ' $donnees['pret'] . '<br />';


Nous allons créer une condition, qui vérifiera le contenu du champ. Si celui-ci est vide, c'est simple, on n'affiche pas la phrase, sinon, on l'affiche, suivie de son contenu.

    if ($donnees['pret'] != NULL)
    { echo 
'Prêté à : ' $donnees['pret'] . '<br />'; }
    else { }


Vous vous rappeliez de ça? C'est tout simple, non? ;)

Nous allons faire la même chose pour le champ "notes", qui n'est pas souvent rempli, et nous en profiterons pour voir une nouvelle fonction, qui à pour but de créer des retours à la ligne. Si vous regardez le résultat de votre script actuellement, les notes dans la partie "Notes personnelles :" sont toutes écrites en une seule ligne, et nous voudrions bien que PHP les écrives avec des retours à la ligne quand il y en a.

    if ($donnees['notes'] != NULL)
    { echo 
'Notes personnelles : ' nl2br($donnees['notes']) . '<br />'; }
    else { }


nl2br() ?
En fait, les retours à la ligne dans la base de données, sont stockés sous la forme : /n
PHP transforme donc les /n en annotations <br />, tout simplement grâce à cette fonction!


Trier les bouquins



Voyons maintenant comment faire pour trier nos bouquins.
Comme dit précédemment, tout se joue sur le code de la requête SQL que l'on écrit, souvenez-vous, cette ligne-ci :
$demande mysql_query('SELECT * FROM bouquins');


Nous allons donc faire plusieurs tests, où tout se jouera dans cette requête.

Hum, par exemple, nous souhaiterions n'afficher que les mangas :
    $demande mysql_query('SELECT * FROM bouquins WHERE genre="Mangas"');


Le tour est joué, seuls les mangas sont affichés! :)

Maintenant, nous souhaiterions afficher les bouquins que l'on à payé moins de 10 euros et, en toute logique, les classer par ordre de prix, du moins cher au plus cher.
    $demande mysql_query('SELECT * FROM bouquins WHERE prix < 10 ORDER BY prix');


Magnifique, non? ;)
S'il on veut maintenant afficher ces mêmes données, mais en ordre inversé, cet à dire du livre le plus cher, au livre le moins cher, on rajoute le mot "DESC" à la fin.
    $demande mysql_query('SELECT * FROM bouquins WHERE prix < 10 ORDER BY prix DESC');


Nous souhaitons maintenant n'afficher que les BD et les mangas dans cette liste de "bouquins à moins de 10 euros".
    $demande mysql_query('SELECT * FROM bouquins WHERE prix < 10 AND genre="BD" OR genre="Mangas" ORDER BY prix DESC');


Enfin, nous ne voudrions afficher que les 5 derniers bouquins que l'on a enregistré.
    $demande mysql_query('SELECT * FROM bouquins ORDER BY id DESC LIMIT 5');


Voici donc la correspondance de nos nouveaux "mots-clés" :
WHERE : Signifie "où" en Français
< : Ce signe, nous l'avons vu dans les conditions, il signifie "plus petit que", comme en mathématiques (hé oui!), vous en déduirez rapidement que vous pouvez également utiliser les signes >, <=, >=, et même != pour dire "différent de"
ORDER BY : Signifie "ordonné par" en Français, nous y définirons donc le champ par lequel nous souhaitons trier nos informations (suivi de DESC pour inverser l'ordre des résultats)
AND et [b]OR[b] : Signifient respectivement "et" et "ou bien" en Français, cela nous permettra donc de cumuler plusieurs choix dans notre requête.
LIMIT : Sert à limiter le nombre de bouquins que l'on souhaite afficher.

Il est important d'utiliser tous ces mots dans le bon ordre lorsque vous écrivez votre requête, sinon celle-ci ne marchera pas, tout simplement.
Le bon ordre est donc WHERE puis ORDER BY et enfin LIMIT


Je vous laisses faire d'autres tests dans cet esprit là, essayez par exemple de n'afficher que les livres de moins de 10 euros, sans les BD... Sachez que tous ces mots-clés sont cumulables dans une même requête! (Mais non, n'ayez pas peur comme ça!) ;)


Vous commencez à voir à quel point PHP peut être intéressant? :)
Rassurez-vous, on a pas encore tout vu! :D

Le plus intéressant je pense, réside dans le fait de pouvoir ajouter, modifier et supprimer nos informations, afin de pouvoir réellement gérer une liste de livres.
Ce sont justement les sujets de nos prochains chapitres! Tenez bon! :)

Par : Legibe, le 11 septembre 2006

Sommaire du cours PHP

» Sommaire
» 1.1 Avant propos
» 1.2 Que faut'il pour faire du php?
» 2.1 Écrire du texte en PHP
» 2.2 Les commentaires, les variables et les calculs
» 2.3 Les conditions
» 2.4 La concaténation + Évaluation
» 3.1 Transmission de données
» 3.2 Les fonctions + Dates et heures
» 3.3 Les Arrays (tableaux) + les boucles
» 4.1 Les bases de données
» 4.2 Lecture dans une BDD
» 4.3 Enregistrer dans une BDD
» 4.4 Modifier le contenu d'une table
» 4.5 Supprimer du contenu dans une BDD
» 4.6 Statistiques
» 5.1 Les sessions et cookies
» 5.2 Exercice : Un système de login multi-membres