[RESOLU] Affichage listes déroulantes liées

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Affichage listes déroulantes liées

Re: [RESOLU] Affichage listes déroulantes liées

par Cyrano » 22 mars 2013, 15:59

Je sais pas si ça va être très reposant, je vais passer le weekend sur du PHP et le framework Hoa... bien des nouveautés techniques en perspective ;)

@+

Re: Affichage listes déroulantes liées

par [Compte supprime] » 22 mars 2013, 15:56

Et bah écoute, je sais pas comment te remercier ! Mieux qu'un support informatique :mrgreen: Merci beaucoup !! :wink:

Je crois que tu as bien mérité que je passe ce sujet en Vert ! =D>

PS: Je vais sûrement rouvrir un topic plus tard pour adapter le code pour avoir une option supplémentaire, je vais d'abord tenter de mon côté, je pense que c'est moins compliqué... Et puis, faut bien que je te laisse te reposer ! :mrgreen:

Re: Affichage listes déroulantes liées

par Cyrano » 22 mars 2013, 15:53

C'est tout à fait correct effectivement :)

Résolu ?

Re: Affichage listes déroulantes liées

par [Compte supprime] » 22 mars 2013, 15:51

Bon j'avais une autre erreur avec

[javascript]form_d += '<option value="' + tab.ips[j] + '">' + tab.ips[j] + '</option>\n';[/javascript]

Je l'ai remplacé par ça :

[javascript]form_d += '<option value="' + ips[j] + '">' + ips[j] + '</option>\n';[/javascript]

Et ça fonctionne !!! =D> c'est propre cette modif ?

Re: Affichage listes déroulantes liées

par Cyrano » 22 mars 2013, 15:45

Ok, c'est bon, c'est moi qui ai fait une erreur, mais tu pouvais la voir aussi.

Modifie la fonction en mettant :
[javascript] if (tab[r].reseau.id == idr)
{
/* Trouvé : on est dans le réseau sélectionné, on récupère la liste de ces adresses IP */
ips = tab[r].ips
}[/javascript]
Au lieu de
[javascript] if (tab[r].reseau.id == idr)
{
/* Trouvé : on est dans le réseau sélectionné, on récupère la liste de ces adresses IP */
ips = tab[r].reseau.ips
}[/javascript]

Re: Affichage listes déroulantes liées

par [Compte supprime] » 22 mars 2013, 15:40

