garder la valeur d'un select après le submit

Eléphant du PHP | 227 Messages

25 févr. 2007, 14:50

Bonjour à tous,

j'ai un tout petit soucis dans l'utilisation d'un "select" après le submit du formulaire et dont je voudrais que la valeur selectionée reste afficher après le clic sur le submit:

voici le code:
<?php $mem_asso  = array('Choisir..','Pr&eacute;sident','Vice-Pr&eacute;sident','Secr&eacute;taire','Tr&eacute;sorier','Membre','Autre'); ?>

<form method="post" action="#">
<label for="assoc">Si oui, quelle fonction occupez vous ?</label>		
<select name="assoc" id="assoc" onBlur="this.className='normal';" onFocus="this.className='focus'; assoc.value='';" tabindex="4">
<?php 
	$titre = isset($_POST['assoc']) ? $_POST['assoc'] : "";						
		$cnt = count($mem_asso); 
			for($i=0; $i<$cnt; $i++){							
				$selected = $titre == $mem_asso[$i] ? " selected = \"selected\"" : null;
		echo "<option value=\"". $mem_asso[$i] ."\"". $selected .">". $mem_asso[$i] ."</option>\n";
		
		}				
?>
</select>	
<input name="send" type="submit" value="Envoyer vos donn&eacute;es">
</form>

//Affichage valeur selectionner
<pre>
 <?php print_r($_POST); ?> 
 </pre>
A la l'affichage la valeur est bien trouvée, mais les options se replace sur la première position, en l'occurence "choisir.."

Pourtant la syntaxe est correct, pourriez vous m'éclairer?? Merci :oops: :oops:

Mammouth du PHP | 19672 Messages

25 févr. 2007, 15:00

Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 227 Messages

25 févr. 2007, 15:25

Salut Cyrano,


Tout d'abord merci de la réponse, mais apparement l'erreur se situe ici:
<?php $mem_asso  = array('Choisir..','Pr&eacute;sident','Vice-Pr&eacute;sident','Secr&eacute;taire','Tr&eacute;sorier','Membre','Autre'); ?>
Suite à l'utilisation de caractère spéciaux, car si je remplace les caractères par:
$mem_asso  = array('Choisir..','un','deux','trois','quatre','cinq','six');
Cela fonctionne sans soucis, Y a t-il une explication pas trop complexe ?
Je sais bien que cela tient à l'encodage, mais si je veux utiliser les caractère de cette facon, est ce possible ?
Merci

:wink:

Mammouth du PHP | 505 Messages

25 févr. 2007, 21:12

Tu compare des entites html avec un résultat récupéré dans Post qui est déjà décodé et donc sans entitiés...

Soit tu décode ton tableau d'origine, soit tu encodes la réponse.
$selected = $titre == html_entity_decode($mem_asso[$i]) ? " selected = \"selected\"" : null;