- Initiation au PHP
- La syntaxe
- Les variables
- If - For - While

- Include (Personnaliser une page)
- Créer un mot de passe
- Fonction Mail()
- Fonction Date()

- Lire et écrire dans un fichier
- Fonctions graphiques
- Les bases de données MySQL

 

# PHP et les bases de données

 

Toute la puissance de PHP est d'abord dédiée à la création de pages HTML dynamiques c'est à dire liées à une base de données. Nous proposons dans cet article de mettre en œuvre les fonctions Php d'interfaçage à une base myl sans négliger aucune des étapes. Suivez le guide...

Activation et gestion de la base MySQL sur Free
Créer une table en SQL
créer le script PHP affichant le contenu de la base
créer un formulaire d'insertion dans la table
créer le script d'insertion dans la table

 

Activation et gestion de la base MySQL sur Free

Pour réaliser cet exercice nous avons créé un compte sur Free et activé la base mySQL qui nous y est automatiquement réservée. MySQL c'est le logiciel de base de données (SGBDR) gratuit, installé par cet hébergeur.

Pour gérer une base mySQL, il faut passer des instructions dans le langage SQL. Avec tout autre serveur, n'importe quel front-End (ou logiciel de communication distante avec un SGBD) permettait de passer des ordres SQL directement au SGBD. Sur le Mac, on utiliserait MacSQL Monitor par exemple, pour le pécé MySQL-Front. Mais Free impose que les ordres SQL d'administration de la base soit passés via son interface PhpMyAdmin.

 

Ici le dialogue de connexion à une base mysql du shareware MacSQL Monitor. Ce logiciel permet permet de passer directement des ordres SQL via enterrent (Pour des raisons de sécurité, MacSQL est malheureusement inutilisable sur la base free).

 

L'interface de gestion phpMyAdmin mise à notre disposition par Free (On notera au passage qu'il s'agit d'un gros script php).

 

Nous nous connectons donc sur Free et demandons à accéder à l'interface phpMyAdmin. Depuis ces pages nous pouvons passer directement les ordres SQL requis pour créer la table dont nous avons besoin.

 

Créer une table en SQL

Afin de créer la table nous allons utiliser l'interface de free et utiliser le langage SQL (structured query language). Dans la zone de saisie de phpMyAdmin, nous pouvons passer toutes les instructions standard de SQL. Un exemple, nous demandons le numéro de version de mySQL en saisissant "SELECT version();" puis en cliquant sur "exécuter". le résultat :

version()
3.22.32-log

nous avons besoin maintenant d'une table simple comprenant trois colonnes : une colonne numéro d'enregistrement qui contiendra un entier auto-incrémenté par mySQL, une colonne prénom et une colonne nom. Notre table s'appellera contacts Dans la zone de formulaire nous saisissons exactement l'instruction suivante :

CREATE TABLE contacts (numero SMALLINT NOT NULL AUTO_INCREMENT, prenom VARCHAR(30), nom VARCHAR(30), PRIMARY KEY(numero));

L'exécution de cette instruction créée la table requise. Pour vérifier que notre table est disponible nous passons de la même manière l'instruction SHOW TABLES qui affiche les tables disponibles dans la base :

SHOW TABLES;

Si phpMyAdmin affiche notre table tout s'est bien passé, nous pouvons connaître sa structure par :

DESCRIBE contacts;

MySQL retourne alors un tableau descriptif de notre table (sous phpMyAdmin le retour peut être différent) :

+----------+----------------+------+----------+------------+-------------------+
|    Field    |       Type       |  Null  |   Key    |   Default  |  Extra
+----------+----------------+------+----------+------------+-------------------+
| numero  | smallint(6)     |        |    PRI    |      0        | auto_increment
| prenom  | varchar(30)    | YES  |              |                |                    
| nom       | varchar(30)    | YES  |             |                |         
+----------+----------------+------+----------+------------+----------------------+

Pour insérer quelques enregistrements maintenant on utilise la commande INSERT... autant de fois que nécessaire. Nota on ne s'occupe pas de remplir la colonne numéro puisque ce compteur est auto-incrémenté par le SGBD.

INSERT INTO contacts (prenom, nom) VALUES ("Mélanie", "Zetofret");

INSERT INTO contacts (prenom, nom) VALUES ("Alex", "Terrieur");

Pour voir tout le contenu de notre table, enfin remplie, on passe la commande SQL SELECT :

Select * FROM contacts;

phpMyAdmin montre le résultat sous forme de tableau :

2 rows touched.
+--------+---------+----------+
| numero | prenom | nom |
+--------+---------+----------+
| 1 | Mélanie | Zetofret |
| 2 | Alex | Terrieur |
+--------+---------+----------+

Si nous avons bien noté que chaque requête SQL qui retourne un résultat (SELECT ou SHOW TABLES par exemple) le fait irrémédiablement sous la forme d'un tableau de rangées et de colonnes, alors nous sommes prêt à développer notre interface php qui permettra à nos pages web de communiquer avec la table "contacts".

 

Créer le script PHP affichant le contenu de la base

