YBET informatique Rue Albert 1er, 7 6810 Pin - Chiny Route Arlon - Florenville (/fax: 061/32.00.15 |
|
YBET | Forum webmaster | Contact |
1 Introduction - 2. le fonctionnement - 3. Insertion des données
D'abord, c'est quoi un formulaire PHP auto invoquant? Dans un formulaire standard, on affiche le formulaire et on renvoi vers une autre page qui traite les données insérées. En cas d'erreur, le visiteur doit revenir en arrière dans le navigateur (çà commence déjà bien) mais en plus doit tout retaper dès qu'il y a une erreur. En auto invoquant, en cliquant sur le bouton, on revient sur la même page qui fait le contrôle des données et réaffiche le formulaire en cas d'erreur. Ici aussi, en cas d'erreur l'utilisateur doit tout retaper le contenu de tous les champs mais (c'est là l'astuce)
Un formulaire avec gestion d'erreur va lui récupérer les valeurs tapées par l'utilisateur en même temps que la vérification mais aussi les réafficher comme valeur par défaut dans les différents champs et, en plus, afficher le message d'erreur à coté du champ en question. D'autres formes d'affichage des erreurs sont possibles avec une seule variable d'erreur.
Pour les catégories d'annonces (l'exercice de cette formation), on va utiliser 3 champs: nom, description, attachement (dans le réel développement, il y en a beaucoup plus). L'important est de voire comment fonctionnent ces formulaires auto invoquant avec la gestion d'erreur. La partie "formulaire" est obligatoirement en PHP, soit comme ici avec une variable $form qu'on affiche ensuite, soit en HTML avec les variables inclues dans <?php echo variable; ?>
<?php // test d'exécution du sommaire /* la première partie est de définir les message d'erreur (que nous mettons à ce stade comme vides). Elle doivent être obligatoirement reprise en début de fichier pour éviter les messages d'erreur dans le formulaire lors de la première ouverture de la page. dans la vérification des erreurs, nous donnerons une valeur uniquement s'il y a une erreur ... et les différentes variables d'erreur sont affichées dans le formulaire. */ $erreur_nom = ""; $erreur_description = ""; $erreur_attachement = ""; if (isset($_POST['go'])){ // on récupère les données si la variable go existe $nom = $_POST['nom']; $description = $_POST['description']; $attachement = $_POST['attachement']; // vérification des données entrées, modification éventuelles des variables d'erreurs if ($_POST['nom'] == '') { $erreur_nom = "Le nom de la catégorie doit être renseigné<br>"; } elseif ($_POST['description'] == '') { $erreur_description = "Entrez une description<br>"; } elseif ($_POST['image'] == '') { $erreur_attachement = "Entrez un numéro<br>"; } else { $ajout = ""; écho"Entrée des valeurs dans la table"; } } else { // première lecture de la page, on donne une valeur par défaut à chaque champ du formulaire $nom = "Nom de la catégorie"; $description = "Description de la catégorie"; $attachement = "Numéro de la catégorie supérieure, 0 pour une catégorie"; } // Pour chaque champ, on attribue une valeur par défaut et à la suite, la variable d'erreur correspondante $form = "<table> <form METHOD=\"POST\"> <tr><td>Nom de la catégorie</td><td><input type=text name=nom value=\"$nom\" size=\"25\"><br>$erreur_nom</td></tr> <tr><td>Description</td><td><input type=text name=description value=\"$description\" size=\"40\"> $erreur_description</td></tr> <tr><td>Numéro de la catégorie supérieure</td><td><input type=text name=attachement value=\"$attachement\"><br>$erreur_attachement</td></tr> <tr><td><input type=submit name=go value=sauve></td></tr> </form> </table>"; print($form); ?> |
Examinons le fonctionnement de ce code.
A chaque passage, un seul message d'erreur est affiché (le plus haut dans la liste de tests) et chaque champ déjà rempli est aussi affiché. Pour les plus bas, dans l'exemple ci-dessus attachement, une erreur de description n'affichera pas d'erreur d'attachement mais réaffichera quand même la valeur par défaut. Le schéma est finalement:
Mise à Zéro des messages d'erreurs
Condition go
Fin condition: affichage du formulaire |
Remarquez que nous n'avons pas vérifié si le nom et description existent. Je vous laisse le soin de créer les if conditionnels (et les messages d'erreurs associés) en fin de condition en lisant la table via une requete de type:
include ('includes /start.php'); // on ouvre la base de donnée $requete="SELECT * FROM categorie where nom='$nom'"; $valeur=mysql_query($requete); $ligne=mysql_num_rows($valeur); //va renvoyer le nombre de valeur trouvées avec le même nom et ... si $ligne=0 le nom n'est pas encore entré dans la table donc peut-être créé |
Dans les lignes de code ci-dessus, nous avons simplement affiché "Entrer des sonnées" via une commande ECHO. Dans la pratique, on va faire deux chose.
Rien de plus simple pour insérer les données:
include ('includes /start.php'); // on ouvre la base de donnée $requete="INSERT categorie SET nom=\"".$nom.", description=\"".$description." ,attachement=\"".$attachement; |
Reste à renvoyer le visiteur vers une autre page. Plusieurs méthodes sont possibles (y compris par javascritp) mais la plus simple est d'insérer à la suite la commande
die('<meta http-equiv="refresh" content="3; URL=index.php">'); |
Vous pensez que cette partie est bonne? Ben non. Ce qu'il nous manque, c'est les fonctions addslashes pour la réception des données via $_POST et l'inverse pour l'affichage dans le formulaire STRIPSLASHES($variable).
En complément:
>17. Récupérer les données d'une table MySQL dans une liste déroulante |
<15 . Table utilisateurs |
Modification: 22/03/2012, suppression du développement catégories