Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1339 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  la listeB reste vide

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

la listeB reste vide

n°1359393
antho1983
Posté le 04-05-2006 à 11:51:46  profilanswer
 

Voila j'ai deux tables: cat_liens qui contient (id , annee) et liens (mois, annee)
 
Je veut choisir une annee dans listeA et que listeB soit remplie en fonction de ce choix. Mais la listeB reste tout le temps vide.
Pourtant j'ai suivi l'exemple php de la page http://www.asp-php.net/tutorial/as [...] php?page=2
 
Pourquoi la listeB reste tout le temps vide?
 
Voila mon code:
 
<body>
  <?php
 
  $dbhost = "localhost";
  $dbuser = "mbz962";
         $dbpass = "dz3011";
         $dbname = "tatex";
 
         $cnx = mysql_connect($dbhost, $dbuser, $dbpass);
         if ($cnx){
  mysql_select_db($dbname);
         }
   
 
$SQL="SELECT * FROM cat_liens";
$result = mysql_query($SQL);
 
?>
<script language="JavaScript"><!--
   listemois=new Array()
   listemois[0]=new Array("vide !","" )
<?
while ($val = mysql_fetch_array($result)) {
   $SQL2 = "select mois from liens where annee =";
   $SQL2 .= $val["annee"];
   $result2 = mysql_query($SQL2);
?>  listemois[<?echo $val["id"];?>]=new Array(<?
   while ($val2 = mysql_fetch_array($result2))
      echo "\"".$val2["mois"]."\",";
   ?>"" )
<? }
?>
   function changeliste() {
      choix=document.monform.listeA.value
      t="<select name='listeB'>"
      for(i=0;i<listemois[choix].length-1;i++)
         t+="<option>"+listemois[choix][i]+"</option>"
      document.monform.listeB.outerHTML=t+"</select>"
   }
--></script>
<form name="monform">
   <select name="listeA" onchange=changeliste()>
      <option value=0>Choisit une liste</option>
<?
mysql_data_seek($result,0); // movefirst
while ($val = mysql_fetch_array($result)) {
?>      <option value=<?echo $val["id"];?>><?
      echo $val["annee"];?></option>
<? }
mysql_close(); ?>
   </select><select name="listeB">
      <option>vide !</option>
   </select><br><br>
   <input type="Submit" value="Envoyer">
</form>
Puis regardez dans la barre d'adresses !
<BR><BR>

mood
Publicité
Posté le 04-05-2006 à 11:51:46  profilanswer
 

n°1359418
antho1983
Posté le 04-05-2006 à 12:11:45  profilanswer
 

et pourtant dans la fonction changelist() choix prend bien les bonnes valeurs (celle de id) je ne voit pas pkoi mais je pense que c'est la création des tableaux qui ne marchent pas

n°1359421
anapajari
s/travail/glanding on hfr/gs;
Posté le 04-05-2006 à 12:16:32  profilanswer
 

Est-ce que tu peux nous montrer le code html généré plutot que le php? A priori ton erreur semble être dans le js mais avec ton code tout mélangé s'pas facile de s'y retrouver.
Je trouve quand même que c'est de la bouse vraiment pas terrible de mélanger à ce point la php,html&js. Par exemple la c'est quasi illisible:

Code :
  1. <?
  2. while ($val = mysql_fetch_array($result)) {
  3.    $SQL2 = "select mois from liens where annee =";
  4.    $SQL2 .= $val["annee"];
  5.    $result2 = mysql_query($SQL2);
  6. ?>  listemois[<?echo $val["id"];?>]=new Array(<?
  7.    while ($val2 = mysql_fetch_array($result2))
  8.       echo "\"".$val2["mois"]."\",";
  9.    ?>"" )
  10. <? }
  11. ?>


[:mlc]

Message cité 1 fois
Message édité par anapajari le 04-05-2006 à 12:17:15
n°1359424
antho1983
Posté le 04-05-2006 à 12:18:39  profilanswer
 

