[Résolu] Liste de selection SUDUKESQUE...

Eléphanteau du PHP | 24 Messages

19 mars 2007, 00:58

Bonsoir,
Je ne comprends pas ce que me fait PHP avec ma sélection, lorsque je sélectionne dans une liste l'item 'n' la requête qui s'éxécute me dit que j'ai sélectionné l'item 'n+1'...
Ceci est probablement dû au fait que ma liste est gérée via Javascript, en fait j'ai besoin d'un cador en PHP/Javascript...
ci joint le code de mon truc sudukesque:

fichier liste.js

Code : Tout sélectionner

var liste = new Array(); liste[0] = new Array( ); liste[1] = new Array( 'aaa', 'bbb', 'ccc', 'ddd', 'eee' ); liste[2] = new Array( '111', '222', '333', '444', '555', '666' ); liste[3] = new Array( 'AAA', 'BBB', 'CCC', 'DDD' );
Puis le code source de mon fichier php :

Code : Tout sélectionner

<html> <title>aaa</title> <script language="javascript" src="liste.js"></script> <head> <script> optionTest = true; function init(){ lgth = document.forms['select_choix'].alphabet.options.length - 1; document.forms['select_choix'].alphabet.options[lgth] = null; if (document.forms['select_choix'].alphabet.options[lgth]) optionTest = false; } function populate(){ if (!optionTest) return; var box = document.forms['select_choix'].alphabet; var number = box.options[box.selectedIndex].value; if (!number) return; var list = liste[number]; var box2 = document.forms['select_choix'].faire_selection; box2.options.length = 0; for(i=0;i<list.length;i+=1){ box2.options[i] = new Option(list[i],list[i+1]); } } </script> </head> <body onLoad="init();"> <table width="100%"> <tr> <td> Type de recherche :<br><br> <a href="page_choix.php?apui=titre" target="_self">Selection</a><br> <?php if(isset($_GET['apui']) && $_GET['apui']=="titre"){ echo ' <form name="select_choix" action="page_choix.php" method="post"> <table width="96%" align="center"> <tr> <td width="20%">Choix</td> <td width="20%"> <select name="alphabet" onchange="populate();"> <option value="0">-</option> <option value="1">A</option> <option value="2">B</option> <option value="3">C</option> <option value="4">Pour_test_init</option> </select> </td> <td width="30%"> <select name="faire_selection"> <option value="" size="30">vide</option> </select> </td> <td width="20%"><input type ="submit" value="search" name="selection"></td> <td width>&nbsp;</td> </tr> </table> </form> '; } ?> </td> </tr> </table> <?php echo "****************************************<br>"; echo "Contenu de $_POST :".var_dump($_POST)." <br>"; echo "****************************************<br>"; ?> </body> </html>
Modifié en dernier par vincilian le 29 mars 2007, 19:47, modifié 1 fois.

Eléphanteau du PHP | 24 Messages

19 mars 2007, 20:26

Alors ?

ViPHP
ViPHP | 1996 Messages

19 mars 2007, 22:32

l'item 'n' la requête qui s'éxécute me dit que j'ai sélectionné l'item 'n+1'...
J'ai beau essayé de savoir d'où vient n ou n+1 mais là je pèche !

A moins que cela vienne de là

Code : Tout sélectionner

for(i=0;i<list.length;i+=1){
ta boucle s'arrete peut être un cran trop tard... Essaye avec

Code : Tout sélectionner

for(i=0;i<(list.length-1);i+=1){
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

ViPHP
ViPHP | 1996 Messages

19 mars 2007, 22:36

Alors ?
Je voudrais aussi rajouter un message personnel. Cela fait plusieurs POST que j'observe de l'impatience dans l'attente des réponses. Je ne vais pas retourner les différentes réponses que mes prédécesseurs ont eu le temps et "la patience" d'écrire à propos de ces différents cas mais je les rejoins.... On a aussi une vie mon ami!
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 mars 2007, 22:38

Modération :
vincilian, les "up" sont interdits sur PHPFrance.

Si tu n'as pas obtenu de réponse, c'est (au choix) :
- que ta question est mal formulée : reformule-la différemment ;
- que personne ne connaît la réponse ici : faire un "up" ne te donnera pas davantage de résultats ;
- que la réponse demandée exige un travail important que personne ne va faire à ta place ;
- que trop peu de temps s'est écoulé depuis ton précédent message pour qu'un membre ait pu y répondre.

Merci de prendre le temps de lire les règlements.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 24 Messages

29 mars 2007, 19:27

Déjà, désolé à la communauté de ce forum de ne pas avoir respecter la charte...
Je savais que je faisais une connerie en faisant le 'up' de mon topic..
Promis je ne le referais plus.

Pour en revenir avec mon problème, en fait je suis doublement désolé, car il s'agissait bien d'une erreur dans mon script javascript

function populate(){
.../...
box2.options.length = 0;
for(i=0;i<list.length;i+=1){
=====> box2.options = new Option(list,list[i+1]);
.../...
}

Avec la deuxième ligne, je demande au navigateur d'afficher la valeur à
la position i de la lsite mais d'envoyer la valeur d'après dans le
formulaire.

Le premier élément est le label affihé à l'écran dans la liste et le
deuxième la valeur réellement envoyée.

C'est pour ça qu'en selectionnant la valeur n, j'envoyais n+1...
Merci.