Optimisation liste déroulante liée
Posté : 25 mars 2013, 10:27
Bonjour,
Après la résolution du post précédent, je reviens pour effectuer une optimisation du code !
PS: Cyrano, j'espère que ton week-end framework n'a pas été trop éprouvant !
Alors, le script du post : php-avance/affichage-listes-deroulantes ... 67533.html fonctionne sans souci, aucun problème pour l'ajout d'une nouvelle IP !
Par contre, pour la modification d'une IP existante, il faut sur un page, affiché l'actuelle et afficher en-dessous le système de liste déroulante liée.. Ce qui est quand même dommage !
J'ai donc adapté le code pour que la liste déroulante sélectionne automatiquement l'entrée dans la liste déroulante sur la page de modification.
1ère idée :
2ème idée, plus propre pour que le réseau sélectionné n’apparaissent pas 2 fois dans la liste :
Après la résolution du post précédent, je reviens pour effectuer une optimisation du code !
PS: Cyrano, j'espère que ton week-end framework n'a pas été trop éprouvant !
Alors, le script du post : php-avance/affichage-listes-deroulantes ... 67533.html fonctionne sans souci, aucun problème pour l'ajout d'une nouvelle IP !
Par contre, pour la modification d'une IP existante, il faut sur un page, affiché l'actuelle et afficher en-dessous le système de liste déroulante liée.. Ce qui est quand même dommage !
J'ai donc adapté le code pour que la liste déroulante sélectionne automatiquement l'entrée dans la liste déroulante sur la page de modification.
1ère idée :
<select name="edit_reseau" style="text-align:center;" id="reseau" onchange="changeIP(tab,this.value);">
<option value="<?php echo $recup_numr; ?>"><?php echo $recup_nomr; ?></option>
<?php
/* Construction de la première liste : on se sert du tableau PHP */
foreach ($reseaux as $key => $value) {
?>
<option style="text-align:center;" value="<?php echo $value['reseau']['id']; ?>"><?php echo $value['reseau']['nom']; ?></option>
<?php
}
?>
</select>
<tr><td class="td_modif_mini">Adresse IP</td><td>
<span style="text-align:center;" id="blocIP"></span><input type="hidden" name="recup_ip" id="recup_ip"/></td></tr>
Cette solution fonctionne, seul souci, le réseau apparaît 2 fois dans la liste, c'est pas la mort, mais c'est pas niquel... Ensuite, vu que le réseau est sélectionné à l'ouverture de la page, le "onchange" n'active pas le code JS, logique... Est-ce qu'il est possible de faire apparaître le champ AdresseIP au chargement de la même manière ? Je pourrais mettre un IF, si la variable GET pour l'adresseIP existe alors l'afficher... Mais dans ce cas, je ne pourrais pas re-modifier l'IP. Je dois passer cette variable au niveau du code JS, c'est le plus simple non ?2ème idée, plus propre pour que le réseau sélectionné n’apparaissent pas 2 fois dans la liste :
<select name="edit_reseau" style="text-align:center;" id="reseau" onload="changeIP(tab,this.value);">
<?php
/* Construction de la première liste : on se sert du tableau PHP */
foreach ($reseaux as $key => $value) {
echo "\t" . '<option value="' . $value['reseau']['id'] . '"';
if ($value['reseau']['id'] == $recup_numr) {
echo 'selected="selected"';
}
echo '>' . $value['reseau']['nom'] . '</option>' . "\n";
}
?>
</select>
</td></tr>
<tr><td class="td_modif_mini">Adresse IP</td><td>
<span style="text-align:center;" id="blocIP"></span><input type="hidden" name="recup_ip" id="recup_ip"/></td></tr>
>
Malheureusement, ça fait déconner le script JS, il ne se passe plus rien même si on modifie le réseau après coup. FireBug ne log rien du tout...