[javascript]<script type="text/javascript">
var tab = [{"reseau":{"id":"30","nom":"BLABLA"},"ips":["192.168.56.1","192.168.56.2","192.168.56.3","192.168.56.4","192.168.56.5","192.168.56.6","192.168.56.7","192.168.56.8","192.168.56.10","192.168.56.11","192.168.56.12","192.168.56.14","192.168.56.15","192.168.56.16","192.168.56.17","192.168.56.18","192.168.56.19","192.168.56.20","192.168.56.21","192.168.56.22","192.168.56.23","192.168.56.24","192.168.56.25","192.168.56.26","192.168.56.27","192.168.56.28","192.168.56.29","192.168.56.30","192.168.56.31","192.168.56.32","192.168.56.33","192.168.56.34","192.168.56.35","192.168.56.36","192.168.56.37","192.168.56.38","192.168.56.39","192.168.56.40","192.168.56.41","192.168.56.42","192.168.56.43","192.168.56.44","192.168.56.45","192.168.56.46","192.168.56.47","192.168.56.48","192.168.56.49","192.168.56.50","192.168.56.51","192.168.56.52","192.168.56.53","192.168.56.54","192.168.56.55","192.168.56.56","192.168.56.57","192.168.56.58","192.168.56.59","192.168.56.60","192.168.56.61","192.168.56.62","192.168.56.63","192.168.56.64","192.168.56.65","192.168.56.66","192.168.56.67","192.168.56.68","192.168.56.69","192.168.56.70","192.168.56.71","192.168.56.72","192.168.56.73","192.168.56.74","192.168.56.75","192.168.56.76","192.168.56.77","192.168.56.78","192.168.56.79","192.168.56.80","192.168.56.81","192.168.56.82","192.168.56.83","192.168.56.84","192.168.56.85","192.168.56.86","192.168.56.87","192.168.56.88","192.168.56.89","192.168.56.90","192.168.56.91","192.168.56.92","192.168.56.93","192.168.56.94","192.168.56.95","192.168.56.96","192.168.56.97","192.168.56.98","192.168.56.99","192.168.56.100","192.168.56.101","192.168.56.102","192.168.56.103","192.168.56.104","192.168.56.105","192.168.56.106","192.168.56.107","192.168.56.108","192.168.56.109","192.168.56.110","192.168.56.111","192.168.56.112","192.168.56.113","192.168.56.114","192.168.56.115","192.168.56.116","192.168.56.117","192.168.56.118","192.168.56.119","192.168.56.120","192.168.56.121","192.168.56.122","192.168.56.123","192.168.56.124","192.168.56.125","192.168.56.126","192.168.56.127","192.168.56.128","192.168.56.129","192.168.56.130","192.168.56.131","192.168.56.132","192.168.56.133","192.168.56.134","192.168.56.135","192.168.56.136","192.168.56.137","192.168.56.138","192.168.56.139","192.168.56.140","192.168.56.141","192.168.56.142","192.168.56.143","192.168.56.144","192.168.56.145","192.168.56.146","192.168.56.147","192.168.56.148","192.168.56.149","192.168.56.150","192.168.56.151","192.168.56.152","192.168.56.153","192.168.56.154","192.168.56.155","192.168.56.156","192.168.56.157","192.168.56.158","192.168.56.159","192.168.56.160","192.168.56.161","192.168.56.162","192.168.56.163","192.168.56.164","192.168.56.165","192.168.56.166","192.168.56.167","192.168.56.168","192.168.56.169","192.168.56.170","192.168.56.171","192.168.56.172","192.168.56.173","192.168.56.174","192.168.56.175","192.168.56.176","192.168.56.177","192.168.56.178","192.168.56.179","192.168.56.180","192.168.56.181","192.168.56.182","192.168.56.183","192.168.56.184","192.168.56.185","192.168.56.186","192.168.56.187","192.168.56.188","192.168.56.189","192.168.56.190","192.168.56.191","192.168.56.192","192.168.56.193","192.168.56.194","192.168.56.195","192.168.56.196","192.168.56.197","192.168.56.198","192.168.56.199","192.168.56.200","192.168.56.201","192.168.56.202","192.168.56.203","192.168.56.204","192.168.56.205","192.168.56.206","192.168.56.207","192.168.56.208","192.168.56.209","192.168.56.210","192.168.56.211","192.168.56.212","192.168.56.213","192.168.56.214","192.168.56.215","192.168.56.216","192.168.56.217","192.168.56.218","192.168.56.219","192.168.56.220","192.168.56.221","192.168.56.222","192.168.56.223","192.168.56.224","192.168.56.225","192.168.56.226","192.168.56.227","192.168.56.228","192.168.56.229","192.168.56.230","192.168.56.231","192.168.56.232","192.168.56.233","192.168.56.234","192.168.56.235","192.168.56.236","192.168.56.237","192.168.56.238","192.168.56.239","192.168.56.240","192.168.56.241","192.168.56.242","192.168.56.243","192.168.56.244","192.168.56.245","192.168.56.246","192.168.56.247","192.168.56.248","192.168.56.249","192.168.56.250","192.168.56.251","192.168.56.252","192.168.56.253","192.168.56.254"]},{"reseau":{"id":"35","nom":"test897"},"ips":["192.168.79.1","192.168.79.2","192.168.79.4","192.168.79.5","192.168.79.6","192.168.79.7","192.168.79.8","192.168.79.9","192.168.79.10","192.168.79.12","192.168.79.13","192.168.79.14","192.168.79.15","192.168.79.16","192.168.79.17","192.168.79.18","192.168.79.19","192.168.79.20","192.168.79.21","192.168.79.22","192.168.79.23","192.168.79.24","192.168.79.25","192.168.79.26","192.168.79.27","192.168.79.28","192.168.79.29","192.168.79.30","192.168.79.31","192.168.79.32","192.168.79.33","192.168.79.34","192.168.79.35","192.168.79.36","192.168.79.37","192.168.79.38","192.168.79.39","192.168.79.40","192.168.79.41","192.168.79.42","192.168.79.43","192.168.79.44","192.168.79.45","192.168.79.46","192.168.79.47","192.168.79.48","192.168.79.49","192.168.79.50","192.168.79.51","192.168.79.52","192.168.79.53","192.168.79.54","192.168.79.55","192.168.79.56","192.168.79.57","192.168.79.58","192.168.79.59","192.168.79.60","192.168.79.61","192.168.79.62","192.168.79.63","192.168.79.64","192.168.79.65","192.168.79.66","192.168.79.67","192.168.79.68","192.168.79.69","192.168.79.70","192.168.79.71","192.168.79.72","192.168.79.73","192.168.79.74","192.168.79.75","192.168.79.76","192.168.79.77","192.168.79.78","192.168.79.79","192.168.79.80","192.168.79.81","192.168.79.82","192.168.79.83","192.168.79.84","192.168.79.85","192.168.79.86","192.168.79.87","192.168.79.88","192.168.79.89","192.168.79.90","192.168.79.91","192.168.79.92","192.168.79.93","192.168.79.94","192.168.79.95","192.168.79.96","192.168.79.97","192.168.79.98","192.168.79.99","192.168.79.100","192.168.79.101","192.168.79.102","192.168.79.103","192.168.79.104","192.168.79.105","192.168.79.106","192.168.79.107","192.168.79.108","192.168.79.109","192.168.79.110","192.168.79.111","192.168.79.112","192.168.79.113","192.168.79.114","192.168.79.115","192.168.79.116","192.168.79.117","192.168.79.118","192.168.79.119","192.168.79.120","192.168.79.121","192.168.79.122","192.168.79.123","192.168.79.124","192.168.79.125","192.168.79.126","192.168.79.127","192.168.79.128","192.168.79.129","192.168.79.130","192.168.79.131","192.168.79.132","192.168.79.133","192.168.79.134","192.168.79.135","192.168.79.136","192.168.79.137","192.168.79.138","192.168.79.139","192.168.79.140","192.168.79.141","192.168.79.142","192.168.79.143","192.168.79.144","192.168.79.145","192.168.79.146","192.168.79.147","192.168.79.148","192.168.79.149","192.168.79.150","192.168.79.151","192.168.79.152","192.168.79.153","192.168.79.154","192.168.79.155","192.168.79.156","192.168.79.157","192.168.79.158","192.168.79.159","192.168.79.160","192.168.79.161","192.168.79.162","192.168.79.163","192.168.79.164","192.168.79.165","192.168.79.166","192.168.79.167","192.168.79.168","192.168.79.169","192.168.79.170","192.168.79.171","192.168.79.172","192.168.79.173","192.168.79.174","192.168.79.175","192.168.79.176","192.168.79.177","192.168.79.178","192.168.79.179","192.168.79.180","192.168.79.181","192.168.79.182","192.168.79.183","192.168.79.184","192.168.79.185","192.168.79.186","192.168.79.187","192.168.79.188","192.168.79.189","192.168.79.190","192.168.79.191","192.168.79.192","192.168.79.193","192.168.79.194","192.168.79.195","192.168.79.196","192.168.79.197","192.168.79.198","192.168.79.199","192.168.79.200","192.168.79.201","192.168.79.202","192.168.79.203","192.168.79.204","192.168.79.205","192.168.79.206","192.168.79.207","192.168.79.208","192.168.79.209","192.168.79.210","192.168.79.211","192.168.79.212","192.168.79.213","192.168.79.214","192.168.79.215","192.168.79.216","192.168.79.217","192.168.79.218","192.168.79.219","192.168.79.220","192.168.79.221","192.168.79.222","192.168.79.223","192.168.79.224","192.168.79.225","192.168.79.226","192.168.79.227","192.168.79.228","192.168.79.229","192.168.79.230","192.168.79.231","192.168.79.232","192.168.79.233","192.168.79.234","192.168.79.235","192.168.79.236","192.168.79.237","192.168.79.238","192.168.79.239","192.168.79.240","192.168.79.241","192.168.79.242","192.168.79.243","192.168.79.244","192.168.79.245","192.168.79.246","192.168.79.247","192.168.79.248","192.168.79.249","192.168.79.250","192.168.79.251","192.168.79.252","192.168.79.253","192.168.79.254"]}];
</script>[/javascript]

