problème affichage "value" dans un formulaire php

Eléphanteau du PHP | 22 Messages

16 janv. 2011, 12:14

Bonjour tout le monde,

voilà mon problème :

j'ai un formulaire (form.php) dont certains champs possèdent un value=""


je souhaite que ce "value" disparaisse au profit d'une valeur saisie par l'utilisateur
dans une nouvelle page (validation.php) => jusque là pas de problème MAIS :
si ce champ possédant une valeur n'est pas rempli (dans form.php) alors je ne veux pas
que cette valeur s'affiche dans le champ (dans validation.php).


voilà ce que j'ai actuellement :

form.php
<input type="text" id="form_num_navision" name="numero_navision" value="Sans le prefixe ACH" onfocus="javascript:this.value='' "/>





validation.php
$prefnav = "ACH";
<td align="right" class="cellules">n° commande navision :</td>
<td colspan="4" class="rouge"><?php echo $prefnav . $numero_navision; ?></td>


j'espère avoir été assez clair...

merci de bien vouloir m'aiguiller et à très vite !!

P.S. : je n'ai pas su trouver les mots clés dans Google pour trouver ma réponse.

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

16 janv. 2011, 12:46

En fait, si j'ai bien compris, ton problème vient du fait que si le champ n'est pas rempli, sur ta page de validation apparait quand même le "ACH" que tu rajoutes.

Pour éviter cela il te faut tester la valeur transmise par l'utilisateur avec un simple if() et afficher le résultat en conséquence. Il y a plusieurs façon de faire cela, en voici déjà une :
<?php
$prefnav = "ACH";
...
// en supposant que ton formulaire soit envoyée en post, il suffit de mettre $_GET sinon
if (isSet($_POST['numero_navision']) && $_POST['numero_navision'] != '') // on test si la chaine n'est pas vide
   $numero_navision = $prefnav . $_POST['numero_navision']; // on ajoute le préfixe
else
   $numero_navision = ''; // sinon on laisse la variable vide

// il ne reste plus qu'à afficher le contenu de ta variable qui sera soit vide, soit celle saisie avec le préfixe
?>
<td align="right" class="cellules">n° commande navision :</td>
<td colspan="4" class="rouge"><?php echo $numero_navision; ?></td>
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 22 Messages

16 janv. 2011, 13:15

Merci pour cette réponse rapide :)

je te cite :
"En fait, si j'ai bien compris, ton problème vient du fait que si le champ n'est pas rempli, sur ta page de validation apparait quand même le "ACH" que tu rajoutes."

En fait, c'est pas tout à fait cela: "ACH" doit toujours être affiché dans validation.php suivi des valeurs insérées dans form.php mais dans l'exemple que je cite plus haut si on ne rempli pas le champ
dans form.php s'affiche alors "ACHSans le prefixe ACH" dans validation.php or je ne veux pas que "Sans le prefixe ACH" apparaisse (celui si étant le value par défaut de form.php =>
<input type="text" id="form_num_navision2" name="numero_navision" value="Sans le prefixe ACH" onfocus="javascript:this.value='' "/> ).

voilou....

ViPHP
xTG
ViPHP | 7331 Messages

16 janv. 2011, 14:12

Rajouter à la fin du premier if :
&& $_POST['numero_navision'] != 'Sans le prefixe ACH'
Du fait le champs sera vide quand le formulaire se ré affichera.
Est-cela ?

Eléphanteau du PHP | 22 Messages

16 janv. 2011, 18:52

re... :?

je vais tenter d'être le plus clair possible :

dans mon form.php j'ai un champ de formulaire ou j'indique à l'utilisateur de ne pas préciser le préfixe ACH, et ce de cette manière :

http://pro1.perso.sfr.fr/form.jpg

vous aurez compris que pour mettre le texte "Sans le prefixe ACH" j'ai mis pour valeur initiale value="Sans le prefixe ACH" dans le code de mon formulaire.

Mon souci actuel est que si je valide le formulaire sans avoir précisé ce champ, j'aurai pour résultat, dans validation.php, "ACHSans le prefixe ACH"

http://pro1.perso.sfr.fr/validation.jpg


donc je cherche une commande disant que si numero_navision non rempli alors on affiche rien (pas de value initiale ni le préfixe ACH), sinon si numero_navision precisé alors on affiche ACH558920 (si 558920 a été tapé).


En vous remerciant de nouveau pour vos réponses précédentes mais cela ne répondait pas a mes attentes.

à très vite.

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

16 janv. 2011, 18:57

C'est ce que tu obtiendras en combinant le code que je t'ai donné et la modification proposée par xTG :)

Dans mon code, je testais si l'utilisateur avait laissé le champ vide ou non :
if (isSet($_POST['numero_navision']) && $_POST['numero_navision'] != '')
Si le champ n'est pas vide par défaut, il te suffit de tester si l'utilisateur a laissé la valeur par défaut dans le champ :
if (isSet($_POST['numero_navision']) && $_POST['numero_navision'] != 'Sans le prefixe ACH')


S'il a changé la valeur tu ajoutes le préfixe à la valeur saisie. S'il n'a pas changé la valeur, tu laisses la chaine vide :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 22 Messages

16 janv. 2011, 19:48

Merci beaucoup à vous deux...ça marche !!!! :D

je n'ai pas encore le bon vocabulaire php pour vous expliquer pourquoi cela ne fonctionnait pas jusqu'à maintenant.

en gros j'avais positionné votre code avant:

$numero_navision = htmlentities($_POST['numero_navision']);

et en le mettant après ça marche impec !!

(vous voyez le niveau !!? 8-| )

encore merci !