<body>
  <script language="JavaScript"><!--
   listemois=new Array()
   listemois[0]=new Array("vide !","" )
  listemois[1]=new Array("2","3","" )
  listemois[2]=new Array("4","" )
  listemois[3]=new Array("6","" )
   function changeliste() {
      choix=document.monform.listeA.value
      t="<select name='listeB'>"
      for(i=0;i<listemois[choix].length-1;i++)
         t+="<option>"+listemois[choix][i]+"</option>"
      document.monform.listeB.outerHTML=t+"</select>"
   }
--></script>
<form name="monform">
   <select name="listeA" onchange=changeliste()>
      <option value=0>Choisit une liste</option>
      <option value=1>2006</option>
      <option value=2>2005</option>
      <option value=3>2007</option>
 
   </select><select name="listeB">
      <option>vide !</option>
   </select><br><br>
   <input type="Submit" value="Envoyer">
</form>
Puis regardez dans la barre d'adresses !
<BR><BR>

n°1359432
anapajari
s/travail/glanding on hfr/gs;
Posté le 04-05-2006 à 12:30:17  profilanswer
 

c'est ta fonction changelist qui merdouille ;)
use this instead:

Code :
  1. function changeliste() {
  2.       choix=document.monform.listeA.value;
  3.       for(i=0;i<listemois[choix].length-1;i++)
  4.          t="<option>"+listemois[choix][i]+"</option>";
  5.       document.monform.listeB.innerHTML=t;
  6.    }


Après normalement je devrais te donner 5 conseils genre:

  • les scripts vont dans le head
  • fini tes instructions js par des ;

...
mais la j'ai la flemme :o

n°1359458
antho1983
Posté le 04-05-2006 à 12:56:24  profilanswer
 

merci çà marche mais ya un petit problème: dans la listeB il ni a que la dernière valeur du tableau correspondant.
Pour 2006 j'ai deux valeurs qui doivent s'afficher (2 et 3) mais ya que le 3 qui s'affichent. Comment résoudre ce pb?

n°1359507
anapajari
s/travail/glanding on hfr/gs;
Posté le 04-05-2006 à 13:37:58  profilanswer
 

j'ai zappé le plus sans faire exprès dans le code que je t'ai donné:

Code :
  1. t+="<option>"+listemois[choix][i]+"</option>";


 
edit: d'ailleurs tu devrais definir t en dehors de ta boucle for:

Code :
  1. var t='';
  2.      for(i=0;i<listemois[choix].length-1;i++)
  3.         t+="<option>"+listemois[choix][i]+"</option>";
  4.      document.monform.listeB.innerHTML=t;



Message édité par anapajari le 04-05-2006 à 13:39:20
n°1359513
antho1983
Posté le 04-05-2006 à 13:40:52  profilanswer
 

Oui j'ai vu et j'ai deja essayé mais avec le plus au lieu de mettre
2
3
 
çà me met dans une seule case 23 (çà les concatenes) dc pas bon

n°1359527
anapajari
s/travail/glanding on hfr/gs;
Posté le 04-05-2006 à 13:45:55  profilanswer
 
n°1359538
antho1983
Posté le 04-05-2006 à 13:51:35  profilanswer
 

Pourquoi çà ne marche pas alors?
Moi j'utilise firefox et çà me les mets tous a la suite: 23
pourtant avec la boucle for çà devrait faire  
2
3
Meme en déclarans t en dehors çà ne change pas.

mood
Publicité
Posté le 04-05-2006 à 13:51:35  profilanswer
 

n°1359578
anapajari
s/travail/glanding on hfr/gs;
Posté le 04-05-2006 à 14:11:22  profilanswer
 

fais voir ton code et arrête de m'envoyer des MP  :fou:  :fou:  :fou:

n°1359581
antho1983
Posté le 04-05-2006 à 14:12:34  profilanswer
 

function changeliste() {
           choix=document.monform.listeA.value;
    var t='';
           for(i=0;i<listemois[choix].length-1;i++) {
              t+="<option>"+listemois[choix][i]+"</option>";
    }
           document.monform.listeB.innerHTML=t;
      }

n°1359647
antho1983
Posté le 04-05-2006 à 14:49:13  profilanswer
 

