if(empty... garder un input...

Eléphanteau du PHP | 12 Messages

05 sept. 2011, 19:39

Bonjour.
Je vais simplifier mon problème au maximum

Je dispose de 2 champs de saisie.
je remplie volontairement que le premier champ et je laisse l'autre vide.
en appuyant sur le bouton OK, le script vérifie qu'un champ ne soit pas vide.
Comme c'est le cas, un message m'informe qu'au moins 1 champ est vide par un message.
Et les 2 champs se vident, je dois donc recommencer a tapper le 1er champ alors que je l'avais rempli...
je voudrais donc savoir s'il existe une technique pour que le champ rempli ne se vide pas en cliquant OK

en terme de codage (simplifié et raccourci au maximum pour l'exemple) du fichier test.php (fictif)

Code : Tout sélectionner

<form method="POST"> Nom: <INPUT type="text" name="Nom"></BR> Prénom: <INPUT type="text" name="Prenom"></BR> <input type="submit" value="Envoyer" name="envoyer"> </form> <?PHP if(empty($_POST['Nom']) OR empty($_POST['Prenom'])) { echo 'Au moins un champ a été oublié'; } else { echo $_POST['Nom'].' '.$_POST['Prenom']; } ?>
je remercie à l'avance vos réponses ;)
Modifié en dernier par mrgreth le 05 sept. 2011, 22:36, modifié 2 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 sept. 2011, 21:04

Lorsque tu affiches ton champ, si une valeur a été envoyée via le formulaire, il faut la passer dans l'attribut value="" de ton champ pour que celle-ci soit pré-renseignée par défaut :
<INPUT type="text" name="Nom" value="<?php if (isSet($_POST['Nom'])) echo $_POST['Nom']; ?>">

Ps : "</BR>" n'existe pas. C'est <br> en html ou <br /> en xhtml
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 12 Messages

05 sept. 2011, 21:24

merci Ryle
j'avais deja vu l'équivalent sur des checkbox, mais j'arrivais pas a comprendre assez le fonctionnement pour faire le transfert sur un input
ca fonctionne niquel
problème résolu :D

Eléphanteau du PHP | 12 Messages

05 sept. 2011, 22:36

j'ai testé un peu vite, le problème est juste inversé maintenant...

quand je n'ai qu'un champ de rempli et que je valide... ok, le champ rempli garde ce que j'avais rentré... ca c'est résolu
par contre
quand tous les champs sont rempli et que je valide, j'aurais aimé que les champs se vident...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

05 sept. 2011, 23:52

salut,

lors de la validation du formulaire (avant l'affichage du formulaire) si tout est bon tu peux faire un $_POST = array(); pour le "vider" tu n'aura plus de problème ;)


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 12 Messages

06 sept. 2011, 00:00

désolé moogli, je ne comprends pas ou placer $_post=array();

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

06 sept. 2011, 00:03

if ( condition pour valider le formulaire) {
validation
complète du
formulaire
$_POST = array();
}

Attention c'est $_POST et pas $_post ;)

tu pourrais aussi faire un unset($_POST) :)


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 12 Messages

06 sept. 2011, 15:17

en faisant

Code : Tout sélectionner

<?PHP if(empty($_POST['Nom']) OR empty($_POST['Prenom'])) { echo 'Au moins un champ a été oublié'; } else { echo $_POST['Nom'].' '.$_POST['Prenom']; $_POST = array(); } ?>
je ne vois aucune différence :/

Mammouth du PHP | 672 Messages

06 sept. 2011, 15:29

C'est parce que tu vides ton $_POST après avoir rempli les champs #-o

Commence par tester le POST, vérifier si tous les champs sont remplis etc.
Ensuite, construis ton formulaire.