Bir JOIN'ed MySQL ilişkisel dizi döngü

1 Cevap php

Doğru, bu yüzden bu gibi görünen bir sorgu var:

$bestof_query = "SELECT * FROM physicians p JOIN (awards a, categories c, awardLevels l) ON (a.id = p.id AND c.id = a.category AND l.id = a.level) ORDER BY a.category, a.level ASC ";
$query = mysql_query($bestof_query);

while($result = mysql_fetch_array($query)) {
 extract($result);
 echo "<h3>" . $category . "<h3>";
   foreach($category as $value) {
       echo "<h5>" . $name . "<h5>" . "<p>" . $description . "</p>" . "\r\n";
   }
}

Tipik bir sonuç benziyor-

Array (
 [0] => 39  [id] => 1
 [1] => William�B.�Poff [name] => William�B.�Poff
 [2] => 10 South Main Street [address1] => 10 South Main Street
 [3] => Tower A, Suite 1400 [address2] => Tower A, Suite 1400 
 [4] => Jackson [city] => Jackson 
 [5] => VA [state] => VA
 [6] => 24111 [zip] => 24111
 [7] => downtown-jackson [neighborhood] => downtown-jackson
 [8] => 5409837649 [phone] => 5401111111
 [9] => http://www.foo.com [uri] => http://www.foo.com 
 [10] => Foo�Rogers,�PLC [firm] => Foo�Rogers,�PLC
 [11] => 39 
 [12] => 1 [category] => Bankruptcy
 [13] => 1 [level] => 1 
 [14] => 2009 [year] => 2009 
 [15] => 1 
 [16] => Bankruptcy 
 [17] => 1 
 [18] => Platinum [description] => Platinum )

Ben [kategori] dayalı döngü çalışıyorum ve kategori İflas eşit iken, daha sonra çıkış iflas için tüm sonuçlar, sonra bir sonraki kategoriye geçmek.

Bu mantıklı mı? Ben şimdiden çok teşekkürler döngüler ile çok iyi olmamıştım!

Ne için umut ediyorum is-

<h3>$category</h3>
<ul>
<li>$name - $description</li>
<li>$name - $description</li>
<li>$name - $description</li>
<li>$name - $description</li>
</ul>

Ve sonra bir sonraki kategoriye yineleme. Ben iç içe bir döngü düşünüyorum, ama ben iç içe döngü yapmak için nasıl emin değilim.

1 Cevap

Basit bir devlet makine gerekir. Bu bir gerçek iç içe döngü yapmadan iç içe bir döngü yapmanın bir yoludur. Veri akışı tek boyuttur özellikle.

$category = '';
while( $result = mysql_fetch_array($query) ) {
    if( $result['category'] != $category ) {
        $category = $result['category'];
        echo "<h3>".$category."</h3>\n";
    }

    echo "<h5>".$result['name']."</h5>\n";
    echo "<p>".$result['description']."</p>\n";
}

Bir bütün olarak, her grup için biçimlendirme varsa daha karmaşık alır, ama bu temel fikir. Bu ORDER BY ile elde edildiği, aynı kategorideki her şeyin bir arada olduğu gerçeğine dayanır.

P.S.: kullanmayın {[(0)];} bu ad kirletmektedir.