personne ne sait pkoi çà donne ceci?

n°1359664
antho1983
Posté le 04-05-2006 à 14:56:38  profilanswer
 

De plus, je ne peut pas sélectionnez une valeur dans la deuxième liste déroulante. Comment çà se fait car c'est a peu près la meme que la première et la je peut modifier mon choix.
 
Voila le code en entier:
 
 <html>
 <title>menu2.php</title>
<head>
<script language="JavaScript"><!--
 
 function changeliste() {
           choix=document.monform.listeA.value;
    var t='';
           for(i=0;i<listemois[choix].length-1;i++) {
              t+="<option>"+listemois[choix][i]+"</option>";
    }
           document.monform.listeB.innerHTML=t;
      }  
 
--></script>
 
</head>
 
<body>
  <?php
 
  $dbhost = "199.89.134.247";
  $dbuser = "mbz962";
         $dbpass = "dz3011";
         $dbname = "tatex";
 
         $cnx = mysql_connect($dbhost, $dbuser, $dbpass);
         if ($cnx){
  mysql_select_db($dbname);
         }
   
 
$SQL="SELECT * FROM cat_liens";
$result = mysql_query($SQL);
 
?>
<script language="JavaScript"><!--
   listemois=new Array()
   listemois[0]=new Array("vide !","" )
<?
while ($val = mysql_fetch_array($result)) {
   $SQL2 = "select mois from liens where ans =";
   $SQL2 .= $val["annee"];
   $result2 = mysql_query($SQL2);
?>  
    listemois[<?echo $val["id"];?>]=new Array(
    <?
    while ($val2 = mysql_fetch_array($result2)){
      echo "\"".$val2["mois"]."\",";
    }
    ?>
    "" )
<?  
   }
?>
   
   
 
   
--></script>
<form name="monform">
   <select name="listeA" onchange=changeliste()>
      <option value=0>Choisit une liste</option>
<?
mysql_data_seek($result,0); // movefirst
 
while ($val = mysql_fetch_array($result)) {
?>      
      <option value=<?echo $val["id"];?>>
<?
      echo $val["annee"];?></option>
<?  
}
mysql_close();  
?>
   </select><select name="listeB">
      <option>vide !</option>
   </select><br><br>
   <select name="Typestat">
    <option>Requete1</option>
    <option>Requete2</option>
    <option>Requete3</option>
    <option>Requete4</option>
    <option>Requete5</option>
   </select>
   <input type="Submit" value="Envoyer">
</form>
Puis regardez dans la barre d'adresses !
<BR><BR>
 
</body>
</html>

n°1359675
anapajari
s/travail/glanding on hfr/gs;
Posté le 04-05-2006 à 15:03:20  profilanswer
 

anapajari a écrit :

Est-ce que tu peux nous montrer le code html généré plutot que le php? A priori ton erreur semble être dans le js mais avec ton code tout mélangé s'pas facile de s'y retrouver.


c'est toujours vrai...  :pfff:  si tu ne fais pas d'effort personne ne va en faire!!!  

n°1359682
antho1983
Posté le 04-05-2006 à 15:05:25  profilanswer
 

ok desole
 
<html>
 <title>menu2.php</title>
<head>
<script language="JavaScript"><!--
 
 function changeliste() {
           choix=document.monform.listeA.value;
    var t='';
           for(i=0;i<listemois[choix].length-1;i++) {
              t+="<option value=\"listemois[choix][i]\" >"+listemois[choix][i]+"</option>";
    }
           document.monform.listeB.innerHTML=+t;
      }  
 
--></script>
 
</head>
 
<body>
  <script language="JavaScript"><!--
   listemois=new Array()
   listemois[0]=new Array("vide !","" )
 
    listemois[1]=new Array(
    "2","4",    "" )
 
    listemois[2]=new Array(
    "2","4",    "" )
 
    listemois[3]=new Array(
    "6",    "" )
   
   
 
   
--></script>
<form name="monform">
   <select name="listeA" onchange=changeliste()>
 
      <option value=0>Choisit une liste</option>
       
      <option value=1>
