[RESOLU] Affichage listes déroulantes liées

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

22 mars 2013, 09:54

Me revoilà, tout frais, motivé, plein d'énergie ! :mrgreen:

Et là, j'arrive sur var #-o J'avais oublié à quel point j'aimais pas JS !!!! Et la raison est simple et valable... C'est tellement rageant de pas le maîtriser quand tu vois la puissance du truc... :mrgreen:

Bon allez, sans déconner, j'ai bien copié
[javascript]console.info(tab);
console.info(ips);[/javascript]

Et ça nous donne pour le 1er :

Code : Tout sélectionner

a:24:{i:0;a:2:{s:6:"reseau";a:2:{s:2:"id";s:2:"30";s:3:"nom";s:6:"BLABLA";}s:3:"ips";a:254:{i:0;s:12:"192.168.56.1";i:1;s:12:"192.168.56.2";i:2;s:12:"192.168.56.3";i:3;s:12:"192.168.56.4";i:4;s:12:"192.168.56.5";i:5;s:12:"192.168.56.6";i:6;s:12:"192.168.56.7";i:7;s:12:"192.168.56.8";i:8;s:12:"192.168.56.9";i:9;s:13:"192.168.56.10";i:10;s:13:"192.168.56.11";i:11;s:13:"192.168.56.12";i:12;s:13:"192.168.56.13";i:13;s:13:"192.168.56.14";i:14;s:13:"192.168.56.15";i:15;s:13:"192.168.56.16";i:16;s:13:"192.168.56.17";i:17;s:13:"192.168.56.18";i:18;s:13:"192.168.56.19";i:19;s:13:"192.168.56.20[...]
Et pour le second, ça nous donne 30, à savoir le numéro de réseau !

Mammouth du PHP | 19672 Messages

22 mars 2013, 10:02

Donnée incomplète, je ne peux rien faire avec ça.... je me doute que la valeur est longue, mais il manque forcément quelque chose, les accolades n'ont pas toutes leur paire, donc pour le formater de façon que ce soit lisible est plutôt compliqué...
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, 10:19

Désolé, le code entier, j'ai viré des réseaux pour que ce soit plus simple, j'en ai laissé 2.

Code : Tout sélectionner

a:2:{i:0;a:2:{s:6:"reseau";a:2:{s:2:"id";s:2:"30";s:3:"nom";s:6:"BLABLA";}s:3:"ips";a:252:{i:0;s:12:"192.168.56.1";i:1;s:12:"192.168.56.2";i:2;s:12:"192.168.56.3";i:3;s:12:"192.168.56.4";i:4;s:12:"192.168.56.5";i:5;s:12:"192.168.56.6";i:6;s:12:"192.168.56.7";i:7;s:12:"192.168.56.8";i:8;s:13:"192.168.56.10";i:9;s:13:"192.168.56.11";i:10;s:13:"192.168.56.12";i:11;s:13:"192.168.56.14";i:12;s:13:"192.168.56.15";i:13;s:13:"192.168.56.16";i:14;s:13:"192.168.56.17";i:15;s:13:"192.168.56.18";i:16;s:13:"192.168.56.19";i:17;s:13:"192.168.56.20";i:18;s:13:"192.168.56.21";i:19;s:13:"192.168.56.22";i:20;s:13:"192.168.56.23";i:21;s:13:"192.168.56.24";i:22;s:13:"192.168.56.25";i:23;s:13:"192.168.56.26";i:24;s:13:"192.168.56.27";i:25;s:13:"192.168.56.28";i:26;s:13:"192.168.56.29";i:27;s:13:"192.168.56.30";i:28;s:13:"192.168.56.31";i:29;s:13:"192.168.56.32";i:30;s:13:"192.168.56.33";i:31;s:13:"192.168.56.34";i:32;s:13:"192.168.56.35";i:33;s:13:"192.168.56.36";i:34;s:13:"192.168.56.37";i:35;s:13:"192.168.56.38";i:36;s:13:"192.168.56.39";i:37;s:13:"192.168.56.40";i:38;s:13:"192.168.56.41";i:39;s:13:"192.168.56.42";i:40;s:13:"192.168.56.43";i:41;s:13:"192.168.56.44";i:42;s:13:"192.168.56.45";i:43;s:13:"192.168.56.46";i:44;s:13:"192.168.56.47";i:45;s:13:"192.168.56.48";i:46;s:13:"192.168.56.49";i:47;s:13:"192.168.56.50";i:48;s:13:"192.168.56.51";i:49;s:13:"192.168.56.52";i:50;s:13:"192.168.56.53";i:51;s:13:"192.168.56.54";i:52;s:13:"192.168.56.55";i:53;s:13:"192.168.56.56";i:54;s:13:"192.168.56.57";i:55;s:13:"192.168.56.58";i:56;s:13:"192.168.56.59";i:57;s:13:"192.168.56.60";i:58;s:13:"192.168.56.61";i:59;s:13:"192.168.56.62";i:60;s:13:"192.168.56.63";i:61;s:13:"192.168.56.64";i:62;s:13:"192.168.56.65";i:63;s:13:"192.168.56.66";i:64;s:13:"192.168.56.67";i:65;s:13:"192.168.56.68";i:66;s:13:"192.168.56.69";i:67;s:13:"192.168.56.70";i:68;s:13:"192.168.56.71";i:69;s:13:"192.168.56.72";i:70;s:13:"192.168.56.73";i:71;s:13:"192.168.56.74";i:72;s:13:"192.168.56.75";i:73;s:13:"192.168.56.76";i:74;s:13:"192.168.56.77";i:75;s:13:"192.168.56.78";i:76;s:13:"192.168.56.79";i:77;s:13:"192.168.56.80";i:78;s:13:"192.168.56.81";i:79;s:13:"192.168.56.82";i:80;s:13:"192.168.56.83";i:81;s:13:"192.168.56.84";i:82;s:13:"192.168.56.85";i:83;s:13:"192.168.56.86";i:84;s:13:"192.168.56.87";i:85;s:13:"192.168.56.88";i:86;s:13:"192.168.56.89";i:87;s:13:"192.168.56.90";i:88;s:13:"192.168.56.91";i:89;s:13:"192.168.56.92";i:90;s:13:"192.168.56.93";i:91;s:13:"192.168.56.94";i:92;s:13:"192.168.56.95";i:93;s:13:"192.168.56.96";i:94;s:13:"192.168.56.97";i:95;s:13:"192.168.56.98";i:96;s:13:"192.168.56.99";i:97;s:14:"192.168.56.100";i:98;s:14:"192.168.56.101";i:99;s:14:"192.168.56.102";i:100;s:14:"192.168.56.103";i:101;s:14:"192.168.56.104";i:102;s:14:"192.168.56.105";i:103;s:14:"192.168.56.106";i:104;s:14:"192.168.56.107";i:105;s:14:"192.168.56.108";i:106;s:14:"192.168.56.109";i:107;s:14:"192.168.56.110";i:108;s:14:"192.168.56.111";i:109;s:14:"192.168.56.112";i:110;s:14:"192.168.56.113";i:111;s:14:"192.168.56.114";i:112;s:14:"192.168.56.115";i:113;s:14:"192.168.56.116";i:114;s:14:"192.168.56.117";i:115;s:14:"192.168.56.118";i:116;s:14:"192.168.56.119";i:117;s:14:"192.168.56.120";i:118;s:14:"192.168.56.121";i:119;s:14:"192.168.56.122";i:120;s:14:"192.168.56.123";i:121;s:14:"192.168.56.124";i:122;s:14:"192.168.56.125";i:123;s:14:"192.168.56.126";i:124;s:14:"192.168.56.127";i:125;s:14:"192.168.56.128";i:126;s:14:"192.168.56.129";i:127;s:14:"192.168.56.130";i:128;s:14:"192.168.56.131";i:129;s:14:"192.168.56.132";i:130;s:14:"192.168.56.133";i:131;s:14:"192.168.56.134";i:132;s:14:"192.168.56.135";i:133;s:14:"192.168.56.136";i:134;s:14:"192.168.56.137";i:135;s:14:"192.168.56.138";i:136;s:14:"192.168.56.139";i:137;s:14:"192.168.56.140";i:138;s:14:"192.168.56.141";i:139;s:14:"192.168.56.142";i:140;s:14:"192.168.56.143";i:141;s:14:"192.168.56.144";i:142;s:14:"192.168.56.145";i:143;s:14:"192.168.56.146";i:144;s:14:"192.168.56.147";i:145;s:14:"192.168.56.148";i:146;s:14:"192.168.56.149";i:147;s:14:"192.168.56.150";i:148;s:14:"192.168.56.151";i:149;s:14:"192.168.56.152";i:150;s:14:"192.168.56.153";i:151;s:14:"192.168.56.154";i:152;s:14:"192.168.56.155";i:153;s:14:"192.168.56.156";i:154;s:14:"192.168.56.157";i:155;s:14:"192.168.56.158";i:156;s:14:"192.168.56.159";i:157;s:14:"192.168.56.160";i:158;s:14:"192.168.56.161";i:159;s:14:"192.168.56.162";i:160;s:14:"192.168.56.163";i:161;s:14:"192.168.56.164";i:162;s:14:"192.168.56.165";i:163;s:14:"192.168.56.166";i:164;s:14:"192.168.56.167";i:165;s:14:"192.168.56.168";i:166;s:14:"192.168.56.169";i:167;s:14:"192.168.56.170";i:168;s:14:"192.168.56.171";i:169;s:14:"192.168.56.172";i:170;s:14:"192.168.56.173";i:171;s:14:"192.168.56.174";i:172;s:14:"192.168.56.175";i:173;s:14:"192.168.56.176";i:174;s:14:"192.168.56.177";i:175;s:14:"192.168.56.178";i:176;s:14:"192.168.56.179";i:177;s:14:"192.168.56.180";i:178;s:14:"192.168.56.181";i:179;s:14:"192.168.56.182";i:180;s:14:"192.168.56.183";i:181;s:14:"192.168.56.184";i:182;s:14:"192.168.56.185";i:183;s:14:"192.168.56.186";i:184;s:14:"192.168.56.187";i:185;s:14:"192.168.56.188";i:186;s:14:"192.168.56.189";i:187;s:14:"192.168.56.190";i:188;s:14:"192.168.56.191";i:189;s:14:"192.168.56.192";i:190;s:14:"192.168.56.193";i:191;s:14:"192.168.56.194";i:192;s:14:"192.168.56.195";i:193;s:14:"192.168.56.196";i:194;s:14:"192.168.56.197";i:195;s:14:"192.168.56.198";i:196;s:14:"192.168.56.199";i:197;s:14:"192.168.56.200";i:198;s:14:"192.168.56.201";i:199;s:14:"192.168.56.202";i:200;s:14:"192.168.56.203";i:201;s:14:"192.168.56.204";i:202;s:14:"192.168.56.205";i:203;s:14:"192.168.56.206";i:204;s:14:"192.168.56.207";i:205;s:14:"192.168.56.208";i:206;s:14:"192.168.56.209";i:207;s:14:"192.168.56.210";i:208;s:14:"192.168.56.211";i:209;s:14:"192.168.56.212";i:210;s:14:"192.168.56.213";i:211;s:14:"192.168.56.214";i:212;s:14:"192.168.56.215";i:213;s:14:"192.168.56.216";i:214;s:14:"192.168.56.217";i:215;s:14:"192.168.56.218";i:216;s:14:"192.168.56.219";i:217;s:14:"192.168.56.220";i:218;s:14:"192.168.56.221";i:219;s:14:"192.168.56.222";i:220;s:14:"192.168.56.223";i:221;s:14:"192.168.56.224";i:222;s:14:"192.168.56.225";i:223;s:14:"192.168.56.226";i:224;s:14:"192.168.56.227";i:225;s:14:"192.168.56.228";i:226;s:14:"192.168.56.229";i:227;s:14:"192.168.56.230";i:228;s:14:"192.168.56.231";i:229;s:14:"192.168.56.232";i:230;s:14:"192.168.56.233";i:231;s:14:"192.168.56.234";i:232;s:14:"192.168.56.235";i:233;s:14:"192.168.56.236";i:234;s:14:"192.168.56.237";i:235;s:14:"192.168.56.238";i:236;s:14:"192.168.56.239";i:237;s:14:"192.168.56.240";i:238;s:14:"192.168.56.241";i:239;s:14:"192.168.56.242";i:240;s:14:"192.168.56.243";i:241;s:14:"192.168.56.244";i:242;s:14:"192.168.56.245";i:243;s:14:"192.168.56.246";i:244;s:14:"192.168.56.247";i:245;s:14:"192.168.56.248";i:246;s:14:"192.168.56.249";i:247;s:14:"192.168.56.250";i:248;s:14:"192.168.56.251";i:249;s:14:"192.168.56.252";i:250;s:14:"192.168.56.253";i:251;s:14:"192.168.56.254";}}i:1;a:2:{s:6:"reseau";a:2:{s:2:"id";s:2:"35";s:3:"nom";s:7:"test897";}s:3:"ips";a:252:{i:0;s:12:"192.168.79.1";i:1;s:12:"192.168.79.2";i:2;s:12:"192.168.79.4";i:3;s:12:"192.168.79.5";i:4;s:12:"192.168.79.6";i:5;s:12:"192.168.79.7";i:6;s:12:"192.168.79.8";i:7;s:12:"192.168.79.9";i:8;s:13:"192.168.79.10";i:9;s:13:"192.168.79.12";i:10;s:13:"192.168.79.13";i:11;s:13:"192.168.79.14";i:12;s:13:"192.168.79.15";i:13;s:13:"192.168.79.16";i:14;s:13:"192.168.79.17";i:15;s:13:"192.168.79.18";i:16;s:13:"192.168.79.19";i:17;s:13:"192.168.79.20";i:18;s:13:"192.168.79.21";i:19;s:13:"192.168.79.22";i:20;s:13:"192.168.79.23";i:21;s:13:"192.168.79.24";i:22;s:13:"192.168.79.25";i:23;s:13:"192.168.79.26";i:24;s:13:"192.168.79.27";i:25;s:13:"192.168.79.28";i:26;s:13:"192.168.79.29";i:27;s:13:"192.168.79.30";i:28;s:13:"192.168.79.31";i:29;s:13:"192.168.79.32";i:30;s:13:"192.168.79.33";i:31;s:13:"192.168.79.34";i:32;s:13:"192.168.79.35";i:33;s:13:"192.168.79.36";i:34;s:13:"192.168.79.37";i:35;s:13:"192.168.79.38";i:36;s:13:"192.168.79.39";i:37;s:13:"192.168.79.40";i:38;s:13:"192.168.79.41";i:39;s:13:"192.168.79.42";i:40;s:13:"192.168.79.43";i:41;s:13:"192.168.79.44";i:42;s:13:"192.168.79.45";i:43;s:13:"192.168.79.46";i:44;s:13:"192.168.79.47";i:45;s:13:"192.168.79.48";i:46;s:13:"192.168.79.49";i:47;s:13:"192.168.79.50";i:48;s:13:"192.168.79.51";i:49;s:13:"192.168.79.52";i:50;s:13:"192.168.79.53";i:51;s:13:"192.168.79.54";i:52;s:13:"192.168.79.55";i:53;s:13:"192.168.79.56";i:54;s:13:"192.168.79.57";i:55;s:13:"192.168.79.58";i:56;s:13:"192.168.79.59";i:57;s:13:"192.168.79.60";i:58;s:13:"192.168.79.61";i:59;s:13:"192.168.79.62";i:60;s:13:"192.168.79.63";i:61;s:13:"192.168.79.64";i:62;s:13:"192.168.79.65";i:63;s:13:"192.168.79.66";i:64;s:13:"192.168.79.67";i:65;s:13:"192.168.79.68";i:66;s:13:"192.168.79.69";i:67;s:13:"192.168.79.70";i:68;s:13:"192.168.79.71";i:69;s:13:"192.168.79.72";i:70;s:13:"192.168.79.73";i:71;s:13:"192.168.79.74";i:72;s:13:"192.168.79.75";i:73;s:13:"192.168.79.76";i:74;s:13:"192.168.79.77";i:75;s:13:"192.168.79.78";i:76;s:13:"192.168.79.79";i:77;s:13:"192.168.79.80";i:78;s:13:"192.168.79.81";i:79;s:13:"192.168.79.82";i:80;s:13:"192.168.79.83";i:81;s:13:"192.168.79.84";i:82;s:13:"192.168.79.85";i:83;s:13:"192.168.79.86";i:84;s:13:"192.168.79.87";i:85;s:13:"192.168.79.88";i:86;s:13:"192.168.79.89";i:87;s:13:"192.168.79.90";i:88;s:13:"192.168.79.91";i:89;s:13:"192.168.79.92";i:90;s:13:"192.168.79.93";i:91;s:13:"192.168.79.94";i:92;s:13:"192.168.79.95";i:93;s:13:"192.168.79.96";i:94;s:13:"192.168.79.97";i:95;s:13:"192.168.79.98";i:96;s:13:"192.168.79.99";i:97;s:14:"192.168.79.100";i:98;s:14:"192.168.79.101";i:99;s:14:"192.168.79.102";i:100;s:14:"192.168.79.103";i:101;s:14:"192.168.79.104";i:102;s:14:"192.168.79.105";i:103;s:14:"192.168.79.106";i:104;s:14:"192.168.79.107";i:105;s:14:"192.168.79.108";i:106;s:14:"192.168.79.109";i:107;s:14:"192.168.79.110";i:108;s:14:"192.168.79.111";i:109;s:14:"192.168.79.112";i:110;s:14:"192.168.79.113";i:111;s:14:"192.168.79.114";i:112;s:14:"192.168.79.115";i:113;s:14:"192.168.79.116";i:114;s:14:"192.168.79.117";i:115;s:14:"192.168.79.118";i:116;s:14:"192.168.79.119";i:117;s:14:"192.168.79.120";i:118;s:14:"192.168.79.121";i:119;s:14:"192.168.79.122";i:120;s:14:"192.168.79.123";i:121;s:14:"192.168.79.124";i:122;s:14:"192.168.79.125";i:123;s:14:"192.168.79.126";i:124;s:14:"192.168.79.127";i:125;s:14:"192.168.79.128";i:126;s:14:"192.168.79.129";i:127;s:14:"192.168.79.130";i:128;s:14:"192.168.79.131";i:129;s:14:"192.168.79.132";i:130;s:14:"192.168.79.133";i:131;s:14:"192.168.79.134";i:132;s:14:"192.168.79.135";i:133;s:14:"192.168.79.136";i:134;s:14:"192.168.79.137";i:135;s:14:"192.168.79.138";i:136;s:14:"192.168.79.139";i:137;s:14:"192.168.79.140";i:138;s:14:"192.168.79.141";i:139;s:14:"192.168.79.142";i:140;s:14:"192.168.79.143";i:141;s:14:"192.168.79.144";i:142;s:14:"192.168.79.145";i:143;s:14:"192.168.79.146";i:144;s:14:"192.168.79.147";i:145;s:14:"192.168.79.148";i:146;s:14:"192.168.79.149";i:147;s:14:"192.168.79.150";i:148;s:14:"192.168.79.151";i:149;s:14:"192.168.79.152";i:150;s:14:"192.168.79.153";i:151;s:14:"192.168.79.154";i:152;s:14:"192.168.79.155";i:153;s:14:"192.168.79.156";i:154;s:14:"192.168.79.157";i:155;s:14:"192.168.79.158";i:156;s:14:"192.168.79.159";i:157;s:14:"192.168.79.160";i:158;s:14:"192.168.79.161";i:159;s:14:"192.168.79.162";i:160;s:14:"192.168.79.163";i:161;s:14:"192.168.79.164";i:162;s:14:"192.168.79.165";i:163;s:14:"192.168.79.166";i:164;s:14:"192.168.79.167";i:165;s:14:"192.168.79.168";i:166;s:14:"192.168.79.169";i:167;s:14:"192.168.79.170";i:168;s:14:"192.168.79.171";i:169;s:14:"192.168.79.172";i:170;s:14:"192.168.79.173";i:171;s:14:"192.168.79.174";i:172;s:14:"192.168.79.175";i:173;s:14:"192.168.79.176";i:174;s:14:"192.168.79.177";i:175;s:14:"192.168.79.178";i:176;s:14:"192.168.79.179";i:177;s:14:"192.168.79.180";i:178;s:14:"192.168.79.181";i:179;s:14:"192.168.79.182";i:180;s:14:"192.168.79.183";i:181;s:14:"192.168.79.184";i:182;s:14:"192.168.79.185";i:183;s:14:"192.168.79.186";i:184;s:14:"192.168.79.187";i:185;s:14:"192.168.79.188";i:186;s:14:"192.168.79.189";i:187;s:14:"192.168.79.190";i:188;s:14:"192.168.79.191";i:189;s:14:"192.168.79.192";i:190;s:14:"192.168.79.193";i:191;s:14:"192.168.79.194";i:192;s:14:"192.168.79.195";i:193;s:14:"192.168.79.196";i:194;s:14:"192.168.79.197";i:195;s:14:"192.168.79.198";i:196;s:14:"192.168.79.199";i:197;s:14:"192.168.79.200";i:198;s:14:"192.168.79.201";i:199;s:14:"192.168.79.202";i:200;s:14:"192.168.79.203";i:201;s:14:"192.168.79.204";i:202;s:14:"192.168.79.205";i:203;s:14:"192.168.79.206";i:204;s:14:"192.168.79.207";i:205;s:14:"192.168.79.208";i:206;s:14:"192.168.79.209";i:207;s:14:"192.168.79.210";i:208;s:14:"192.168.79.211";i:209;s:14:"192.168.79.212";i:210;s:14:"192.168.79.213";i:211;s:14:"192.168.79.214";i:212;s:14:"192.168.79.215";i:213;s:14:"192.168.79.216";i:214;s:14:"192.168.79.217";i:215;s:14:"192.168.79.218";i:216;s:14:"192.168.79.219";i:217;s:14:"192.168.79.220";i:218;s:14:"192.168.79.221";i:219;s:14:"192.168.79.222";i:220;s:14:"192.168.79.223";i:221;s:14:"192.168.79.224";i:222;s:14:"192.168.79.225";i:223;s:14:"192.168.79.226";i:224;s:14:"192.168.79.227";i:225;s:14:"192.168.79.228";i:226;s:14:"192.168.79.229";i:227;s:14:"192.168.79.230";i:228;s:14:"192.168.79.231";i:229;s:14:"192.168.79.232";i:230;s:14:"192.168.79.233";i:231;s:14:"192.168.79.234";i:232;s:14:"192.168.79.235";i:233;s:14:"192.168.79.236";i:234;s:14:"192.168.79.237";i:235;s:14:"192.168.79.238";i:236;s:14:"192.168.79.239";i:237;s:14:"192.168.79.240";i:238;s:14:"192.168.79.241";i:239;s:14:"192.168.79.242";i:240;s:14:"192.168.79.243";i:241;s:14:"192.168.79.244";i:242;s:14:"192.168.79.245";i:243;s:14:"192.168.79.246";i:244;s:14:"192.168.79.247";i:245;s:14:"192.168.79.248";i:246;s:14:"192.168.79.249";i:247;s:14:"192.168.79.250";i:248;s:14:"192.168.79.251";i:249;s:14:"192.168.79.252";i:250;s:14:"192.168.79.253";i:251;s:14:"192.168.79.254";}}}

Mammouth du PHP | 19672 Messages

22 mars 2013, 11:09

Bon, après vérification, il y a quelque chose qui cloche, la console aurait du te présenter autre chose ressemblant à quelque chose comme ceci :

Code : Tout sélectionner

[Object { reseau={...}, ips=[10]}, Object { reseau={...}, ips=[10]}]
Est-ce que ta variable JavaScript « tab » est bien générée à partir de la fonction PHP json_encode($reseaux) ??
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, 12:01

Ci-joint, le code sur la page php :
 /* On sérialise le tableau obtenu pour traitement par JavaScript */
            $chaine = htmlspecialchars(serialize($reseaux), ENT_QUOTES);
            ?>
            <script type="text/javascript">
                var tab = <?php echo json_encode($chaine); ?>;
            </script>

Mammouth du PHP | 19672 Messages

22 mars 2013, 12:06

J'avais raté ce détail... passer en JSON une chaine déjà sérialisée, c'est pas terrible : remplace ce bout de code par :
/* On sérialise le tableau obtenu au format JSON pour traitement par JavaScript */
?>
            <script type="text/javascript">
                var tab = <?php echo json_encode($reseaux); ?>;
            </script>
En clair, on vire la création de la variable $chaine et on encode en JSON directement le tableau $reseaux
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, 12:09

Ok, du coup, ça donne ça maintenant :

Code : Tout sélectionner

[Object { reseau={...}, ips=[252]}, Object { reseau={...}, ips=[252]}]

Mammouth du PHP | 19672 Messages

22 mars 2013, 12:12

BIen, on avance.

Maintenant, il s'agit de récupérer la bonne liste d'adresses IP lorsque tu sélectionnes un réseau.
Pour l'instant, il se passe quoi ? AS-tu des messages d'erreur ?
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, 12:13

Tu avances, et je te suis derrière ! :mrgreen:

Pour l'instant, on retrouve ça :

Code : Tout sélectionner

TypeError: tab[ips] is undefined [Stopper sur une erreur] var nbd = tab[ips][0].length;

Mammouth du PHP | 19672 Messages

22 mars 2013, 12:33

Mouais, ben il faut que tu passes devant et je vais te pousser : commence par décortiquer la chronologie des évènements.
-1- Tu sélectionnes un réseau dans la liste :
-2- Un gestionnaire d'évènement intercepte ce changement et déclenche quelque chose : quoi ? Et de quelle manière ?

Et accessoirement, montre les parties pertinentes du code correspondant, ça facilitera les choses pour que je puisse t'indiquer éventuellement ce qui claoche, ce qui est faux ou tout autre élément important.

Note : attention, je n'aurai pas toute la journée, donc tâche d'être aussi pragmatique et précis si tu veux aboutir avant que je m'absente, je prends un train à 17h00 et je serai absent jusqu'à lundi.
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, 12:50

L'explication est très simple... :lol:

Quand je sélectionne un réseau, automatiquement, la liste déroulante des IP apparaît ! Bien entendu, cette liste correspond au réseau sélectionné. Au moment du choix du réseau, le tableau "tab" est envoyé avec le numéro de réseau.
onchange="changeIP(tab,this.value);">
, this.value, c'est
value="<?php echo $value['reseau']['id']; ?>"
Une fois qu'on à ça, on arrive sur le fichier changeIP.js

[javascript]function changeIP(tab,ips)
{
console.info(tab);
console.info(ips);
if(ips != "vide")
{
/* On compte les ip de ce réseau */
var nbd = tab[ips][0].length;
var form_d = '<select name="ip" id="ip" style="text-align:center;" onchange="maj(this.value);">';
form_d += '<option value="" selected="selected">- - - Selectionnez l\'IP - - -</option>';
for(var j = 0; j < nbd; j++)
{
form_d += '<option value="'+ tab.ips[j] +'">'+ tab.ips[j] +'</option>\n';
}
form_d += '</select>';
}
else
{
form_d = "";
}
document.getElementById("blocIP").innerHTML = form_d;
}[/javascript]

Il contrôle ensuite que this.value, à savoir ips au niveau du code js n'est pas vide.
On arrive ensuite au message d'erreur sur la ligne :

[javascript]var nbd = tab[ips][0].length;[/javascript]

C'est encore une fois très facile à comprendre... Je suis même déçu que tu me poses cette question ! :mrgreen: JS doit compter le nombre de ligne du tableau en fonction du numéro de réseau. Tout bêtement, il va compter le nombre d'IP du réseau sélectionné pour pouvoir se servir de la boucle For étant donné qu'on a pas voulu créer un foreach en JS (Et après, on s'étonne que je préfère le PHP \:D/ ).

Le message d'erreur nous indique qu'il ne comprend pas tab[ips][0], en fait, comme pour la partie Array dans PHP, on ne doit pas être au bon niveau du tableau, sous-tableau, partie inférieure en dessous du sous-tableau... Et c'est là le souci, je ne connais pas ce bout de code car je ne vois pas comment tab[ips] peut vouloir dire "Sélectionne les IP dans tab en fonction d'ips" ! :oops:

Mammouth du PHP | 19672 Messages

22 mars 2013, 13:16

Je vois déjà beaucoup mieux.

Pour simplifier parce que je dois m'absenter, je te propose une ré-écriture de ta fonction. J'ai ajouté des commentaires pour que tu suives mieux le fonctionnement.
Mets ça en place et teste à nouveau :
[javascript]/**
* Mise à jour de la liste des adresses IP pour un réseau sélectionné.
*
* @param {Object} tab
* @param {Int} idr
*/
function changeIP(tab, idr)
{
console.info(tab);
console.info(idr);
/* On initialise deux variables, la première comme index de l'ensemble des réseaux, la seconde comme liste des IP */
var r, ips = false;
/* On va commencer par isoler la liste des IP du réseau sélectionné */
for (r in tab)
{
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
}
}
/* Si on a trouvé une liste d'adresses IP */
if (ips != false)
{
/* On compte les ip de ce réseau */
var nbd = ips.length;
/* On peut construire la liste déroulante */
var form_d = '<select name="ip" id="ip" style="text-align:center;" onchange="maj(this.value);">\n';
form_d += '<option value="">- - - Selectionnez l\'IP - - -</option>\n';
for (var j = 0; j < nbd; j++)
{
form_d += '<option value="' + tab.ips[j] + '">' + tab.ips[j] + '</option>\n';
}
form_d += '</select>\n';
document.getElementById("blocIP").innerHTML = form_d;
}
else
{
form_d = "";
console.log('Aucune adresses IP trouvées pour le réseau sélectionné');
}
}[/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, 13:20

C'est marrant, erreur au même endroit :

Code : Tout sélectionner

TypeError: ips is undefined [Stopper sur une erreur] var nbd = ips.length;
Du coup, il aurait un problème avec cette partie ?

[javascript]ips = tab[r].reseau.ips[/javascript]

Mammouth du PHP | 19672 Messages

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]
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: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]