PHP - Problème de réinitialisation de formulaire

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

Hankroyd
Nouveau WRInaute
 
Messages: 11
Inscription: Mer Déc 10, 2008 9:51

PHP - Problème de réinitialisation de formulaire

Message le Ven Jan 09, 2009 13:58

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: Tout sélectionner
<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: Tout sélectionner
<?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: Tout sélectionner
$_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.


LiFi
WRInaute passionné
WRInaute passionné
 
Messages: 609
Inscription: Lun Juil 14, 2008 2:24

Message le Ven Jan 09, 2009 14:11

comment ça "Malheureusement, php n'accepte pas" ?
Il te donne une erreur?


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3062
Inscription: Jeu Sep 14, 2006 4:53

Message le Ven Jan 09, 2009 14:15

Autrement tu fais une fonction à laquelle tu passes $validation et la chaine concernée:

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


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


Et voila

Hankroyd
Nouveau WRInaute
 
Messages: 11
Inscription: Mer Déc 10, 2008 9:51

Message le Ven Jan 09, 2009 14:24

Merci beaucoup,

Cela devrait me simplifier la vie.

Je vais tester cela de suite.

Encore merci.


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3062
Inscription: Jeu Sep 14, 2006 4:53

Message le Ven Jan 09, 2009 14:25

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:

Hankroyd
Nouveau WRInaute
 
Messages: 11
Inscription: Mer Déc 10, 2008 9:51

Message le Ven Jan 09, 2009 14:42

YoyoS a écrit: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: Tout sélectionner
<td><input type="text" name="nom_contact" size="50" value="<?php if ($validation ==0) echo $_POST['nom_contact']; else echo ""; ?>"/></td></tr>



Encore merci.


Bacteries
WRInaute accro
WRInaute accro
 
Messages: 1333
Inscription: Jeu Mai 27, 2004 13:04

Message le Ven Jan 09, 2009 14:43

le return $valid ? "" : $chaine; c'est ton if then else en version condensée.
Pratique pour ce genre de trucs simple.


LiFi
WRInaute passionné
WRInaute passionné
 
Messages: 609
Inscription: Lun Juil 14, 2008 2:24

Message le Ven Jan 09, 2009 14:46

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: Tout sélectionner
<td><input type="text" name="nom_contact" size="50" value="<?php echo ($validation ==0) ? $_POST['nom_contact'] : ""; ?>"/></td></tr>


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 5227
Inscription: Mer Nov 23, 2005 10:38

Message le Ven Jan 09, 2009 18:16

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).


YoyoS
WRInaute accro
WRInaute accro
 
Messages: 3062
Inscription: Jeu Sep 14, 2006 4:53

Message le Ven Jan 09, 2009 19:26

Oue c'est le summum de travailler avec des classes ;)


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: bee_human et 0 invités