Il va donc y avoir un menu principal menu.htm, qui va se contenter de nous donner 2 choix :
Lorsqu'on clique sur "Ajouter une nouvelle personne", on est envoyé sur la page ajouternouveau.htm, qui est une page HTML pourvue d'un formulaire qui va nous demander d'entrer le Nom, le Prénom et l'E-Mail de la nouvelle personne. Il y aura un bouton SUBMIT qui va permettre d'envoyer les données à la page de confirmation confirmationajout.php
confirmationajout.php va réellement ajouter les données dans la table, et proposer un seul lien vers le menu principal menu.htm
Dans menu.htm, quand on clique sur "Voir les enregistrements", on est transféré sur la page visualisation.php qui va lister tous les enregistrements de la table dans la page.
Il est donc bien entendu nécessaire de disposer d'une base de données chez son fournisseur internet. C'est donc mon cas chez Infomaniak.
Objets | Commentaires |
Base de données | info3000 |
Emplacement | localhost (http://www.info-3000.com) |
Table | ZZ_CarnetAdresse |
Champs | NomClient Adresse Tous vides |
Pages - Certaines pages nécessitent du code PHP, aussi, elles doivent être en .php | |
Menu principal | menu.htm |
Ajout d'un nouvel enregistrement | ajouternouveau.htm |
Confirmation de l'ajout, et ajout proprement dit | confirmationajout.php |
Visualisation des enregistrements | visualisation.php |
Cette opération peut se faire facilement avec PHPmyAdmin. Voici l'équivalent MySQL :
CREATE TABLE `T_Client`
(
`NomClient` VARCHAR(50) NOT NULL,
`Prenom` VARCHAR(50) NOT NULL,
`EMail` VARCHAR(50) NOT NULL
);
C'est la plus simple des pages : 2 liens hypertextes tout bêtes vers l'ajout d'un nouveau client, ou l'affichage des clients existants.
<html>
<head>
<title>Menu principal</title>
</head>
<body>
<h1>Faites votre choix</h1>
<p>
<a href="ajouternouveau.htm">Ajouter
une nouvelle personne</a><br>
<a href="visualisation.php" >Voir
les enregistrements </a>
</p>
</body>
</html>
Cliquez ici pour aller directement sur menu.htm
J'ai appelé les champs EDIxxx (j'ai donc ajouté EDI) pour préciser qu'il s'agit de zones d'EDItion, et pour éviter les confusions avec les champs eux-mêmes.
<html>
<head>
<title>Ajout d'un nouveau client</title>
</head>
<body>
<h1>Entrez les coordonnées de la nouvelle
personne</h1>
<form method="post" action="confirmationajout.php">
Nom : <input
type="text" name ="EDINomClient" >
<br>
Prénom : <input
type="text" name ="EDIPrenom" >
<br>
E-Mail : <input
type="text" name ="EDIEMail" > <br>
<input
type="submit" value = "Ajoutez moi" >
</form>
</body>
</html>
Comme cette page est appelée depuis le bouton SUBMIT de la page ajouternouveau.htm, nous disposons dès lors de 3 variables : EDINomClient, EDIPrenom et EDIEMail, qui vont pouvoir être directement exploitables dans PHP en ajoutant un $ devant.
Nous pourrions simplement écrire :
echo $EDIPrenom , " " , $EDINomClient
, " (" , $EDIEMail , ") a
bien été ajouté";
Mais bien sûr, ce qui est intéressant, ce n'est pas de l'afficher,
mais bien de l'ajouter dans la table :
<body>
<?
// Ouverture de la connexion :
$Connexion = mysql_connect("localhost",
"info3000", "MonMotDePasse");
// Ouverture de la base de données :
mysql_select_db("info3000" , $Connexion);
// Ligne SQL d'entrée des données du formulaire
de la page d'avant (ajouternouveau.htm)
mysql_query("INSERT INTO
ZZ_CarnetAdresse VALUES('$EDINomClient' , '$EDIPrenom' , '$EDIEMail');");
// Fermeture de la connexion
mysql_close();
// Message de confirmation de l'ajout :
echo $EDIPrenom , " " , $EDINomClient , "
(" , $EDIEMail , ") a été ajouté";
?>
<p>
<a href="menu.htm">Retourner au menu</a>
</p>
</body>
Ce code va fonctionner, et la base de données info3000 va bien être trouvée, même si cette page confirmationajout.php est dans un sous-sous-sous dossier de www.info-3000.com
Attention : Si on essaie d'écrire
dans la table des variables qui sont accidentellement vides, aucune erreur ne
surgira, mais aucune ligne ne sera ajoutée dans la table, même
pas des lignes vides. Je dis ça parce que je me suis trompé, j'ai
écrit :
mysql_query("INSERT INTO ZZ_CarnetAdresse VALUES($EDINomClient ,
$EDIPrenom , $EDIEMail);");
au lieu de
mysql_query("INSERT
INTO ZZ_CarnetAdresse VALUES('$EDINomClient'
, '$EDIPrenom' , '$EDIEMail');");
Et je n'ai pas eu d'erreur, mais rien n'a été rajouté dans la base de données. Il faut donc bien penser à :
Cette page va simplement :
<body>
<?
// Initialisation :
// ==============
mysql_connect("localhost",
"info3000", "MonMotDePasse");
mysql_select_db("info3000");
// Comptage des personnes :
$Resultat = mysql_query("SELECT * FROM ZZ_CarnetAdresse;");
$NombrePersonne = mysql_numrows($Resultat);
// Affichage des gens :
// ==================
echo "Voici les " , $NombrePersonne , " personnes
: <BR>";
for ($Compteur=0 ; $Compteur<mysql_numrows($Resultat)
; $Compteur++)
{
$NomClient = mysql_result($Resultat , $Compteur
, "NomClient");
$Prenom = mysql_result($Resultat , $Compteur
, "Prenom");
$EMail = mysql_result($Resultat , $Compteur
, "EMail");
echo $Prenom , " " , $NomClient
, " (" , $EMail , ")<BR>";
}
//
Fin du travail :
// ==============
mysql_close();
?>
<p><a href="menu.htm">Retour au menu</a></p>
</body>
---