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!