[PHP] Récupération d'un formulaires - pb avec espaces

Récupération d'un formulaires - pb avec espaces [PHP] - PHP - Programmation

Marsh Posté le 26-06-2003 à 10:30:29    

Je suis en train de faire un truc tout con pour récuperer les valeurs d'un form...
 
Quand un champ obligatoire est pas rempli, il annonce dans une deuxieme page via empty() que tel ou tel champ n'est pas rempli, champ par champ, et si l'un des champs oblig. n'est pas rempli il recolle le formulaire en dessous, avec dans les champs les valeurs déja remplies précédemment, pour éviter d'avoir à les resaisir. Seuls les endroits ou c'etait pas rempli restent vides donc.
 
La problème que j'ai, c'est que certains de mes champs peuvent comporter des expressions à espaces, et si un autre champ n'est pas rempli et que le formulaire se raffiche, seul le premier mot de l'expression est réaffiché, tout ce qui est apres l'espace "saute" et donc le formulaire m'envoie des données incomplètes.
 
Comment faire ?

Reply

Marsh Posté le 26-06-2003 à 10:30:29   

Reply

Marsh Posté le 26-06-2003 à 10:48:54    

tu dois avoir une erreur dans ton html, montres nous le code qui réaffiche le formulaire.

Reply

Marsh Posté le 26-06-2003 à 11:54:45    

donc le formulaire est envoyé en POST a une autre page, à partir de la un if pour verifier si l'un des champs obligatoire est vide, et si tout est rempli, voila un bout du formulaire qui est redonné
 
<TD ALIGN=LEFT VALIGN=MIDDLE><INPUT TYPE=text NAME=artistemp3 SIZE=40 class=liste value=$artistemp3>
 
je lui redonne la valeur entrée lors de la premiere saisie via le value=$var
 
ca marche nickel kan il y a pas d'espace possible, mais la c'est censé etre un artiste et un titre de musique, donc il y a souvent des espaces...

Reply

Marsh Posté le 26-06-2003 à 12:10:20    

tadzoa a écrit :

donc le formulaire est envoyé en POST a une autre page, à partir de la un if pour verifier si l'un des champs obligatoire est vide, et si tout est rempli, voila un bout du formulaire qui est redonné
 
<TD ALIGN=LEFT VALIGN=MIDDLE><INPUT TYPE=text NAME=artistemp3 SIZE=40 class=liste value=$artistemp3>
 
je lui redonne la valeur entrée lors de la premiere saisie via le value=$var
 
ca marche nickel kan il y a pas d'espace possible, mais la c'est censé etre un artiste et un titre de musique, donc il y a souvent des espaces...


 
en perl je fais ca, je fais un if sur la chaine en remplacant les " " par "". Si la chaine n'a aucun caractère apres ca, soit "", bin je réaffiche le formulaire avec les données


---------------
http://www.boincstats.com/signature/user_664861.gif
Reply

Marsh Posté le 26-06-2003 à 13:12:24    

tadzoa a écrit :

donc le formulaire est envoyé en POST a une autre page, à partir de la un if pour verifier si l'un des champs obligatoire est vide, et si tout est rempli, voila un bout du formulaire qui est redonné
 
<TD ALIGN=LEFT VALIGN=MIDDLE><INPUT TYPE=text NAME=artistemp3 SIZE=40 class=liste value=$artistemp3>
 
je lui redonne la valeur entrée lors de la premiere saisie via le value=$var
 
ca marche nickel kan il y a pas d'espace possible, mais la c'est censé etre un artiste et un titre de musique, donc il y a souvent des espaces...


 
 
echo '<TD ALIGN="LEFT" VALIGN="MIDDLE"><INPUT TYPE="text" NAME="artistemp3" SIZE="40" class="liste" value="' . $artistemp3 . '" />';
 
ca marchera tout de suite mieux :)

Reply

Marsh Posté le 26-06-2003 à 13:16:45    

Code :
  1. <TD ALIGN=LEFT VALIGN=MIDDLE><INPUT TYPE='text' NAME='artistemp3' SIZE='40' class='liste' value='<?=$artistemp3?>'>


 
ça sera mieux comme ça ;)


Message édité par dropsy le 26-06-2003 à 13:17:37
Reply

Marsh Posté le 26-06-2003 à 14:06:48    

si j'ai jarté les " c'est paske c'est dans un echo()
 
en fait j'ai un peu changé la syntaxe pour simplifier..
 
Sur la deuxieme page (apres premier envoi de formulaire), pour chaque champ, il vérifié s'il est vide.
 
Si le champ est vide, il remet le INPUT pour pouvoir entrer de nouveau ce qu'on a oublié
 
Si le champ est renseigné, il affiche le résultat, et j'utilise un INPUT HIDDEN pour que la variable soit envoyée lors de la validation du formulaire pour la deuxieme fois.
 
Donc en gros ca donne ca :  
 
 <TR>
      <TD ALIGN=RIGHT VALIGN=MIDDLE class=resultg>Artiste :&nbsp;</TD>
       
<? if(empty($artistemp3))  
{  
echo("<TD ALIGN=LEFT VALIGN=MIDDLE><INPUT TYPE=text NAME=artistemp3 SIZE=40 class=liste></td>" );  
}  
else  
{  
echo("<td class=resultd>$artistemp3<INPUT TYPE=hidden NAME=artistemp3 VALUE=$artistemp3></td>" );  
} ?>
     
</TR>
 
Ca ne change toujours rien, il manque toujours ce qui est apres l'espace, une fois le formulaire envoyé.
 
J'essaie le  
value=' . $artistemp3 . '
et je vous tiens au courant

Reply

Marsh Posté le 26-06-2003 à 14:09:37    

tu le fais expres ?
 
pour que les espaces soient traités, dans ton HTML, tu dois avoir
 
<input type="type" name="nom" value="toto">
 
en gros, tu dois mettre des GUILLEMETS autour des parametres des champs...
 
 
echo '<input type="type" name="nom" value="' . $toto . '">';

Reply

Marsh Posté le 26-06-2003 à 17:46:56    

sinon, il te suffit d'échapper les " par un \
 
par exemple :

Code :
  1. echo "<input type=\"text\" name=\"name\" value=\"".$val."\" />";


Message édité par xkamui le 26-06-2003 à 17:47:07
Reply

Marsh Posté le 26-06-2003 à 18:07:29    

a mon avis c pas tellement tout c la le probleme...
 
faut que tu fasse un htmlentities(urlencode($tavar)) pour les champs du formulaire... et pour le récupérer tu fais un urldecode($tavar)  
 
le htmlentities est pas obligatoire ... mais bon il est préférable de le mettre...

Reply

Marsh Posté le 26-06-2003 à 18:07:29   

Reply

Marsh Posté le 26-06-2003 à 22:45:09    

:non: passe bien ton formulaire en méthode POST et fais
 

Code :
  1. echo '<TD ALIGN="LEFT" VALIGN="MIDDLE"><INPUT TYPE="text" NAME="artistemp3" SIZE="40" class="liste" value="'.htmlentities($artistemp3).'">';

 
Après pense aussi à mettre tes paramètres html en minuscules.


Message édité par belgique le 26-06-2003 à 22:46:24
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed