Conserver sélection d'un menu déroulant après une soumission

Signaler
-
jordane45
Messages postés
27542
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 février 2020
-
Bonjour,

Comme le titre l'indique je cherche à savoir comment conserver la sélection d'un menu déroulant après une soumission. Je sais comment faire, il sufit de faire comme suit :
<?php 
	$selected = isset( $_POST['prenom'] ) ? $_POST['prenom'] : "" ;
	$selectedValue = 'selected="selected"';
?>

<form method="post" >
	<select name="prenom">
		<option value="Jean" <?php if( $selected == "Jean" ) echo $selectedValue ?>>Jean</option>
		<option value="Bob" <?php if( $selected == "Bob" ) echo $selectedValue ?>>Bob</option>
		<option value="Marie" <?php if( $selected == "Marie" ) echo $selectedValue ?>>Marie</option>
		<option value="Charlotte" <?php if( $selected == "Charlotte" ) echo $selectedValue ?>>Charlotte</option>
	</select>
	<br/>
	<input type="submit" value="Envoyer"/>
</form>

Cependant je cherche à le faire via une base de données MySQL. Donc au lieu de remplir à la main les value une boucle le fait.
Mon code est le suivant il fonctionne sans la conservation de la sélection de mon menu déroulant après une soumission.
Voici mon code :
	// Connexion à ma BDD
	$bdd = new PDO('mysql:host=***;dbname=***;charset=utf8', '***', '***', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
	// Récupération et affichage de données de ma base
	$info = $bdd->prepare('SELECT id, message FROM table');
	$info->execute();
	while ($donnees = $info->fetch())
	{
		echo '<div style="border:1px solid black; margin:10px; padding:5px;">';
		echo "<table><tr><td>";
		echo $donnees['id'];
		echo "</td><td>";
		echo $donnees['message'];
		echo "</td></tr></table>";
		echo '</div>';					
	}
	// Création du menu déroulant 
	echo "<select name='Liste'>
	<option>Choisir</option>";
	$num = $bdd->query("SELECT id FROM table");
	while ($id = $num->fetch())
	{
		echo "<option value='.$id[id].'>".$id['id']."</option>";
	}  
	echo "</select>";
	<input type="submit" name="Modifier">
f(isset($_POST['Modifier']))
{
	$nume = $_POST['Liste'];
	// Affiche ce que j'ai selectionné dans le menu déroulante
	echo $nume;
}

// Création d'une zone de texte affichant une donnée de ma base
<textarea name='edit'>
	<?php echo $message;?>
</textarea>
// Second bouton submit
<input name='Enregistrer' type='submit' value='Enregistrer'>
<?php
// Lorsque j'appui sur le second bouton je voudrais afficher le message de ma textarea (c'est ok) et le numéro selectionné dans mon menu déroulent (ce que je cherche à faire) 
if(isset($_POST['Enregistrer']))
{
	$newMessage = $_POST['edit'];
	echo $newMessage;
	echo $nume;

Merci par avance de votre aide

3 réponses

Bonjour,

Pourrais-tu me dire comment comment faire je ne connait pas beaucoup AJAX ni JSON
Le PHP me le permet pas ?

Cordialement
Messages postés
27542
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 février 2020
2 098
Bonjour,

$selected = !empty( $_POST['prenom'] ) ? $_POST['prenom'] : "" ;

// ...



while ($id = $num->fetch()) {
    $selectedValue = $id['id'] ==  $selected  ? 'selected="selected"' : "" ;
    echo "<option value='".$id['id']."' " . $selectedValue  . ">".$id['id']."</option>";
} 


Cordialement,
Jordane
jordane45
Messages postés
27542
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
14 février 2020
2 098
Au passage, je t'invite également à lire ET à appliquer les conseils donnés dans les liens suivants :
http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

et http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
Messages postés
2019
Date d'inscription
mercredi 21 août 2002
Statut
Contributeur
Dernière intervention
14 février 2020
197
Bonjour,

Soumettre le formulaire en Ajax en utilisant JSON ma semble une bonne piste.

Cordialement,