Je cherche des infos pour bien comprendre la boucle "For In", tu as un site qui traite de ça ? Sur le net, c'est toujours For avec i = 0 et i<10... Du coup, pour la compréhension, ça m'aide pas vraiment sur le script.

C'est bon, j'en ai trouvé un http://apprendre-creer-sites.com/js/bou ... script.php, ça détaille pas vraiment mais c'est toujours ça !

Re: Affichage listes déroulantes liées

par Cyrano » 22 mars 2013, 15:36

Si tu affiches la source de la page, tu devrais normalement voir la partie script avec la déclaration var tab = ...etc...; : copie-colle cette partie, j'ai un petit doute.

Re: Affichage listes déroulantes liées

par [Compte supprime] » 22 mars 2013, 15:14

C'est le [r] qui me pose souci, il sert juste à pouvoir boucler avec le For ?

Sinon tab représente le tableau dans son ensemble, reseau est le 1er sous-tableau (IPs est le 2ème) et ID représente l'ID du réseau.

Quand je fais un console.info(tab[r].reseau.id == idr), il me renvoi bien les 2 réseaux 30 et 35.
Quand je fais un console.info(ips);, il me renvoi toujours undefined. La boucle if ne parvient jamais à être 30==30 donc la variable n'est jamais initialisé.
Le console.info(idr); me renvoi bien un 30 !

