PHP bir döngü ile grup sorgu sonuçları için daha iyi bir yolu var mı?

0 Cevap php

o stackoverflow benim ilk soru.

Kategoriler ve ürünler: ben iki MYSQL tablo var. Ben grup PHP bir süre döngü ürünleri ile her kategori ile sorgu sonuçlarını yönetmek. O yüzden bir şey yapmak ilk kez, ve ben (benim İngilizce için üzgünüm) çok "kurnaz / kodlanmış" yaptığımı düşünüyorum. Ben bunu yapmak için daha iyi bir yolu olması gerektiğini düşünüyorum. Yani, profesyonel programcılar için sormak istiyorum. İşte benim kod:

 CREATE TABLE IF NOT EXISTS `categories` (
 `id` int(11) NOT NULL auto_increment,
 `name` text NOT NULL,
 PRIMARY KEY  (`id`)
 ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;


 CREATE TABLE IF NOT EXISTS `products` (
 `id` int(11) NOT NULL auto_increment,
 `name` text NOT NULL,
 `description` text NOT NULL,
 `category` int(11) NOT NULL,
 `photo` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
 ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=33 ;

Ben onların kategori ile relationed ürünleri döndüren bir sorgu var:

SELECT categories.name as category,products.name as product
FROM categories
INNER JOIN products ON(categories.id = products.category)

PHP ile Ben onun ürünleri ile her kategori için bir Sırasız liste oluşturmak için sonuçları yönetmek:

<?php
$category = '';//A control variable

while($row = mysql_fetch_array($query))
{
    //if its a new category I start a new <ul>
    if($row['category'] != $category)
    {
        //If it´s not the firt category I need to close previous one
        if($category != '')
        {
            echo "</ul>\n";
        }
        //I start the new <ul>
        echo '<h2>' . $row['category'] . '</h2>';
        echo '<ul>';
    }

    //I create the correspondient <li>
    echo '<li>' . $row['product'] . "</li>\n";

    //Asign the value of actual category for the next time in the loop
    $category = $row['category'];

}

//I neeed to close last <ul>
echo "</ul>\n";
?>

Is there a better way to do this operation? Thanks in advance for your answers!

0 Cevap