pfff, je crois que je n'y comprends vraiment rien au php !!!!
je te redonne mes codes sans les simplifications, j'ai un body etc etc mais je n'avais pas tout noté pour ne pas allourdir le code.
mon session_start est bien en début de page.en tout premier.
Quand je fais une liste déroulante "à la main" sans faire de boucle, j'arrive à garder en mémoire la valeur sélectionnée par le visiteur, mais dès que je veux passer par la boucle, c'est un grand moment de solitude pour moi!!!!
voici à nouveau le code pour que tu y voies plus clair:
page testforma.php qui contient le formulaire:
<?php
session_start();
?>
<section>
<h2>Nouveau ?</h2>
<form id="inscription" method="post" action="testformb.php">
<fieldset id="form1">
<legend>Inscription :</legend>
<label for="pseudo">Nom d'utilisateur:</label>
<input type="text" name="pseudo" id="pseudo" value="<?php if (isset($_SESSION['form']['pseudo']) AND !empty($_SESSION['form']['pseudo'])) echo $_SESSION['form']['pseudo']; ?>"/>
<br />
<?php
if (isset($_SESSION['erreur']['pseudo']) AND !empty($_SESSION['erreur']['pseudo'])) echo $_SESSION['erreur']['pseudo'];
?>
</fieldset>
<fieldset id="form2">
<!--date naissance-->
<p>Votre date de naissance:</p>
<select name="jnaissance" id ="jnaissance">
<?php
$_POST['jnaissance']=$_SESSION['form']['jnaissance'];
for ($i=1;$i<=31;$i++)
{
if ($i==$_POST['jnaissance']) echo '<option value="'.$i.'" selected="selected">'.$i.'</option>';
else echo '<option value="'.$i.'">'.$i.'</option>';
}
?>
</select>
<p class="envoyer">
<input type="submit" value="Envoyer" title="Envoyer"/>
</p>
</fieldset>
</form>
</section>
et voici la page de traitement testformb.php
<?php
session_start();
$_SESSION['erreur']='';
$_SESSION['form']='';
?>
<?php
echo '<pre>';
print_r($_POST);
echo '</pre>';
?>
<?php //si pseudo mauvais
if (empty($_POST['pseudo']) or strlen($_POST['pseudo'])>15 or strlen($_POST['pseudo'])<=3)
{
$_SESSION['erreur']['pseudo']='<p class="erreur">Merci de renseigner un pseudo comportant moins de 15 caractères.</p>';
}
else
{
$_SESSION['form']['pseudo']=htmlspecialchars($_POST['pseudo']);
}
//si date naisssance sélectionner, la garder en mémoire
if (isset($_post['jnaissance']) and !empty ($_POST['jnaissance']))
{
$_SESSION['form']['jnaissance']=$_POST['jnaissance'];
}
//si aucune erreur
if(empty($_SESSION['erreur']))
{
$bienvenue1='<p class="pas_erreur">Bienvenue '.$_POST['pseudo'].'. Votre inscription est maintenant effective. Vous pourrez accéder au forum, laisser des commentaires et poster vos séances.<br /> Vérifiez vos entrées ci-dessous:</p>';
//on vide variables de session
$_SESSION['erreur']='';$_SESSION['form']='';
}
else
{
header('location:testforma.php');
exit();
}
?>
<p class="envoyer">
<a href="testforma.php"><input type="submit" value="Recommencer" title="retour inscription"/></a>
</p>
voilou! avec toutes les boulettes qu'il comporte!
j'ai laissé le champ pseudo, car dans mes tests, il me permet de mettre cette valeur comme fausse et donc me retourne le formulaire.