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îtes désormais
partie de nos adhé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
<
Sommaire
|