2006</option>
       
      <option value=2>
2005</option>
       
      <option value=3>
2007</option>
   </select><select name="listeB">
 
      <option value=0>vide !</option>
   </select><br><br>
   <select name="Typestat">
    <option>Requete1</option>
    <option>Requete2</option>
    <option>Requete3</option>
    <option>Requete4</option>
 
    <option>Requete5</option>
   </select>
   <input type="Submit" value="Envoyer">
</form>
Puis regardez dans la barre d'adresses !
<BR><BR>
 
</body>
</html>

n°1359722
antho1983
Posté le 04-05-2006 à 15:38:44  profilanswer
 

personne n'aurait une idee?  
1- pourquoi çà met 23 au lieu de 2
                                                3
dans la listeB
 
2- Pourquoi je ne peut rien selectionner dans la listeB (meme "vide!" ) çà reste toujours a blanc?

n°1359813
antho1983
Posté le 04-05-2006 à 16:52:38  profilanswer
 

est ce que çà ne serait pas du a une mauvaise création du tableau du tableau listemois? En fait sur ma page le premier changement de listeA (je prend par exemple 2005) me met dans listeB : --choisit un mois--24. Le deuxième (je prend 2007) me met 6. Ceci n'est pas normal donc l'erreur vient peut etre de là?
 
Code HTML correspondant:
 
<html>
 <title>menu2.php</title>
<head>
<script language="JavaScript"><!--
 
 function changeliste() {
           choix=document.monform.listeA.value;
    var t='';
           for(i=0;i<listemois[choix].length-1;i++) {
              t+="<option value=\"listemois[choix][i]\" >"+listemois[choix][i]+"</option>";
    }
           document.monform.listeB.innerHTML+=t;
      }  
 
--></script>
 
</head>
 
<body>
  <script language="JavaScript"><!--
   listemois=new Array()
   listemois[0]=new Array("Choisit un mois","" )
 
    listemois[1]=new Array(
    "2","4","" )
 
    listemois[2]=new Array(
    "2","4","" )
 
    listemois[3]=new Array(
    "6","" )
   
   
 
   
--></script>
<center><h2> Index des statistiques </h2></center>
 
<form name="monform" action="traitement.php">
   <table align=center>
   <tr>
   <td align=letf>Annee : </td>
   <td align=left><select name="listeA" onchange=changeliste()>
      <option value=0>--Choisit une annee--</option>
       
      <option value=1>
2006</option>
 
       
      <option value=2>
2005</option>
       
      <option value=3>
2007</option>
   </select>
   </td></tr>
    <tr>
   <td></td>
   <td></td>
 
   </tr>
   <tr>
   <td align=letf>Mois : </td>
   <td align=left><select name="listeB">
      <option>--Choisit un mois--</option>
   </select>
 
   </td></tr>
 
    <tr>
   <td></td>
   <td></td>
   </tr>
   <tr>
   <td align=letf>Type de statistique : </td>
   <td align=left><select name="Typestat">
           <option>--Choisit une requete--</option>
 
    <option>Requete1</option>
    <option>Requete2</option>
    <option>Requete3</option>
    <option>Requete4</option>
    <option>Requete5</option>
   </select>
 
   </td></tr>
   <tr>
   <td></td>
   <td></td>
   </tr>
   <tr>
   <td></td>
   <td align=left><input type="Submit" value="Envoyer"></td>
   </table>
 
</form>
<BR><BR>
 
</body>
</html>


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  la listeB reste vide

 

Sujets relatifs
Liste videPHP 4.3.10 chez Free : impossible de supprimer un répertoire vide !?
tester si un fichier est vide[PHP] Comment éviter qu'un formulaire se vide si on revient ? [Résolu]
Lien wmv et fenetre videtester un ligne vide dans un fichier
pb de requete sur une table vide et une rempli[VBA] Excel différencier cellules vide ou contenant 0
PHP5 et la POO : n'affiche rien et renvoie du vide !test cellule vide
Plus de sujets relatifs à : la listeB reste vide


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR