pourquoi mon premier choix d'une comboliste ne fonctionne pas?

pourquoi mon premier choix d'une comboliste ne fonctionne pas? - HTML/CSS - Programmation

Marsh Posté le 27-01-2015 à 17:50:45    

bonjour tout le monde
 
en annexe d'un soucis php resolu dans un autre post j'avais demandé pourquoi ma comboliste ne fonctionne pas correctement, il me semble que le soucis ne venant pas finalement du code php je viens donc en parler dans la rubrique html
 
j'ai donc une partie de code html  
puis l’exécution d'un fichier php legume3.php
dans lequel il renvoie une chaine avec des balises html pour un petit tableau qui présente les résultats du traitement
en dessous le nom du légume choisi
puis ma comboliste
 
 
j’exécute le scenario suivant:
 
1) on charge la page
avec le choix par defaut la tomate (valeur 0)  
 
ensuite il ya donc le traitement et la présentation des résultats est correcte et correspond bien au choix 0
 
2) je choisi ensuite dans la combo liste par exemple le choix 3
la valeur 3 est récupèrée dans la partie php et traitement et présentation qui s'en suivent correspondent au choix 3
 
3) on choisi n'importe quel autre choix de la liste (autre que le premier)
 
tout se passe tres bien de manière totalement analogue à ce qui se passe au (2)
 
4) maintenant je veux de nouveau reprendre le choix 0, le premier
mais là plus rien ne se produit, le fichier php est pas executé, la page se rafraichie pas, elle reste dans l'etat du precedant choix,  
 
comme si le onchange=submit() ne fonctionnait pas
 
 
je remarque autre chose et je ne sais pas si c'est normal ou non:
comme je l'ai dit la combo liste dans la page est affichée en dernier sous la présentation des résultats
 
pour effectuer un choix on clique sur la petite flèche a droite et la liste apparait, lorsque je choisis par exemple le 3, la liste disparait, le choix 3 apparait un court instant dans la fenêtre simplifiée de la combo liste puis on voit qu'il y a traitement rafraichissement du résultat et on revient à l'affichage de la combo liste qui dans la fenêtre n'affiche plus le choix 3 mais a nouveau le 0
 
Il me semble donc vu ce que je viens a l'instant de décrire qu'en effet ensuite onchange peut poser problème en voulant ensuite prendre le choix 0, étant donné qu'il est déjà dans la fenêtre
 
comment modifier mon code pour par exemple que le choix soit persistant une fois le traitement php fini lorsque la liste est de nouveau affichée en dessous?
 
merci d'avance à ceux qui pourront m'aider
 :hello:  
 
ci apres les deux parties de codes
 
 

Code :
  1. <form method="post" action="" name="formu1"> 
  2.     <DIV id="Layer1">
  3.        <?php include("legume3.php" ); echo "<FONT COLOR=navy SIZE=2>".$vv[$GLOBALS['cvm']]."<BR>".$info[$legume[0]]."</FONT>"; ?>
  4.     </DIV>
  5. <P>
  6. <select name="place1" id="place1" class="slegume" onChange="submit();"> 
  7.           <option selected value="0">&nbsp;La tomate</option> 
  8.           <option value="1">&nbsp;le poireau</option> 
  9.           <OPTGROUP label="&nbsp;---------------" ></OPTGROUP>
  10.           <option value="3">&nbsp;Abricot</option>
  11. </select> 
  12.                    
  13. </P> 
  14. </form>


 
 
legume3.php
 

Code :
  1. <?
  2. header('Content-Type: text/html; charset=UTF-8');
  3. $cvm="";
  4. $buffer="";
  5. $info = array('La tomate'=>'Soleil','le poireau'=>'terre','Abricot'=>'arbre');
  6. $vv = array('La tomate','le poireau','Abricot');
  7. if (!isset($_POST["place1"]))
  8.      {
  9.      $cvm="0";
  10.      $_POST["place1"]=$cvm;
  11.      echo "<br>on est dans le IF et cvm=".$cvm;
  12.      }
  13. $cvm=$_POST["place1"];
  14. echo "<br>on est apres et cvm=".$cvm;
  15. //----- traitement
  16. //----- presentation des resultats
  17. ?>

