2011-12-06 43 views
2

表定義:MySql的組由menu_id

CREATE TABLE IF NOT EXISTS `submenu_cat` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `menu_id` int(11) NOT NULL, 
    `href` varchar(200) COLLATE utf8_unicode_ci NOT NULL, 
    `title` varchar(200) COLLATE utf8_unicode_ci NOT NULL, 
    `page_id` int(11) NOT NULL, 
    PRIMARY KEY (`id`), 
    KEY `menu_id` (`menu_id`), 
    KEY `page_id` (`page_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=8 ; 

表數據:

-- 
-- Άδειασμα δεδομένων του πίνακα `submenu_cat` 
-- 

INSERT INTO `submenu_cat` (`id`, `menu_id`, `href`, `title`, `page_id`) VALUES 
(1, 2, 'educational_events', 'Εκπαιδευτικές Εκδηλώσεις', 1), 
(2, 2, 'announcements', 'Ανακοινώσεις', 1), 
(3, 2, 'party', 'Party-Χοροί', 1), 
(4, 2, 'various', 'Λοιπές δραστηριότητες', 1), 
(5, 3, 'dap_hmmy', 'Προτάσεις ΔΑΠ-ΝΔΦΚ ΗΜΜΥ', 1), 
(6, 3, 'dap_emp', 'Προτάσεις ΔΑΠ-ΝΔΦΚ ΕΜΠ', 1), 
(7, 3, 'dap_aei', 'Προτάσεις ΔΑΠ-ΝΔΦΚ ΑΕΙ', 1); 

表約束:

-- 
-- Περιορισμοί για πίνακα `submenu_cat` 
-- 
ALTER TABLE `submenu_cat` 
    ADD CONSTRAINT `submenu_cat_ibfk_1` 
    FOREIGN KEY (`menu_id`) 
     REFERENCES `menu_cat` (`id`) 
    ON UPDATE CASCADE, 
    ADD CONSTRAINT `submenu_cat_ibfk_2` 
    FOREIGN KEY (`page_id`) 
     REFERENCES `pages` (`id`) 
    ON UPDATE CASCADE; 

我不會在PHP類似的東西寫執行這個

<ul id="m2"> 
    <li><a href="">Εκπαιδευτικές εκδηλώσεις</a></li> 
    <li><a href="">Ανακοινώσεις</a></li> 
    <li><a href="">Party-Χοροί</a></li> 
    <li><a href="">Λοιπές δραστηριότητες</a></li> 
</ul> 
<ul id="m3"> 
    <li><a href="">Προτάσεις ΔΑΠ-ΝΔΦΚ ΗΜΜΥ</a></li> 
    <li><a href="">Προτάσεις ΔΑΠ-ΝΔΦΚ ΕΜΠ</a></li> 
    <li><a href="">Προτάσεις ΔΑΠ-ΝΔΦΚ ΑΕΙ</a></li> 
</ul> 

我可以用一個查詢來做到這一點嗎?

這將完成一個while while循環?還是兩個?

+0

什麼運行一個查詢停止你'SELECT * FROM submenu_cat ORDER BY menu_id,id'並在PHP循環中創建頁面? –

回答

2
$result = mysql_query("SELECT menu_id,title FROM submenu_cat ORDER BY menu_id"); 

$last = -1; 
while($result && $row = mysql_fetch_assoc($result)) { 
    if ($last != $row['menu_id']) { 
     if ($last != -1) { 
      print "</ul>\n"; 
     } 
     print "<ul id=\"m{$row['menu_id']}\">\n"; 
     $last = $row['menu_id']; 
    } 
    print " <li><a href=\"\">".htmlentities($row['title'])."</a></li>\n"; 
} 
if ($last != -1) { 
    print "</ul>\n"; 
} 
+0

那麼容易.. 我得睡20個小時以上... 這麼容易想想對我來說似乎很難.. Thx先生.. –

1

只需選擇您的menu_id並使用一個查詢進行排序即可完成此操作。

SELECT menu_id, href, title, page_id FROM submenu_cat ORDER BY menu_id 

然後用一個結果循環。

迭代通過像輸出:

//for loop 

    if($menu_id != $last_menu_id){ 
    // close previous UL (if exists) </ul>... 
    // show new UL with id <ul id="... 
    } 

    echo <li>... // echo your link for the menu here using SQL values 

// end for loop 
1

你可以用一個循環做到這一點。如果通過menu_id

的示例代碼進行排序的結果:

<?php 
    (($con = mysql_connect('localhost','root','password')) 
     && 
     mysql_select_db('test',$con)) 
    || 
    die(mysql_errno()); 


    $query = mysql_query('select * from submenu_cat ORDER BY menu_id ASC'); 

    $last_sub_menu = 0; 
    while($submenu_cat = mysql_fetch_assoc($query)) : 
     if($isNew = !($last_sub_menu == $submenu_cat['menu_id'])): 
      if($last_sub_menu != 0) 
       echo '</ul>'; 
      $last_sub_menu = $submenu_cat['menu_id']; 
     ?> 
     <ul id="m<?php echo $submenu_cat['menu_id'];?>"> 
      <?php endif;?> 
     <li><a href="<?php echo $submenu_cat['href']?>"><?php echo $submenu_cat['title']?></a></li> 
     <?php endwhile; ?> 
    </ul> 

,其結果是

<ul id="m2"> 
       <li><a href="educational_events">Εκπαιδευτικές Εκδηλώσεις</a></li> 
      <li><a href="announcements">Ανακοινώσεις</a></li> 
      <li><a href="party">Party-Χοροί</a></li> 
      <li><a href="various">Λοιπές δραστηριότητες</a></li> 
    </ul> 
    <ul id="m3"> 
       <li><a href="dap_hmmy">Προτάσεις ΔΑΠ-ΝΔΦΚ ΗΜΜΥ</a></li> 
      <li><a href="dap_emp">Προτάσεις ΔΑΠ-ΝΔΦΚ ΕΜΠ</a></li> 
      <li><a href="dap_aei">Προτάσεις ΔΑΠ-ΝΔΦΚ ΑΕΙ</a></li> 
     </ul>