Soucis d'affichage tableau multidimensionnel
Posté : 22 juil. 2011, 15:21
Hello
je suis en train de scripter un petit truc, mais je dois avoir un soucis quelque part et à force d'avoir les yeux dessus, je ne trouve pas ou es mon erreur. peut-être la verrez-vous plus vite (soucis dans la déclaration d'un des tableaux je pense.. ou autre.. j'ai du mal avec les tableaux, et c la première fois que j'essaye le multidimensionnel.. )
concrètemement, j'ai une table (inv_baie) contenant des noms de baie/racks (A, B, C, CF, DF, 7, 8 ..) numériques ou texte.
voici un extrait de cette table :
ainsi qu'une table contenant des serveurs (inv_serveurs), et chaque serveur a une relation sur cette table (inv_serveurs.baie_id), donc chaque serveur a un emplacement dans une "baie".
j'ai un champ dans ma table inv_serveurs qui s'appelle baie_loc, qui est au format UXXUXX (par exemple U05U08).
(juste pour l'info, ca me permet de faire plusieurs choses sur certaines pages de mon intranet, notamment dessiner automatiquement des schémas de racks 42U, avoir l'emplacement exact de chaque serveur dans le rack etc).
aujourd'hui, je souhaite faire un petit script qui me donnera les U de libres dans chaque rack, j'ai déjà fait quasiment tout mon code (rapidement et salement), mais il y a un truc qui déconne, avant d'écrire la fin du code, j'essaye déjà juste d'afficher une valeur du tableau que j'ai fait, mais j'ai un bel " Undefined index:" qui s'affiche.
théoriquement, mon :
j'ai essayé de mettre un "echo $tableau[$rack_name]['37'];" dans la boucle principale prenant les baies(que j'appelle aussi rack) en compte, mais ça ne fonctionne pas.
il semble que le premier tableau $tableau[$baie_name] ne fonctionne pas.
help !
voici le code :
je suis en train de scripter un petit truc, mais je dois avoir un soucis quelque part et à force d'avoir les yeux dessus, je ne trouve pas ou es mon erreur. peut-être la verrez-vous plus vite (soucis dans la déclaration d'un des tableaux je pense.. ou autre.. j'ai du mal avec les tableaux, et c la première fois que j'essaye le multidimensionnel.. )
concrètemement, j'ai une table (inv_baie) contenant des noms de baie/racks (A, B, C, CF, DF, 7, 8 ..) numériques ou texte.
voici un extrait de cette table :
Code : Tout sélectionner
[889][root@JSS_GB][scripts]> query_db "SELECT baie_name, baie_id FROM inv_baie"
baie_name baie_id
A 1
B 2
CF 3
D 4
E 5
FF 6
G 7
I 8
H 9
2F 58
3F 59
4 60
5 61
6 62
7 63
1F 64
8 65
J 66
CB 67
FB 68
1B 69
2B 70
3B 71
K 72
[890][root@JSS_GB][scripts]>
j'ai un champ dans ma table inv_serveurs qui s'appelle baie_loc, qui est au format UXXUXX (par exemple U05U08).
(juste pour l'info, ca me permet de faire plusieurs choses sur certaines pages de mon intranet, notamment dessiner automatiquement des schémas de racks 42U, avoir l'emplacement exact de chaque serveur dans le rack etc).
aujourd'hui, je souhaite faire un petit script qui me donnera les U de libres dans chaque rack, j'ai déjà fait quasiment tout mon code (rapidement et salement), mais il y a un truc qui déconne, avant d'écrire la fin du code, j'essaye déjà juste d'afficher une valeur du tableau que j'ai fait, mais j'ai un bel " Undefined index:" qui s'affiche.
théoriquement, mon :
devrait m'afficher "filled" (pour dire que le U 37 dans le rack A est rempli). et ça ne fonctionne pas.echo $tableau['A']['37'];
j'ai essayé de mettre un "echo $tableau[$rack_name]['37'];" dans la boucle principale prenant les baies(que j'appelle aussi rack) en compte, mais ça ne fonctionne pas.
il semble que le premier tableau $tableau[$baie_name] ne fonctionne pas.
help !
voici le code :
#!/usr/local/php/bin/php
<?php
include ("../config/mysqlconn.php");
// declaration du tableau (associatif) multidimensionnel pour chaque baie
$tableau[][] = array();
// variable pour U libres totaux (tous racks confondus)
$total_free_u = '0';
// pour chaque rack
$query_racks = 'SELECT baie_name, baie_id FROM inv_baie';
$req_query_racks = mysql_query($query_racks);
while ($rack = mysql_fetch_assoc($req_query_racks))
{
// on recupere le nom et ID du rack
$rack_name = $rack['baie_name'];
$rack_id = $rack['baie_id'];
// on entre les serveurs de ce rack dans le tableau
$query_srv = 'SELECT inv_baie.baie_name, inv_serveurs.baie_loc FROM inv_serveurs, inv_baie WHERE inv_serveurs.baie_id = inv_baie.baie_id AND inv_baie.baie_id = "'.$rack_id.'"';
$req_query_srv = mysql_query($query_srv);
while ($data = mysql_fetch_assoc($req_query_srv))
{
// on recupere le champ UxxUxx de l'equipement
$champ_u = $data['baie_loc'];
// si le champ UxxUxx n'est pas au bon format, on passe a l'enregistrement suivant
if(!preg_match_all('/^[U-Uu-u][0-9][0-9][U-Uu-u][0-9][0-9]$/', $champ_u,$out)) {
continue;
} elseif ($champ_u = "NO") {
continue;
} else {
// si le champ est bon, on le split
$u_start = substr($champ_u, 1, 2); // on récupère le U de départ
$u_end = substr($champ_u, 4, 5); // on récupère le U d'arrivée
// on vire le 0 en debut de U
if (preg_match('/^0/', $u_start))
{
$u_start = str_replace("0","",$u_start);
}
// puis on met les U du champ UxxUxx dans le tableau
for ($u=u_start; $u<=$u_end; $u++)
{
$tableau[$rack_name][$u] = "filled";
}
}
}
// fin ajout serveurs
}
echo $tableau['A']['37']; // ici ça ne fonctionne pas (j'ai testé plusieurs choses, de mettre aussi dans la boucle au dessus etc.)
?>
et l'erreur :PHP Notice: Undefined index: A in /app/ubskonsole/scripts/checkfreeslots.php on line 62