PHP - Problème de réinitialisation de formulaire

Nouveau WRInaute
Bonjour, j'ai le problème suivant :

J'invite un utilisateur à entrer des information dans un formulaire.

Lorsque l'utilisateur envoie le formulaire, le php vérifie qu'il est bien rempli.
Si ce n'est pas le cas, le formulaire est réafficher en faisant en sorte que les lignes déjà rempli le reste.
Pour cela j'utilise ceci dans une feuille 'formu.php':
Code:
<form action="index.php?cat=renseignements" method="post">
<table><tr><td>Nom: </td>
	<td><input type="text" name="nom_contact" size="50" value="<?php echo $_POST['nom_contact'] ?>"/></td></tr>
               <tr><td colspan="2" align="center"><input type="submit" value="Envoyer" name="connexion"></td></tr></table>
</form>

Maintenant, lorsque le formulaire est envoyé correctement, je voudrais qu'il se reinitialise.

Pour cela j'ai defini une variable $validation (à 0 quand le formulaire n'est pas envoyé et à 1) lorsqu'il l'est correctement et j'ai taper ceci :

Code:
<?php
                $validation = 0;
	if ($_REQUEST['connexion']) {
                           if (testnom($_POST['nom_contact']) == 1) /* On teste que le nom est valide
                                     $validation = envoie();
/* Si il est valide, la fonction 'envoie' dans la bdd et retourne la valeur 1*/
                           else
                                     echo "Veuillez corriger le nom.";
                }

                if ($validation == 1)
                           $_POST['nom_contact'] = "";
/* on efface les données entrée car elles ont été envoyés */

                include ('formu.php');
?>

Malheureusement, php n'accepte pas le
Code:
$_POST['nom_contact'] = "";
(cela aurait été trop simple ...)

Si quelqu'un a une idée de comment résoudre ce problème-ci, pour que le formulaire fonctionne comme je le souhaite, je suis preneur.


D'avance merci pour vos réponses.
 
WRInaute accro
Autrement tu fais une fonction à laquelle tu passes $validation et la chaine concernée:

Code:
<td><input type="text" name="nom_contact" size="50" value="<?php echo resetVar($_POST['nom_contact'],$validation); ?>"/></td></tr>

Code:
function resetVar($chaine,$valid = true)
{
    return $valid ? "" : $chaine;
}

Et voila
 
WRInaute accro
bah c'est normal que tu ne la connaissais pas. Je viens de la créer :D Tu peux remplacer par le nom que tu veux je te rassure :mrgreen:
 
Nouveau WRInaute
YoyoS a dit:
bah c'est normal que tu ne la connaissais pas. Je viens de la créer :D Tu peux remplacer par le nom que tu veux je te rassure :mrgreen:

Oui, je m'en suis appercu après avoir posté ... d'ou un petit edit discret de ma par juste après :wink: .

Par contre j'avoue ne pas avoir beaucoup compris le 'Return' (enfin ce qu'il y a derrière) mais je me suis fait une version plus simple sans fonction. (C'est pour un projet dans le cadre d'un formation et je n'ai pas trop envie d'avoir l'air bête si on me demande d'expliquer ta fonction.)

Code:
<td><input type="text" name="nom_contact" size="50" value="<?php if ($validation ==0) echo $_POST['nom_contact']; else echo ""; ?>"/></td></tr>


Encore merci.
 
WRInaute passionné
le return $valid ? "" : $chaine; c'est ton if then else en version condensée.
Pratique pour ce genre de trucs simple.
 
WRInaute occasionnel
C'est pour écrire un if else plus rapidement :

echo (condition) ? (si la condition est TRUE alors ça) : (sinon ça)

donc echo (1==1) ? "oui" : "non";
affichera oui car la condition est TRUE
et echo (1==2) ? "oui" : "non";
affichera non car la condition est FALSE

par exemple ton code peut s'écrire :
Code:
<td><input type="text" name="nom_contact" size="50" value="<?php echo ($validation ==0) ? $_POST['nom_contact'] : ""; ?>"/></td></tr>
 
WRInaute accro
Généralement , j'ai une classe de traitement de formulaire (avec validation suivant des types prédéfinis, etc) qui me génère pour ma page les variable correspondantes aux champs (genre si j'ai un champ nom, après submit j'ai une variable $nom), ce qui permet de réinitialiser simplement les valeurs du formulaires (je ne fais jamais d'accès à $_POST directement).
 
Discussions similaires
Haut