Bonsoir, donc en faite j'ai mon select qui ressemble a ceci:

$query = "SELECT id, categorie, nom FROM joueurs ORDER BY FIELD(categorie,'Benjamins','Minimes', 'Cadets'), nom";

$categ = "";

echo '<select class="form-control" name="nom1" id="nom1">';
echo "<option value='nom1'>--Nom--</option>";
foreach($pdo->query($query) as $row) {
if ($categ != $row->categorie) {
// rupture de categorie
if ($categ !== "") {  // s'il y avait un groupe ouvert, on le ferme
echo "</optgroup>";
}
echo "<optgroup label='" . $row->categorie . "'>";
$categ = $row->categorie;
}
if(isset($_POST['submit1'])){
echo "<option value='" . $_POST['nom1'] . " selected'>" . $_POST['nom1'] . "</option>";
}else{
echo "<option value='" . $row->nom . "'>" . $row->nom . "</option>";
}
}
echo "</optgroup>";
echo "</select>";

Et en faite j'aimerais bien que après mon submit si il y a une erreur sa valeur reste selectionner, mais ca ne marche pas vraiment avec mon petit if, si quelqu'un a une meilleur idée...
Mercid 'avance

3 réponses


connected
Réponse acceptée

Bonjour,

tu dois passer par des variables de session. En gros dans le traitement de ton formulaire :

  • tu stockes tes variables $_POST dans $_SESSION['_post'], ce n'est qu'un exemple (veille à ne pas stocker les mots de passe...)
  • tu fais ton traitement classique avec vérification des données
  • sur ton form tu peux utiliser $_SESSION['_post']['nom1] pour retouver la valeur
  • si tout est ok, une fois qu'il n'y a plus d'erreur tu fais un unset de $_SESSION['_post']

Voilà, bon courage.

pege
Auteur

Ben tu ne vois pas que j'ai essaye avec le :

if(isset($_POST['submit1'])){
echo "<option value='" . $_POST['nom1'] . " selected'>" . $_POST['nom1'] . "</option>";
}else{
echo "<option value='" . $row->nom . "'>" . $row->nom . "</option>";
}

Mais bon merci

Salut,

Il me semble t'avoir déjà aidé sur le même bout de code il y a quelque semaines.
De plus, je t'invite à faire quelques recherches sur Google, ton problème est simple à résoudre dans l'absolue.

PS @Gynidark +1