2010-10-10 19 views
0

J'ai ce code:valeur vide du paramètre - php

foreach($summary as $machine) 
{ 
    $hostname = $machine['node']; 

    $result = mysql_query("SELECT OS FROM machines WHERE ind='$hostname'"); 
    while($row = mysql_fetch_array($result)) 

    { 

     if($row == 'solaris') 
     { 
      $partition_os = 'export/home'; 
     } 
     else 
     { 
      $partition_os = '/home'; 
     } 
    } 
} 
    <partition<?php echo $i; ?>><?php echo $partition_os; ?></partition<?php echo $i; ?>> 

La sortie de la requête est: (sans where)

mysql> SELECT OS FROM machines; 
+---------+ 
| OS  | 
+---------+ 
| NULL | 
| solaris | 
+---------+ 

Mon problème est que dans mon xml (ce qui est pour ajax) je vois seulement /home/ au lieu de export/home. Le $hostname supposé être bien parce que je l'utilise avant.

Merci!

+0

Vous attendez exactement une ligne de votre requête? Il semble que (à partir de votre commentaire sur la réponse de Colin) vous obteniez deux, et le second (celui qui est utilisé) est vide. – grossvogel

+0

une ligne par i .. dans mon cas il y a 2 i et donc 2 tableaux. Je ne sais pas pourquoi c'est vide mais de toute façon, le premier est solaris mais ça ne marche pas. – Ronny

+0

Si vous voulez faire écho à un élément XML pour chaque ligne, vous feriez mieux de mettre ce morceau de code dans la boucle, comme @codaddict et moi l'avons souligné. – grossvogel

Répondre

2

Remplacer ceci:

if($row == 'solaris') 

Avec:

if($row['OS'] == 'solaris') 
+0

@Colin: Quotation: 'Le type de tableau à extraire. C'est une constante et peut prendre les valeurs suivantes: MYSQL_ASSOC, MYSQL_NUM, et la valeur par défaut de MYSQL_BOTH' – Sarfraz

+0

@Sarfraz, je viens de vérifier cela et supprimé mon commentaire. –

+1

Je ne vois pas comment c'est * pas * un assoc. –

2

mysql_fetch_array() renvoie un tableau, vous comparez un tableau à une chaîne ici.

Essayez avec $row[0] == 'solaris' pour comparer.

+0

le même = \ :(.. – Ronny

+1

Ensuite, vous devriez essayer d'imprimer votre '$ row' et voir le résultat –

+0

J'ai ajouté' print_r ($ row); 'avant le' if' et j'ai obtenu ceci: 'Array ([0] => solaris [OS] => solaris ) tableau ( [0] => [OS] => ) ' – Ronny

0

Il est difficile de dire si vous manquez quelques <?php balises pour la brièveté ou quoi, mais il semble que votre XML est en dehors de votre boucle . Cela signifie que vous ne l'imprimez qu'une fois (une fois la boucle terminée), en utilisant la dernière valeur de $partition_os définie dans la boucle. En fonction de votre commentaire sur une autre réponse (où vous avez fait print_r), il semblerait que votre requête renvoie deux lignes, la 'solaris' que vous recherchez, puis une ligne vide. C'est le dernier (vide) qui définit votre valeur $partition_os.

(... et les deux autres réponses sont correctes que vous devez comparer $row[0] ou $row['OS'])

+0

c'est juste une tranche du code .. – Ronny

1

Essayez saumurage votre instruction echo dans la boucle foreach:

foreach($summary as $machine) { 

     $hostname = $machine['node']; 

     $result = mysql_query("SELECT OS FROM machines WHERE ind='$hostname'"); 
     while($row = mysql_fetch_array($result)) { 

       if($row == 'solaris') { 
         $partition_os = 'export/home'; 
       } else { 
         $partition_os = '/home'; 
       } 
     } 
     echo "<partition$i>".$partition_os."</partition$i>"; 
} 

je ne vois pas qu'est-ce que $i est.

Questions connexes