2010-10-11 5 views
0

J'écris un tableau de message simple où vous pouvez répondre à n'importe quel fil, puis répondre à n'importe quelle réponse et ainsi de suite .... tout fonctionne bien mais existe-t-il une méthode simple pour boucler la requête cela pourrait potentialité continuer et ainsi de suiteboucles mélangées avec MySQL

$rsql = "SELECT * FROM rotd_mb WHERE reply='N' ORDER BY dateTime DESC"; 
$result = runSQL($rsql); 
while ($row = mysql_fetch_array($result)) { 
echo "".$row[title].""; 
    $rsql2 = "SELECT * FROM rotd_mb WHERE reply='Y' AND replyID='$row[messageID]' ORDER BY dateTime DESC"; 
    $result2 = runSQL($rsql2); 
    while ($row2 = mysql_fetch_array($result2)) { 
    echo "".$row2[title].""; 
     $rsql3 = "SELECT * FROM rotd_mb WHERE reply='Y' AND replyID='$row2[messageID]' ORDER BY dateTime DESC"; 
     $result3 = runSQL($rsql2); 
     while ($row3 = mysql_fetch_array($result3)) { 
     echo "".$row3[title].""; 
     } 
     mysql_free_result($result3);  
    } 
    mysql_free_result($result2);  
} 
mysql_free_result($result); 
+0

Je pense que vous devriez rechercher des jointures. – fabrik

Répondre

0

Vous pouvez essayer UNION, probablement pas la meilleure solution, mais cela fonctionnera

$sql = "SELECT * FROM rotd_mb WHERE reply='N' ORDER BY dateTime DESC 
     UNION 
     SELECT * FROM rotd_mb WHERE reply='Y' AND replyID='$row[messageID] ORDER BY dateTime DESC 
     UNION 
     SELECT * FROM rotd_mb WHERE reply='Y' AND replyID='$row2[messageID]' ORDER BY dateTime DESC"; 

Une meilleure idée serait de re-conception de la structure de votre table de base de données .

+0

ouais je pense que vous pourriez avoir raison – gareth