2010-10-22 5 views
0

Besoin d'aide pour retravailler ce code php/logique. En ce moment, si je n'ai pas de valeur pour la colonne 'Durée' ou 'Taille', ma table html est vide et j'ai mis une valeur par défaut de n/a.aide avec php ET condition

Je veux changer la logique pour continuer à gérer cette condition et donner une valeur n/a, mais aussi ajouter la logique à lire si les deux sont n/a, puis définissez ma colonne 'Status' value = 'In Progress'.

D'une manière ou d'une autre, mon code commenté ne fonctionne pas correctement. Merci.

 foreach ($keys as $column){ 
     if (isset($row[$column])){ 
       if ($column == 'Server'){ 
         echo '<td> <a href="' . $server_array[$row[$column]] . '">' . $row[$column] . '</a></td>'; 
       } elseif ($column == 'Status'){ 
         echo '<td> <font color="' . $color_array[$row[$column]] . '">' . $row[$column] . '</font></td>'; 
       } else { 
         echo '<td>' . $row[$column] . '</td>'; 
       } 
     } elseif ($column == 'Status') { 
      echo '<td><font color="yellow"> Review </font></td>'; 
     } elseif ($column == 'Duration') { 
      echo '<td> n/a </td>'; 
     } elseif ($column == 'Size') { 
      echo '<td> n/a </td>'; 
     //} elseif ($column == 'Duration') && ($column =='Size') { 
     // echo '<td> In Progress </td>'; 
     } else { 
      echo '<td> </td>'; 
     } 
    } 
+2

'} elseif (colonne $ == 'Durée') && (colonne $ == 'Taille') {' <- - Cela ne marchera jamais car $ column ne peut pas avoir deux valeurs en même temps. – Powerlord

+0

Je ne sais pas comment '$ column == 'Duration'' déterminerait la météo ou non la colonne appelée' Duration 'a une valeur ou non, je pense que vous devez réécrire votre problème, et poster une partie de l'autre code afin nous pouvons voir le contexte. – UnkwnTech

+0

J'ai ajouté l'autre code pour mieux le comprendre. – cjd143SD

Répondre

2

essayer cette

} elseif ($column == 'Status') { 
    if (!isset($row['Duration']) && !isset($row['Size'])) 
    echo '<td> In Progress </td>'; 
    else 
    echo '<td><font color="yellow"> Review </font></td>'; 
} 

au lieu de

} elseif ($column == 'Status') { 
    echo '<td><font color="yellow"> Review </font></td>'; 
} 
0

Le commenté code doit être:

} elseif (($column != 'Duration') && ($column != 'Size')) { 
    echo '<td> In Progress </td>'; 

... en supposant que vous voulez dire quand In Progresscolumn n'est pas Duration ou Size.

Notez qu'avec cette logique, le dernier else ne sera jamais atteint, il peut donc simplement être supprimé.

En outre, la question pourrait être clarifiée, car je ne sais pas exactement ce que vous essayez d'atteindre.

0

Vous devez soit déposer quelques parens ou ajouter un peu, de sorte que ($column == 'Duration') && ($column =='Size') devient (($column == 'Duration') && ($column =='Size')) ou ($column == 'Duration' && $column =='Size')

Mais vous avez un problème plus voir le commentaire de R. Bemrose sur votre question.

1
switch ($column){ 
    case "Status": 
    $html="<font color="yellow"> Review </font>"; 
    break; 
    case "Duration": 
    case "Size": 
    $html="n/a"; 
    break; 
    case "SOME_OTHER_SOMETHING": 
    $html=" In Progress "; 
    break; 
    default: 
    $html=""; 
    break; 

}

echo"<td>$html</td>";

+1

vous ne voulez pas entrer dans shellely si les instructions quand une instruction switch est plus facile à utiliser .... – FatherStorm

0

Vous cherchez peut-être quelque chose avec un ou. Comme column = 'blah' ou column = 'blah2'.

else if ($column == 'Duration' || $column =='Size')