Select html/php
Résolu
ben85350
Messages postés
610
Date d'inscription
Statut
Membre
Dernière intervention
-
ben85350 Messages postés 610 Date d'inscription Statut Membre Dernière intervention -
ben85350 Messages postés 610 Date d'inscription Statut Membre Dernière intervention -
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.
Et lorsque l'on effectue un choix, j'aimerais afficher l'indice du tableau : $i, mais cela ne fonctionne pas. En quelque sorte :
Merci pour votre aide !
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:
- Select html/php
- Editeur html - Télécharger - HTML
- Easy php - Télécharger - Divers Web & Internet
- Espace html - Astuces et Solutions
- Please select boot device - Forum Matériel & Système
- Br html ✓ - Forum Webmastering
3 réponses
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.
@+
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.
@+
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
J'espère nous être bien compris.
@linuxakros : Le point virgule à la fin des instructions JavaScript peut malheureusement être optionnel.
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.
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.
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.
Bon j'ai trouvé une solution qui fonctionne :
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
<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
Merci quand même