Vu que le script boucle 2 fois, y'a pourtant bien un moment où 30==30 vu que firebug m'envoit bien ça... Dans ce cas, ça veut dire que le problème vient de cette ligne : ips = tab[r].reseau.ips ? Sachant que c'est une liste, il faut peut-être ajouter qqchose ?

Re: Affichage listes déroulantes liées

par Cyrano » 22 mars 2013, 15:06

Ok, pas mal, mais sois plus précis : décortique la partie « tab[r].reseau.id » et dis-moi à quoi correspond chacun des éléments

Re: Affichage listes déroulantes liées

par [Compte supprime] » 22 mars 2013, 15:04

Bon y'avait un autre souci, une boucle if qui s'était rajouté... J'arrive toujours pas à comprendre comment !

Alors pour moi, idr correspond au numéro de réseau sélectionné, c'est à dire 30 dans l'exemple.

Ce if va aller rechercher dans le tableau ce numéro pour ensuite envoyer la liste des IP correspondante. Il contrôle les entrées une par un grâce à la boucle For.

Re: Affichage listes déroulantes liées

par Cyrano » 22 mars 2013, 14:59

Mouais, on va procéder autrement, sinon, on y est jusqu'à Noël :

Dis-moi comment tu traduirais ceci en français :
[javascript]if (tab[r].reseau.id == idr)[/javascript]
Explique-le avec tes propres mots en m'expliquant ce qui correspond à quoi par rapport à quoi d'autre.

Re: Affichage listes déroulantes liées

par [Compte supprime] » 22 mars 2013, 14:57

J'ai ajouté un console.info(tab[r].reseau.id); , il me renvoi :

Code : Tout sélectionner

30 changeIP.js (ligne 16) 35 changeIP.js (ligne 16)
C'est normal d'avoir un double if sur le même critère ?

console.info(ips); est undefined dans la boucle suivante :

[javascript]if (tab[r].reseau.id == idr) /* Trouvé : on est dans le réseau sélectionné, on récupère la liste de ces adresses IP */
ips = tab[r].reseau.ips
console.info(ips);[/javascript]

Re: Affichage listes déroulantes liées

par Cyrano » 22 mars 2013, 14:42

Un truc doit m'échapper, mais il faut aussi reconnaitre que tu ne m'aides pas des masses.

AS-tu compris l'intérêt de la console Firebug ? Quand tu as une erreur de variable indéfinie, le console.info ou console.log peut te permettre de pointer certains éléments pour en afficher la valeur. S'il y a une erreur, tu remontes un peu dans le code et tu tentes de déterminer à quel endroit il aurait pu y avoir une erreur et tu fais afficher tel ou tel élément, sachant ce qu'il devrait afficher pour vérifier ce qu'il contient réellement. De cette manière, tu remontes jusqu'à l'erreur... et tu la corriges.

Re: Affichage listes déroulantes liées

par [Compte supprime] » 22 mars 2013, 14:36

J'ai vidé le cache, toujours le même souci.

Le contrôle pour ips renvoi "undefined" donc ça explique l'erreur. Elle viendrait de là ?

[javascript]if (tab[r].reseau.id == idr)
{
if (tab[r].reseau.id == idr) /* Trouvé : on est dans le réseau sélectionné, on récupère la liste de ces adresses IP */
ips = tab[r].reseau.ips
}[/javascript]

Re: Affichage listes déroulantes liées

par Cyrano » 22 mars 2013, 14:24

Ça, ce n'est absolument pas normal.

Option possible, le cache du navigateur a gardé l'ancien code : vide ton cache navigateur et teste à nouveau.

Dans la fonction, ajoute quand même un truc pour vérifier :
[javascript]//...
/* Si on a trouvé une liste d'adresses IP */
if (ips != false)
{
console.info(ips);
/* On compte les ip de ce réseau */
var nbd = ips.length;
//...[/javascript]