Je ne comprend pas pk ça marche pas :'(

dinous Messages postés 57 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 21 juin 2006 - 27 mars 2004 à 11:04
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 27 mars 2004 à 15:00
Bonjour,
j'ai ça :

<?
$connexion = mysql_pconnect(...); //connexion
mysql_select_db(..., $connexion);$mareq 'SELECT count(distinct libelletype), codetype,libelletype, dosehomologuee, produits.codeproduit, produit FROM `produits` , `typeproduit` WHERE produits.codetypeproduit typeproduit.codetype GROUP BY codetype
ORDER BY typeproduit.libelletype, produits.codeproduit';
$curs = mysql_query($mareq, $connexion);
echo "<script type='text/javascript'>";
$prod = "";

while($row=mysql_fetch_assoc($curs))
{
$tab = "";
echo "var"." ".$row["libelletype"]."= new Array(";
$res = mysql_query("select * from produits where CodeTypeProduit=".$row["codetype"]);
while($row2=mysql_fetch_assoc($res))
{
$tab .= """.$row2["Produit"]."", ";
}
$tab = substr($tab,0,strlen($tab)-2);
echo $tab.");";
}
echo /*"function test(){alert(Oïdium[1])}*/"</script>";
?>
<script type='text/javascript'>
function InitializeMainCategory(currentForm) {
for (var i=1; i < Oïdium.length; i++) {alert(i);
eval(currentForm + ".select1.options[i] = new Option('" + Oïdium[i] + "')");
eval(currentForm + ".select1.options[i].value = " + Oïdium[i]);
}
}
</script>

<form name="form1" method="post">
<select name="select1">
</select>
</form>

et à la sortie ça me donne ça en code source :

<script type='text/javascript'>
var Botnyts= new Array("produit5");
var Engrais= new Array("produit3");
var Insecticide= new Array("produitdeux");
var Mildiou= new Array("produitsix");
var Oïdium= new Array("produitun", "produit4");
</script>
<script type='text/javascript'>
function InitializeMainCategory(currentForm) {
for (var i=0; i < Oïdium.length; i++) {alert(i);
eval(currentForm + ".select1.options[i] = new Option('" + Oïdium[i] + "')");
eval(currentForm + ".select1.options[i].value = " + Oïdium[i]);
}
}
</script>

<form name="form1" method="post">
<select name="select1">
</select>
</form>

et a l'écran dans ma combo je n'ai que le premier produit et nonpas les deux produits de Oïdium hors Oïdium[0] contient "produitun" et Oïdium[1] contient "produit4"

comment cela se fait il ??
A voir également:

6 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 mars 2004 à 11:46
REBonjour
je pense qu'il y a plusieurs erreurs
body onload=fonction
et fonction faite référence à quelquechose qui
vient ensuite dans le body
qui donc ne doit pas encore exister ? ( à vérfifer )
pas compris la syntaxe dans fonction ( eval ... )
pourquoi si "compliqué" ?
....
function InitializeMainCategory()
{ for (var i=0; i < Oïdium.length; i++)
{form1.select1.length++;
form1.select1[i].text=Oïdium[i]; } }
</script>

<form name="form1" method="post">
<select name="select1">
</select>
</form>
<script type="text/javascript">
InitializeMainCategory();
</script>

une remarque, une question :
pourquoi ne pas générer les option directement
en php, pourquoi passer par des Array et
une function en javascript ?

Cordialement. Bul.
0
dinous Messages postés 57 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 21 juin 2006
27 mars 2004 à 12:01
Parce que el php m'oblige a reposter mon formulaire pour avoir les réponses.

et là j'ai réussi à faire ce que je voulais reste plus que la derniere étape

<script type='text/javascript'>
function InitializeMainCategory(currentForm, nomtype) {alert(nomtype);
var i =0;
while (i < nomtype.length) {
eval(currentForm + ".select2.options[i] = new Option('" + nomtype[i] + "')");
eval(currentForm + ".select2.options[i].value = " + i);
i= i +1;
}
}
</script>
<form name="form1">
<select name="select1" onChange="InitializeMainCategory('document.form1', document.form1.select1.options[document.form1.select1.selectedIndex].text)">
<option></option>
<option>Oïdium</option>
</select>
<select name="select2">
</select>
</form>

le probleme maintenant c'est que je voudrai remplir ma deuxieme combo en fonction de la premiere.
En fait si tu cliques sur Oïdium il faut que sa mette dans le deuxiem combo ce que contitnt le tableau Oïdium c'est aidre les deux valeurs "produitun" et "produit4"
Là ce que j'ai fait ne peux pas marché parce que il prend pas le tableau Oïdium mais al chaine de caractère Oïdium :'(
Comment faire ??
0
dinous Messages postés 57 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 21 juin 2006
27 mars 2004 à 12:09
de plus çà :

<script type='text/javascript'>
function InitializeMainCategory(currentForm, nomtype) {alert(nomtype);
var i =0;
if (nomtype = "Oïdium"){
while (i < Oïdium.length) {
eval(currentForm + ".select2.options[i] = new Option('" + Oïdium[i] + "')");
eval(currentForm + ".select2.options[i].value = " + i);
i= i +1;
}
}
}
</script>
<form name="form1">
<select name="select1" onChange="InitializeMainCategory('document.form1', document.form1.select1.options[document.form1.select1.selectedIndex].text)">
<option></option>
<option>Oïdium</option>
</select>
<select name="select2">
</select>
</form>

ça marche !
dans le ens ou ça rempli bien ma deuxieme combo en fction de ce que je coche dans el premiere le probleme c'ets qu esi j'ai 7 typeproduit ( Oïdium etc ...) je vaius aps faire 7 If ....
donc faudrai essayer d'optimiser ça mais je ne sais pas coment faire :'(
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 mars 2004 à 12:33
Bonjour
InitializeMainCategory()
{ for (var i=0; i < Oïdium.length; i++)
c'était un exemple pour me simplifier la vie
InitializeMainCategory(tableau)
{ for (var i=0; i < tableau.length; i++)
ça marche, bien sûr
mes 2 questions restent toujours valables

pourquoi eval : à mon avis inutile dans ce cas,
très gourmand en +, parait-il.
pourquoi Array : le fait de rappeller PHP ne change rien,
ça ne justifie rien, à mon sens, je n'ai peut-être
pas tous les éléments en main, mais je ne vois pas
ce qui pourrais justifier cela ?

Cordialement. Bul.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dinous Messages postés 57 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 21 juin 2006
27 mars 2004 à 12:46
Merci pour ton aide !!
voilà ce aue j'ai maintenant :

<script type='text/javascript'>
function InitializeMainCategory(nomtype) {
for (var i=0; i < nomtype.length; i++){
document.form1.select2.length++;
document.form1.select2[i].text=nomtype[i];
}
}
</script>
<form name="form1">
<select name="select1" onChange="InitializeMainCategory(document.form1.select1.options[document.form1.select1.selectedIndex].text)">
<option></option>
<option>Oïdium</option>
</select>
<select name="select2">
</select>
</form>

et ça marche bien sauf quand je passe par une variable pour le nom du tableau
Typeproduit est prit en temps que chaine de caractere correspondat au text sélectionné dan sla combo et pas en temps que Tableau
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
27 mars 2004 à 15:00
Bonjour
c'est mon niveau d'incompétence là.
comment mémoriser dans les options
d'un select l'adresse d'un tableau ?
pas son nom (en string), mais l'adresse pour le gérer ?
en javascript, je ne sais pas. je suis sûr que c'est
possible, mais je ne sais pas.
je n'ai jamais eu à faire ça comme ça,
donc, je n'ai pas cherché à faire.
j'aurais fait les choses autrement.
Cordialement. Bul.
0
Rejoignez-nous