[RESOLU] Affichage listes déroulantes liées

Mammouth du PHP | 19672 Messages

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

[Compte supprime]
Invité n'ayant pas de compte PHPfrance

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]

Mammouth du PHP | 19672 Messages

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

[Compte supprime]
Invité n'ayant pas de compte PHPfrance

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.

Mammouth du PHP | 19672 Messages

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

[Compte supprime]
Invité n'ayant pas de compte PHPfrance

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 ?

Mammouth du PHP | 19672 Messages

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

[Compte supprime]
Invité n'ayant pas de compte PHPfrance

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 !

Mammouth du PHP | 19672 Messages

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]
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

[Compte supprime]
Invité n'ayant pas de compte PHPfrance

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 ?

Mammouth du PHP | 19672 Messages

22 mars 2013, 15:53

C'est tout à fait correct effectivement :)

Résolu ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

[Compte supprime]
Invité n'ayant pas de compte PHPfrance

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:

Mammouth du PHP | 19672 Messages

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 ;)

@+
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: