Benim PHP veya MySQL koduyla yanlış ne fark edebilirsiniz?

1 Cevap php

Ben alt kategorileri ile bir kategori menü oluşturmak için çalışıyorum. Ben şu MySQL tablo var:

--
-- Table structure for table `categories`
--

CREATE TABLE IF NOT EXISTS `categories` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(1000) NOT NULL,
  `slug` varchar(1000) NOT NULL,
  `parent` int(11) NOT NULL,
  `type` varchar(255) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=66 ;

--
-- Dumping data for table `categories`
--

INSERT INTO `categories` (`ID`, `name`, `slug`, `parent`, `type`) VALUES
(63, 'Party', '/category/party/', 0, ''),
(62, 'Kitchen', '/category/kitchen/', 61, 'sub'),
(59, 'Animals', '/category/animals/', 0, ''),
(64, 'Pets', '/category/pets/', 59, 'sub'),
(61, 'Rooms', '/category/rooms/', 0, ''),
(65, 'Zoo Creatures', '/category/zoo-creatures/', 59, 'sub');

Ve şu PHP:

<?php

include("connect.php");

echo "<ul>";

$query = mysql_query("SELECT * FROM categories");

while ($row = mysql_fetch_assoc($query)) {

    $catId   = $row['id'];
    $catName = $row['name'];
    $catSlug = $row['slug'];
    $parent  = $row['parent'];
    $type    = $row['type'];

    if ($type == "sub") {

        $select = mysql_query("SELECT name FROM categories WHERE ID = $parent");

        while ($row = mysql_fetch_assoc($select)) {
            $parentName = $row['name'];
        }

        echo "<li>$parentName >> $catName</li>";

    }
    else if ($type == "") {
        echo "<li>$catName</li>";
    }

}

echo "</ul>";

?>

Şimdi burada sorun var,

Bu görüntüler:

* Party
* Rooms >> Kitchen
* Animals
* Animals >> Pets
* Rooms
* Animals >> Zoo Creatures

Ben bu görüntülemek istiyorum:

* Party
* Rooms >> Kitchen
* Animals >> Pets >> Zoo Creatures

Benim döngü ile yanlış bir şey var mı? Ben sadece bunu anlamaya olamaz.

1 Cevap

İlk select ifadesi değiştirin:

SELECT * FROM categories WHERE parent = 0

Ayrıca yinelemeli sizin $ type == "alt" kod kod aramak gerekir.

Sizin türü alanı ana alanın işlevselliğini çoğaltmak için görünür. Menü öğesi bir ebeveyni varsa, bir alt menü değil mi?