nous allons créer maintenant la page web qui permettra d'afficher la table contacts. Nous créons un document texte seul qui ressemblera fort à une page HTML standard. Simplement nous insérerons dans le code HTML le code php entre deux tags <? et ?>. Rappel : Le code PHP est destiné à être interprété par le serveur et jamais ne parviens au Navigateur client. Au sein du code PHP les commentaires sont précédés par deux slashes. Commençons :

 

<HTML><BODY BGCOLOR='white'>

Voici donc la liste de nos adh&;amp;eacute;rents : <BR><BR>

<?
// Pour établir une connexion avec la base mySQL nous devons utiliser mysql_connect()

mysql_connect( "localhost", "monLogin", "monMotDePasseFree");

// nous devons maintenant désigner la base par mysql_select_db()

mysql_select_db("mabase");

// si tout c'est bien passé, nous pouvons maintenant
// passer à mySQL un ordre en utilisant mysql_query()
/
/ la fonction requiert une chaîne indiquant la requête SQL
// sans point-virgule. Comme l'ordre SQL va retourner un tableau
// qu'il nous faudra parcourir pour l'exploiter, nous mémorisons le pointeur
// résultat.

$resultat = mysql_query ("SELECT * FROM contacts");

// afin d'exploiter le résultat maintenant, nous faisons appel à la fonction
// mysql_fetch_row(), cette fonction permet à chaque appel de récupérer
// une ligne du tableau résultat sous la forme d'une liste indexée (ou tableau numérique)
// dont l'index commence à zéro.
// Nous allons appeler la fonction de façon répétée de manière à récupérer toutes
// les rangées. Un exemple de ce que la fonction mysql_fetch_row()
// retourne ? Lors du premier appel ce sera une liste du type [ 1, "Mélanie", "Zetofret"].

 

while ($rangee = mysql_fetch_row($resultat)
// pour chaque rangée on affiche une par une les valeurs contenues dans la "liste" :
   {
    for ($n = 0 ; $n < count($rangee) ; $n = $n + 1) {
    echo $rangee[$n], "<BR>";
    }
// après avoir affiché une rangée du tableau, on tire un trait :
echo "---------------<BR>";
}

 

?>

</BODY></HTML>

 

on enregistre notre travail "affichage.php3" en donnant au fichier l'extension .php3, on télécharge notre document sur le serveur de free et voici ce que l'on obtient dans le navigateur :

voici donc la liste de nos adhérents :
1
Mélanie
Zetofret
---------------------------
2
Alex
Terrieur
---------------------------

 

créer un formulaire d'insertion dans la table

afin de pouvoir ajouter des enregistrements dans notre table, nous allons créer maintenant un formulaire HTML simple qui offrira les zones de saisie requises. Voici le code du formulaire HTML :

<HTML><BODY>
<H2> Rejoignez-nous ! </H2><Form name="titi" METHOD="get" ACTION="insert.php3">
nom : <BR>
<INPUT TYPE="text" name="lenom">
<BR><BR>
prenom : <BR>
<INPUT TYPE="text" name="leprenom">
<BR><BR>
<input type="submit" value=" Oui ">
</form>
</BODY>/HTML>

Notre formulaire comprend un attribut ACTION qui le fait pointer vers un script php. C'est ce script qui procédera à l'insertion des valeurs saisies. C'est ce script "insert.php3" que nous allons maintenant rédiger.

 

Créer le script d'insertion dans la table

nous créons un nouveau document pour y saisir le code suivant (rien de nouveau en php ici, c'est toujours la fonction mysql_query() qui permet de passer les ordres SQL) :

<HTML>
<BODY BGCOLOR="orange">
<?


if (empty($lenom)) die( "Merci de remplir le formulaire !");

// nous évitons par ce test de créer un enregistrement si le formulaire
// est expédié vide... en fait JavaScript réaliserait ce test de façon plus pertinente.
// les variables $lenom, $leprenom sont automatiquement créées par PHP
// et reprennent les valeurs des champs homonymes du formulaire.

mysql_connect( "localhost", "monLogin", "monMotDePasseFree");

mysql_select_db("mabase");

$requete = "INSERT INTO contacts (prenom, nom) VALUES (\"$leprenom\", \"$lenom\")";


// rappel dans cette chaîne SQL, il faut des guillemets ! nous
// utilisons l'antislash pour "échapper" ces caractères.


$resultat = mysql_query($requete);

if ($resultat) {
    echo "Merci $leprenom $lenom ! <BR>
    Vous fa&icirc;tes d&eacute;sormais partie de nos adh&eacute;rents.";
   }
else
   {
    echo "Inscription impossible pour l'instant ! réessayez plus tard !";
   }


?>

Pour connaître le contenu de la table contacts, consulter <A HREF="affichage.php3">affichage.php3</A>.

</BODY></HTML>

 

 

 

Sur php il n'y pas lieu de chercher ailleurs que sur le site http://www.php.net/
Sur mySQL, on trouvera une documentation en français sur le site nexen :
http://dev.nexen.net/docs/mysql/chargement.html