8791 sujets

Développement web côté serveur, CMS

Bonjour,

voilà j'ai essayé de monter un petit système dynamique autour d'un formulaire, mais j'aurais besoin de votre aide pour un petit détail, je vous explique...

J'ai mis en place sur mon site une "page A" qui contient un include "Formulaire", c'est à dire avec un formulaire dedans.

Quand on valide ce formulaire, on tombe sur une "page B" qui transforme toutes les variables dans une session. Ensuite, cette "page B" vérifie si les données sont correctes. Si c'est le cas, la "page B" affiche un include "Ok" pour garantir que tout est ok, et si ce n'est pas le cas elle affiche l'include "Formulaire", pour inviter le visiteur à re-saisir ses données.

Et c'est à ce moment là que ça bloque, quand l'utilisateur a fait une erreur dans un des champs, il est invité à re-saisir le formulaire... Mais du coup, le formulaire perd toutes ces données (normal, puisque c'est un nouvel include) et ça devient assez chiant de tout ré-écrire alors que tout était bon sauf 1 champ.

C'est pour ça que j'ai intégré à chaque champ du formulaire la valeur :

<input ... value="[b]<? echo $_SESSION['variable'] ?>[/b]" />


Pour les champs input, aucun problème, ça marche ! Mais pour les liste déroulantes, je ne sais pas comment faire ? J'ai testé ceci, mais ça ne marche pas :

<select style="width:130px;" name="civilite" id="civilite" size="1">
      <option value="" [b]<? if( $_SESSION['civilite'] = '') { echo 'selected="selected"' ; } else { } ?>[/b]>Civilité</option>
      <option value="Monsieur" [b]<? if( $_SESSION['civilite'] = 'Monsieur') { echo 'selected="selected"' ; } else { } ?>[/b]>Monsieur</option>
      <option value="Madame" [b]<? if( $_SESSION['civilite'] = 'Madame') { echo 'selected="selected"' ; } else { } ?>[/b]>Madame</option>
      <option value="Mademoiselle" [b]<? if( $_SESSION['civilite'] = 'Mademoiselle') { echo 'selected="selected"' ; } else { } ?>[/b]>Mademoiselle</option>
</select>


Est-ce que quelqu'un pourrait m'aider sur ce point ?? Je ne sais pas où je fais une erreur dans le if ou dans l'interprétation de cette liste défilante ? Smiley rolleyes Merci beaucoup !

Cordialement,
Modifié par termi (18 Aug 2008 - 22:12)
Salut,

ne pas confondre '=' qui est une affectation, et '==' qui est un test. Si tu regardes le code HTML généré, toutes les options devraient êtres sélectionnées, pour le moment Smiley cligne

Sinon, tu peux raccourcir la syntaxe, ce sera moins fastidieux à coder:
<?php if ($_SESSION['variable'] [b]==[/b] 'Monsieur') echo 'selected="selected"' ?>

De plus, si tu fais un include du formulaire A sans quitter la page B, tu as toujours les données dans $_POST, tu n'as pas vraiment besoin de $_SESSION.
<?php if ($_POST['variable'] == 'Monsieur') echo 'selected="selected"' ?>
Salut,

désolé, mais je vais faire court je suis sur un tablet pc et c'est pas super pratique.


<?php
$select= ' selected="selected" ';
?>
<select style="width:130px;" name="civilite" id="civilite" size="1">
      <option value=""<?php if(!$_SESSION['civilite']) { echo $select; } ?>>Civilité</option>
      <option value="Monsieur"<?php if($_SESSION['civilite'] == 'Monsieur') { echo $select; } ?>>Monsieur</option>
      <option value="Madame"<?php if($_SESSION['civilite'] == 'Madame') { echo $select; } ?>>Madame</option>
      <option value="Mademoiselle"<?php if($_SESSION['civilite'] == 'Mademoiselle') { echo $select; } ?>>Mademoiselle</option>
</select>


copies et colles directement ce code ca devrait fonctionner.

j'ai crée une variable $select en debut de code qui evite de tout reecrire a chaque fois
D'accord ! C'était donc du au ==... Smiley biggrin

Merci beaucoup à vous 2, ça fonctionne désormais ! Smiley ravi
Excuses-moi, à chaque fois j'oublies de changer le titre ! Oui ce sujet est résolu... Merci encore ! Smiley cligne
termi a écrit :
Excuses-moi, à chaque fois j'oublies de changer le titre !
Oui ! Je m'étais fait la réflexion ! Smiley ravi