la listeB reste vide - PHP - Programmation
Marsh Posté le 04-05-2006 à 12:11:45
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
Marsh Posté le 04-05-2006 à 12:16:32
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 :
|
Marsh Posté le 04-05-2006 à 12:18:39
<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>
Marsh Posté le 04-05-2006 à 12:30:17
c'est ta fonction changelist qui merdouille
use this instead:
Code :
|
Après normalement je devrais te donner 5 conseils genre:
...
mais la j'ai la flemme
Marsh Posté le 04-05-2006 à 12:56:24
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?
Marsh Posté le 04-05-2006 à 13:37:58
j'ai zappé le plus sans faire exprès dans le code que je t'ai donné:
Code :
|
edit: d'ailleurs tu devrais definir t en dehors de ta boucle for:
Code :
|
Marsh Posté le 04-05-2006 à 13:40:52
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
Marsh Posté le 04-05-2006 à 13:51:35
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.
Marsh Posté le 04-05-2006 à 14:12:34
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;
}
Marsh Posté le 04-05-2006 à 14:56:38
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>
Marsh Posté le 04-05-2006 à 15:03:20
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... si tu ne fais pas d'effort personne ne va en faire!!!
Marsh Posté le 04-05-2006 à 15:05:25
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>
Marsh Posté le 04-05-2006 à 15:38:44
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?
Marsh Posté le 04-05-2006 à 16:52:38
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>
Marsh Posté le 04-05-2006 à 11:51:46
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>