2016-06-19 10 views
0

erstellen Ich erstelle ein Geschäft mit Kategorien. Was ich will, erreichen:Wie Unterkategorien der Unterkategorien

Main category 
    sub category 
     sub category of the sub category 
another main one 

Im Moment habe ich wie so eine Tabellenstruktur haben:

CREATE TABLE `categories` (
    `category_id` int(11) NOT NULL, 
    `main_category` varchar(50) NOT NULL, 
    `sub_category` varchar(50) NOT NULL, 
    `category_date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

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

INSERT INTO `categories` (`category_id`, `main_category`, `sub_category`, `category_date`) VALUES 
(1, 'Electronics', 'Laptops', '2016-02-21 13:49:14'), 
-- 
-- Indexes for dumped tables 
-- 

I Unterkategorien erstellen möchten, so kann der Benutzer die Hauptkategorie klicken, die alle Unter zeigen whill Kategorien oder klicken Sie auf die Unterkategorie, die die Unterkategorien der Unterkategorie anzeigt, oder klicken Sie auf die Unterkategorie.

In meiner Produkttabelle, ich cam mit der Kategorie-ID, so dass es n der Kategorie verbunden werden kann, hier ist meine php:

public static function category_form() 
{ 
    echo '<select name="categories" class="form-control col-sm-12">'; 
    echo '<option>'.System::translate('Choose an option').'</option>'; 

     $i = 0; 
     $mainCatName = ''; 
     foreach(SELF::categories() as $category): 
      if($category->main_category != $mainCatName) { 
       $mainCatName = $category->main_category; 
       if($i = 0) { 
        echo '<optgroup label="'.$category->main_category.'">'; 
       } else { 
        echo ''; 
        echo '<optgroup label="'.$category->main_category.'">'; 
       } 
      } 

      echo '<option value="'.System::escape($category->sub_category).'">'.System::escape($category->sub_category).'</option>'; 
      $i++; 
      endforeach; 
    echo '</select>'; 

} 

Antwort

0

Verwenden Sie ein einzelne Gleichheitszeichen == oder === keine signle = zu vergleichen, es setzt $ i Wert als 0 in jeder Iteration, ändern Sie es zu diesem:

if($i == 0) { 
Verwandte Themen