Select html/php

Résolu/Fermé
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 - 11 oct. 2008 à 12:45
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 - 12 oct. 2008 à 10:31
Bonjour,
J'ai créé un petit formulaire avec une liste. J'ai créé un tableau qui contient tous les choix possibles que cette liste peut prendre ($liste = Array("valeur1","valeur2", ...)). De plus, j'ai une fonction qui permet d'envoyer et d'afficher le résultat sur cette page.
<script language="JavaScript">
   function test(champ) 
   {
      if(champ.selectedIndex>0)
         monform.submit()
   }
</script>

	<FORM method="POST" name="monform">
	   <select name="mon_champ" onchange="test(this)">
	   <?php for($i=0 ; $i<sizeof($liste) ; $i++)
		{ ?>
	      <option 
	      <?php if($_POST["mon_champ"] == $liste[$i])
			{
		        echo "selected "; 
			}
			echo '>'.$liste[$i].'</option>';
			
	    } 
		?>
		
	   </select>
	</FORM>


Et lorsque l'on effectue un choix, j'aimerais afficher l'indice du tableau : $i, mais cela ne fonctionne pas. En quelque sorte :
if($_POST["mon_champ"]) 
{
   echo $i.'<br>';
} 

Merci pour votre aide !
A voir également:

3 réponses

linuxakros Messages postés 114 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 15 octobre 2008 19
11 oct. 2008 à 12:53
Bonjour!

Là:
<script language="JavaScript">
function test(champ)
{
if(champ.selectedIndex>0)
monform.submit()
}
</script>

Il manque un " ; ": monform.submit();
Après possible qu'il y ai un autre soucis.
@+
-1
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 27
11 oct. 2008 à 13:23
Je viens de tester mais ça ne change rien !
Merci quand même
-1
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
12 oct. 2008 à 00:51
Salut,

Si je comprends bien tu as une liste telle que
> Pomme
> Poire
> Banane

et tu voudrais voir :
1> Pomme
2> Poire
3> Banane

Il te suffirait de modifier la ligne
echo '>'.$liste[$i].'</option>';
et de la remplacer par
echo $i+1.'>'.$liste[$i].'</option>';

J'espère nous être bien compris.

@linuxakros : Le point virgule à la fin des instructions JavaScript peut malheureusement être optionnel.
-1
Posotaz Messages postés 489 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 19 juin 2011 225
12 oct. 2008 à 01:11
Après relecture, je crois que j'ai mal compris le problème...

Si l'utilisateur sélectionne "Poire" (2è position dans le tableau), tu voudrais aussi pouvoir envoyer son indice et pas seulement le nom.

Tout d'abord une chose m'intrigue : où est l'attribut "value" dans tes tags "option" ? C'est la valeur de cet attribut qui va être envoyée, pas le texte entre les balises <option></option>.

Ensuite, pour en revenir à ton problème, je vois une solution sale mais potentiellement fonctionnelle qui consiste à conserver ma première idée de mon message précédent ; c'est à dire rajouter l'index (mais sans le +1) devant le caractère ">" (je rappelle que tu es censé mettre cette valeur dans l'attribut "value", le texte entre les balises option tu n'y bouges pas c'est bien comme tu as fait), ainsi du côté serveur, il te suffira de "splitter" la valeur afin de récupérer le numéro devant le ">". Tu vois où je veux en venir ? Je ne vois malheureusement pas d'autre alternative.
-1
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 27
12 oct. 2008 à 10:31
Bon j'ai trouvé une solution qui fonctionne :
<script language="JavaScript">
   function test(champ) 
   {
      if(champ.selectedIndex>0)
         monform.submit()
   }
</script>

	<FORM method="POST" name="monform">
	   <select name="mon_champ" onchange="test(this)">
	   <?php for($i=0 ; $i<sizeof($liste) ; $i++)
		{ ?>
	      <option 
	      <?php
                       if($_POST["mon_champ"] == $liste[$i])
			{
		        echo "selected ";
                        $rang = $i ;
			}
			echo '>'.$liste[$i].'</option>';
			
	    } 
		?>
		
	   </select>
	</FORM>

if ($_POST["mon_chmap"]
{
      echo $rang;
}


J'avais bien essayé de mettre une 'value' comme tu le dit Posotaz mais j'avais un petit problème : il ne me m'affichait pas la solution choisie, il mettait la valeur d'indice 0.
Merci pour votre aide
-1