2010-09-28 10 views
0

J'ai deux champs dans une table SQL, done et current. Les deux ont des données qui sont soit 1 (oui) ou 0 (faux).Sortie de la classe d'ancre dans PHP While() loop semble incohérent

Dans mon while() boucle PHP qui crée mes éléments, je le code suivant:

$current=mysql_result($result,$i,"current"); 
$done=mysql_result($result,$i,"done"); 

if ($done == 1){ 
$doneorcurrent = "done"; 
} 

if($current == "1"){ 
$doneorcurrent = "current"; 
}else {$doneorcurrent = "";} 

Alors je l'appelle $doneorcurrent utilisant ce qui suit:

<a class="article <? echo $doneorcurrent ?>"</a>

Le problème est que, même si un de mes champs done a un 1, il n'apparaît jamais. J'ai dinké avec le code pendant un moment maintenant, et une fois que je l'ai fait ainsi c'était l'inverse - seulement done s'est montré, et pas current.

Y a-t-il un meilleur moyen de le faire? Voir http://www.bavarianblue.com/to-do-list/ pour un exemple. Les titres de chaque tâche sont enveloppés dans une classe qui doit contenir current ou done. Comme vous pouvez le voir, le reste des données est correctement généré dans la boucle While(), il ne semble donc pas que ce soit faux.

Répondre

1

Votre deuxième instruction if définira toujours $doneorcurrent sur "current" ou "" (vide). Vous pouvez résoudre ce problème en utilisant une instruction ifelse comme ceci:

if ($done == 1){ 
    $doneorcurrent = "done"; 
}elseif($current == "1"){ 
    $doneorcurrent = "current"; 
}else { 
    $doneorcurrent = ""; 
} 

Comme une note de côté, je ne comprends pas vraiment la conception de votre base de données. pourquoi "fait" et "courant" sont-ils stockés dans des tables différentes? Ne pourrait-il pas s'agir d'un drapeau dans une seule colonne dans une seule table?

+0

ouais en fait il pourrait ... 'current' était une pensée après coup de' done', mais vous avez absolument raison! – Jared

+0

Et merci pour la réponse rapide - je ne savais pas que je m'annulais. – Jared

+0

N'oubliez pas de marquer la bonne réponse alors. –