8791 sujets

Développement web côté serveur, CMS

Bonjour,

Difficile de trouver un titre Smiley lol

En fait, j'ai trouvé un bout de code sur Internet pour faire une liste déroulante liée qui fonctionne à merveille. Ce script est assez connu, il permets de trouver le département en fonction de la région.
Je l'ai adapté pour mes tableaux d'IP, il permet selon le réseau, d'avoir les IP disponibles.


$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
					$bdd = new PDO('mysql:host=127.0.0.1;dbname=xx', 'xx','xx', $pdo_options);	
					
					$query_reseau = $bdd->query ("SELECT adresse_ip AS idd, reseaux.id_reseau AS idr, nom_reseau AS nomr
													FROM ip, reseaux 
													WHERE ip.id_reseau = reseaux.id_reseau
													ORDER BY reseaux.id_reseau");

					/* 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 du département par tableau régional */
					$id = 0;
					while ($ligne = $query_reseau->fetch())	
					{
						$r = $ligne['idr'];
						$d = $ligne['idd'];
						/* Je vérifie si je suis toujours dans la même région, sinon je crée les tableaux nécessaires */
						if($temoin_r != $r)
						{
							$reseaux[$r] = array();
							/* J'ajoute la région */
							$reseaux[$r][0] = $ligne['idr'];
							$reseaux[$r][1] = array();
							$reseaux[$r][2] = array();
							$temoin_r = $r;
							$id = 0;
						}
						/* J'ajoute les départements */
						$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> 

<?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
					}
					?>




J'ai seulement mis la partie intéressante. En fait, mon problème est simple, j'ai le numéro de réseau et j'aimerais avoir son nom, j'ai essayé de modifier les code mais ça ne veut pas fonctionner. Le problème se situe au echo($nom[0]); et mes limites se situent au niveau du foreach avec le "=>". J'ai ajouté dans ma requête SQL le nom du réseau selon besoin mais il ne doit pas aimer le texte à la place des nombres.

Merci à vous.
J'avais mis ça de côté pour me consacrer au reste du développement, personne n'a une petite idée ?

Merci.
Aucun message d'erreur ! Smiley lol

Au niveau de la requête sql :

$query_reseau = $bdd->query ("SELECT adresse_ip AS idd, reseaux.id_reseau AS idr, nom_reseau AS nomr
													FROM ip, reseaux 
													WHERE ip.id_reseau = reseaux.id_reseau
													ORDER BY reseaux.id_reseau");



J'ai ajouté nom_reseau AS nomr car j'aimerais avoir ce champ dans la liste déroulante et non reseaux.id_reseau AS idr. Je n'ai pas le choix car le script veut du numérique, j'aimerais juste comprendre à quel moment je peux associer l'id avec le nom pour l'afficher dans la liste déroulante.

Merci ! Smiley cligne
Modifié par orygynz (07 Nov 2012 - 19:30)