Bonjour, ma question est simple. Je suis sur une page HTML, j'ai un formulaire, je le rempli, je valide, ça m'envoies sur une page de traitement php qui traite tout ça et si c'est ok j'arrive sur une page "ok" par contre s'il ya une erreur lors du traitement des données du formulaire j'aimerais que l'utilisateur se retrouve sur une page qui lui indique qu'il ya eu une erreur et que les infos n'ont pu être enregistrées, avec un bouton qui lui permette d'essayer de renvoyer son formulaire sans avoir à tout retapper...
vous voyez ce que je veux dire?
En cas d'erreur, tu inclues la page de ton formulaire. Pour chaque élément du formulaire, tu récupères la valeur passée via GET ou POST et tu la ré-insère.

C'est un peu artisanal, il y a peut-être plus efficace. Mais, globalement, ça marche.
bah en fait j'ai un index ou ya mon formulaire en gros ça fait:

index.html -> traitements.php -> ok.php ou erreur.php

dans traitements.php j'ai tous les champs dans un array
tu crois que jpeux includer mon index.html dans erreur.php? je pense qu'il faudrait que j'include le traitement.php, mais direct il va relancer un traitement jpense que ça risque de tout faire planter
il faut que ton formulaire pointe sur lui meme. en bref tu ne met aucune adresse dans action.
Ensuite il faut penser à sécuriser un peu. toutes les valeurs de ton formulaire doivent etre passé à la moulinette de "escapeshellarg()"

ainsi quand quelqu'un tape :
"?>coucou<?php"
ta page ne change pas.

Tu fait tes tests.
si erreur tu met dans chaque input type texte tes varialbes dans l'attribut value.
sinon tu une redirection vers la bonne page grace à header ("Location: ok.htm");

tu peux aussi rajouter en meme temps un input cache (hidden) avec valeur true. que tu teste au lancement de ta page. Si la valeur de se champ est a true cela signifie que l'utilisateur a validé ton formulaire sinon pas de tests.
Modifié par masseuro (19 Sep 2006 - 17:47)
Administrateur
Bonjour,

tu peux réunir ces 4 "pages" effectuant chacune une fonction en 1 seule qui effectue les 4 fonctions (mais pas en même temps, au cas par cas!)

Si rien de validé, afficher_formulaire(aucun paramètre);
Si qqch de validé, verifier_donnees();
Si OK, ok
Si pas OK, afficher_messages_erreur(); afficher_formulaire(avec bonnes données);

l'action du formulaire ne sera plus traitement.php mais elle-même (cette unique page)

EDIT: 1s Smiley sumo
Modifié par Felipe (19 Sep 2006 - 17:45)
ouai pour le faire en 1 seul fichier c'est pas mal mais la je voulais bien séparer l'html du php, comme ça j'ai une page html qui contioent le formulaire en full css et toute propre

par contre escapeshellarg j'ai regardé sur manuel php j'ai rien capté
r4z a écrit :
mais la je voulais bien séparer l'html du php, comme ça j'ai une page html qui contioent le formulaire en full css et toute propre

Le php est un langage serveur qui est interprêté en amont, avant même que la page soit envoyée à la machine cliente. Sans l'extension *.php, tu ne peux pas savoir si un fichier contient du php ou pas. Smiley confused
La machine cliente ne fait aucune différence entre un code HTML brut et un code HTML généré via une fonction php. Dans tous les cas, le navigateur de la machine client ne verra qu'un code HTML "tout propre". Smiley murf
Modifié par Cygnus (23 Sep 2006 - 00:49)
Cygnus a écrit :

Le php est un langage serveur qui est interprêté en amont, avant même que la page soit envoyée à la machine cliente. Sans l'extension *.php, tu ne peux pas savoir si un fichier contient du php ou pas. Smiley confused
La machine cliente ne fait aucune différence entre un code HTML brut et un code HTML généré via une fonction php. Dans tous les cas, le navigateur de la machine client ne verra qu'un code HTML "tout propre". Smiley murf


lol je sais bien, c'est juste pour me facilité la lisibilité de mon code, et mieux l'organiser
Administrateur
Tu peux inclure (avec require ou include) une fonction qui affichera ce formulaire. Et en paramètre optionnel, tu peux avoir un tableau rempli des données erronées saisies précédemment par le visiteur ((ou pas si c'est son 1er appel à cette page).
Ca sépare visuellement la partie HTML de la partie traitement Smiley smile