cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 2007
-
6 juin 2006 à 09:13
CodingAl
Messages postés1Date d'inscriptionlundi 12 juin 2006StatutMembreDernière intervention12 juin 2006
-
12 juin 2006 à 09:35
Bonjour,
J'aimerais savoir comment on passe un tableau en javascript. En fait je sais faire, mais la variable (le tableau) est déclaré en php, et est passé en paramètre d'une fonction javascript, qui est appellée quand on change la sélection d'une combobox.
Et donc il faut que je passe le tableau mais à l'indice sélectionnée (enfin à l'identifiant choisie)!
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 6 juin 2006 à 13:58
clair : ce n'est pas ça...
mais : qui n'y a donc dans $contact ?
et : quoi que fait la function affichContacts ?
et : que si on gère le select pourquoi ne pas mettre this,
au ieu de ce $contact dont on ne connais pas le contenu ?
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 6 juin 2006 à 15:11
Ok.
Alors je vais essayer de tout bien réexpliquer lol
En fait, j'ai une table dans une base de données qui contient des noms d'entreprises, et une autre qui contient les contacts liés à chacune des entreprises (et encore une pour faire le lien entre les deux mais bon).
Donc en fait, ce que je veux, c'est que l'utilisateur entre le nom (ou une partie du nom) d'une entreprise. Je recherche toutes les entreprises qui correspondent et je les affiche dans une combobox (ça c'est OK).
Maintenant on m'a demandé également d'afficher les contacts en même temps. Donc je me suis dis que j'allais remplir une seconde combobox pour mettre mes contacts.
Maintenant vu que le contenu de cette deuxième combobox change en fonction de lapremière, je me suis dis que j'allais passer par du javascript.
Alors au départ je fais ma requête PHP qui récupère mes entreprises. Pour chaque entreprise, je mets le nom dans la combobox et l'id en value de l'option. Et je fais également une requête pour récupérer les contacts que je met dans un tableau pour l'indice de l'entreprise, comme ça on s'y retrouve plus vite.
Ce qui donne : $contact[idEntreprise] = contacts récupérés dans la bd et liés à l'idEntreprise en cours
Ensuite, la fonction affichContacts devrait (c'est ce que je voudrais arriver à faire), récupérer l'identifiant de l'entreprise sélectionnée dans la combobox (donc this.options[this.selectedIndex].value) et également le tableau (enfin la case) qui est lié à l'entreprise (donc $contact[this.options[this.selectedIndex].value]).
Donc la fonction parcourait le tableau pour l'id que j'ai recu en paramètre afin d'afficher les contacts dans la deuxième combobox.
En fait au début je passais que $contact, mais j'ai pas réussi à le parcourir en javascript (j'ai pas compris pourquoi), donc jme suis dis que je donnerais directement la bonne case du tableau, mais je trouve pas la bonne syntaxe pour le passage de paramètres !!
Voilà j'espère que ça t'aidera à m'aider lol Merci en tout cas de t'être penché sur le problème!
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 7 juin 2006 à 07:44
à priori 2 questions.
1° afficher les lignes dont le début = caractères frappés.
j'ai mis dans ce site, un "traitement sur les select"
où un exemple existe.
2° 2 select liés.
soit en javascript, ce qui suppose que toutes les
données possibles du 2ème select soient
déjà en javascript, dans un array par exemple
( ou en html )
soit en php, et là, le 2ème select est généré par
une requête dans la base de données à partir
de ce qu'a sélectionné l'utilisateur dans le 1er.
pour utiliser une variable php, en javascript :
html ou javascript.....<?php echo $variable;?>....
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 7 juin 2006 à 08:09
Bon alors pour ton 1°, le traitement des select j'avais déjà vu lol, et bon c'est pas mon problème puisque ça ça marche.
Pour le 2°, jsuis obligé de faire la requête en php, d'ailleurs elle est faire d'avance, seulement après faut récup la bonne partie du tableau pour l'afficher.
Seulement le problème c'est que j'arrive pas à envoyer ma variable php au javascript ! Soit je me retrouve avec un truc undefined, soit il récupère un truc bizarre (par exemple, j'avais réussi à récupérer un tableau, quand j'ai demander de me l'afficher case par case en alert, il m'a afficher A puis R puis R puis A puis Y).
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 8 juin 2006 à 08:38
en fait, on n'envoie pas une variable php au javascript.
php, sur le serveur, crée/génère la page html/javascript,
puis l'envoie vers le client, où le javascript s'exécute.
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 8 juin 2006 à 09:15
Je me suis mal exprimée, désolée. On va finir par y arriver lol
Je sais bien tout ce que tu as dis, et je voulais éviter de recharger la page en passant les paramètres de la première combobox en passant par du javascript.
Bon alors je pense que c'est un problème de syntaxe, parce que mon tableau remplit en PHP est bon (oui je l'affiche dans le code PHP et il est nickel), seulement j'arrive pas à l'utiliser en javascript (quand je change de choix dans la combobox).
On reprends
Je fais une requête SQL en PHP et je récupère toutes les entreprises correspondant à ma recherche. Pour chacune des entreprises, je cherche les contacts qui y sont liés. A chaque ligne résultat, je la met dans un tableau $contact à l'indice "identifiant de l'entreprise".
Ce qui fait que dans mon tableau $contact, j'ai une "case" par entreprise (qui est l'indice des entreprises retourné par la première requête),
puis pour chacune de ces cases entreprises, j'ai une "case" par contact liée trouvé, et enfin pour chacune de ses cases contact, j'ai un tableau qui contient les informations (les champs de la base) pour les contacts.
Maintenant, je veux que quand je change le choix de ma combobox entreprises, j'appelle une fonction javascript qui va me remplir la deuxième combobox avec les bons contacts (qui sont dans le tableau $contact hein).
Donc, ça donne en code allégé (lol) :
$requete = "SELECT idEntite,nomEntite FROM devis_entite WHERE nomEntite LIKE '%".$_POST["entreprise"]."%' AND categorie='".$_POST["cat"]."' ORDER BY nomEntite ASC;";
$resultat = SQL_SELECT_ROWS($requete);//On exécute la requête
$nbResultat = count($resultat); //On récupère le nombre de résultat
if($nbResultat==1)
{
//Si aucun résultat n'a été trouvé, on prévient l'utilisateur :
echo 'Aucun résultat n\'a été trouvé !';
}
else
{
$contact = array();
echo ("<form><select name='selectResultat' onChange="javascript:afficheContacts(this.options[this.selectedIndex].value,'$contact')"><option value='#'>Entreprise : </option>");
for($i=1 ; $i<$nbResultat ; $i++)
{
echo '<option value="'.$resultat[$i][0].'">'.$resultat[$i][1].'</option>';
$reqContact = "SELECT c.idContact,c.nomContact FROM devis_contact c inner join devis_entiteContact ec on c.idContact=ec.idContact WHERE ec.idEntite=".$resultat[$i][0]." ORDER BY nomContact ASC;";
}
$contact[$resultat[$i][0]] = SQL_SELECT_ROWS($reqContact); //On exécute la requête
}
echo "</select>";
}
Bon ben le problème c'est le paramètre rouge qui est donné à la fonction javascript (le premier marche bien c'est ok).
Si je passe $contact (le tableau entier donc) comme ci-dessus, et que je fais alert("Nombre d'élements : " + contactsLies.length); dans la fonction javascript(contactLies c'est $contact).Il me dis qu'il y a 5 élément, quand je les affiche ça met met A,R,R,A,Y.
Si je mets juste $contact (sans l'entourer de '), il me dis que y'a un élément, et quand j'essaye de l'afficher, il me met undefined.
Si je lui donne un bon indice directement ('$contact[27]'), il me dit qu'il y a 0 élément.
Enfin bref, je vois pas comment lui donner mon tableau là.
cs_chamallow
Messages postés363Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention29 janvier 20071 9 juin 2006 à 08:41
Bon ben j'essaye de le transformer en tableau javascript (j'ai essayé plusieurs façons trouvées), mais toujours rien !! je commence à me tirer les cheveux lol
CodingAl
Messages postés1Date d'inscriptionlundi 12 juin 2006StatutMembreDernière intervention12 juin 2006 12 juin 2006 à 09:35
Hello
Je viens d'avoir ce problème en voulant passé un tableau déclaré dans un fichier Asp et je voulais l'envoyer dans une fonction JavaScipt dans un fichier externe. Voilà comment j'ai fait (je te laisse traduire en PHP après):
<% For j = 0 To UBound(paramArry) - 1 %>
f1("<%=myArray(j)%>");
<% Next %>
Où les balises % sont la partie Asp et f1 la fonction JavaScript.