Page 1 sur 1

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

Posté : 19 mars 2007, 00:58
par vincilian
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>

Posté : 19 mars 2007, 20:26
par vincilian
Alors ?

Posté : 19 mars 2007, 22:32
par Aureusms
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){

Posté : 19 mars 2007, 22:36
par Aureusms
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!

Posté : 19 mars 2007, 22:38
par zeus
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.

Posté : 29 mars 2007, 19:27
par vincilian
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.