Bonjour,

J'ai en interne développé un ptit site pour la gestion de notre réseau. Il s'agit surtout de gérer les adresses ip de notre parc. Les adresses IP sont liées à un réseau, j'ai donc adapté un bout de code que j'ai trouvé sur le net pour la gestion des listes déroulantes liées. L'exemple utilisé à la base est Région/Département que j'ai adapté pour Réseau/AdresseIP.

Je mets seulement les parties intéressantes au problème :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
$query_reseau = $bdd->query("SELECT adresse_ip AS idd, RESEAUX.id_reseau AS idr, RESEAUX.nom_reseau AS inr FROM IP, RESEAUX WHERE IP.id_reseau = RESEAUX.id_reseau AND adresse_ip NOT IN (SELECT adresse_ip FROM IP_MAT) ORDER BY RESEAUX.id_reseau, INET_ATON(adresse_ip)");
 
            /* Pour ne pas écraser mes tableaux, je crée un témoin */
            $temoin_r = 0;
            /* Création du tableau PHP des valeurs récupérées */
            $reseaux = array();
            /* Index de l'adresse ip par tableau réseau */
            $id = 0;
            while ($ligne = $query_reseau->fetch()) {
                $r = $ligne['idr'];
                $d = $ligne['idd'];
                /* Je vérifie si je suis toujours dans le même réseau, sinon je crée les tableaux nécessaires */
                if ($temoin_r != $r) {
                    $reseaux[$r] = array();
                    /* J'ajoute le réseau */
                    $reseaux[$r][0] = $ligne['idr'];
                    $reseaux[$r][1] = array();
                    $reseaux[$r][2] = array();
                    $temoin_r = $r;
                    $id = 0;
                }
                /* J'ajoute les ips */
                $reseaux[$r][1][$id] = $d;
                $reseaux[$r][2][$id] = $ligne['idd'];
                $id++;
            }
            /* On sérialise le tableau obtenu pour traitement par JavaScript */
            $chaine = htmlspecialchars(serialize($reseaux), ENT_QUOTES);
            ?>
            <script type="text/javascript">
                /* <![CDATA[ */
                <!--
                /*
                 * Ici, on transmets la chaîne sérialisée à JavaScript pour la transformer en tableau indexé JavaScript
                 */
                var tableau = new PhpArray2Js('<?php echo $chaine; ?>');
                var tab = tableau.retour();
                // -->
                /* ]]> */
            </script>
Ensuite, la partie affichage :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
<select name="edit_reseau" style="text-align:center;" id="reseau" onchange="changeIP(tab,this.value);">
                                        <option value="vide">- - - Sélectionnez le réseau - - -</option>
                                        <?php
                                        /* Construction de la première liste : on se sert du tableau PHP */
                                        $nbr = count($reseaux);
                                        foreach ($reseaux as $nr => $nom) {
                                            ?>
                                            <option style="text-align:center;" value="<?php echo($nr); ?>"><?php echo($nom[0]); ?></option>
                                            <?php
                                        }
                                        ?>
                                    </select><br><tr><td class="td_modif_mini">Adresse IP</td><td><br>                                    <span style="text-align:center;" id="blocIP"></span><input type="hidden" name="recup_ip" id="recup_ip"/></td></tr>
Pour la partie AdresseIP, il y a un script JS qui renvoi bien la bonne IP.


Ce script dans son état actuelle fonctionne sans souci. Le problème, c'est qu'il m'affiche l'ID du réseau et pas son nom... Du coup, je dois afficher un petit tableau en dessous pour sélectionner le bon réseau. (ex: numéro 15 pour Réseau Imprimantes, dur de se souvenir de tous les numéros.. :-)).

Petite question supplémentaire, à force de modifier, d'adapter, etc... la ligne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
$nbr = count($reseaux);<br><br>
On est d'accord, elle ne sert à rien ??

Merci pour votre aide.