Reply

Marsh Posté le 27-01-2015 à 17:50:45   

Reply

Marsh Posté le 27-01-2015 à 21:26:09    

personne n'a la moindre petite piste sur ce qui pourrait clocher ou comment je peux forcer la combo liste sur le choix qui a été fait avant le lancement php?
 
:sweat:
 
en fin de php (ligne 19) est ce qu'on pourrait mettre un truc un peu de ce genre??
 
echo "<SCRIPT>document.getElementById('place1').value=".$cvm.";</SCRIPT>";


Message édité par tintin34 le 27-01-2015 à 21:41:38
Reply

Marsh Posté le 28-01-2015 à 10:44:25    

j'ai beau chercher partout sur google, je n'arrive pas a trouver ce qui peut clocher dans ma liste
 
par contre tous les exemples que je trouve le resultat est apres l'affichage de liste
 
est ce que ca pourrait etre ca? ou plus précisément peut etre que il y a un soucis dans l'imbrication de mes bloc? (je pense a la div qui contient le include du fichier php par exemple)
 
sur ce forum la liste déroulante aller à est pourtant placée apres le résultat :pt1cable:  
 
ma ligne 19 supplémentaire est elle une bonne idée?
dans ce cas j'ai du mal écrire un truc car tel quel ca change rien :cry:

Reply

Marsh Posté le 29-01-2015 à 10:47:29    

en rajoutant dans le premier code
à la ligne 13  


<SCRIPT>document.formu1.place1.options[choi].selected=true;</SCRIPT>


 
et dans le second
à la ligne 19


echo "<SCRIPT>var choi=$cvm;</SCRIPT>";


 
ca fonctionne :love:  
y a t'il d'autres solutions plus propres?
est ce que j'utilise mal le formulaire pour que ce probleme me soit arrivé
 

Reply

Marsh Posté le 29-01-2015 à 11:32:44    

J'ai épuré ton truc mais parce que je ne sais pas vraiment ce que tu veux faire
 

Code :
  1. <form method="post" action="" name="formu1" id="formu1" >
  2.     <DIV id="Layer1">
  3.        <?php
  4.    // include("legumes3.php" ); echo "<FONT COLOR=navy SIZE=2>".$vv[$GLOBALS['cvm']]."<BR>".$info[$legume[0]]."</FONT>";  
  5.    ?>
  6.     </DIV>
  7. <P>
  8. <?php
  9. $vv = array(
  10.    1 => 'La tomate',
  11.    2 => 'le poireau',
  12.    3 => 'Abricot'
  13.   );
  14. $info = array(
  15.    1 =>'Soleil',
  16.    2 =>'terre',
  17.    3 =>'arbre'
  18.   );
  19. if ( isset($_POST) AND sizeof($_POST)>0)
  20. {
  21. $monSelectValue = $_POST['place1'];
  22. echo "Dernier choix sélectionné : ".$monSelectValue. ' <br />
  23. - Correspondance dans $vv '.$vv[ $monSelectValue] .'<br />
  24. - Correspondance dans $info : '.$info[ $monSelectValue ].' <br />';
  25. }
  26. ?>
  27. <select name="place1" id="place1" class="slegume" onChange="document.getElementById('formu1').submit();">
  28. <option value="0">Choisir dans la liste</option>
  29. <?php
  30. foreach( $vv as $k=>$v)
  31. {
  32. $selected = ( $k == $monSelectValue ) ? ' selected="selected" '  : '';
  33. ?>
  34. <option <?=$selected;?> value="<?=$k;?>" ><?=$v;?></option>
  35. <?
  36. }
  37. ?>
  38. </select>
  39.                  
  40. </P>
  41. </form>


 
Ca ça marche, en une seule page sans l'include, ça reselectionne ton truc, et j'ai mis des index dans tes tableaux, beaucoup plus simple.

Reply

Marsh Posté le 29-01-2015 à 15:21:46    

ok merci beaucoup de ton aide hinomura je vais y adapter le reste :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed