2014-01-18 41 views
1

下面是我在做什麼數據我有兩個表一個是菜單等是子顯示兩個表(菜單和子菜單)

Menu table : 
- id 
- name 
- num 

submenu table : 
- ids 
- id 
- sname 
- url 

的聯繫是「ID」。

我這樣做的菜單,但我想顯示菜單&她的子菜單

<? 

    $getcat = mysql_query("select * from menu ORDER BY num ");  
    $recordno = mysql_num_rows($getcat); 

    if ($recordno > 0) { 
     while ($rowc = mysql_fetch_array($getcat)) {  
      echo " 
      <br> 
      $rowc[name] "; 
     } 
    } 
?> 

,並導致這樣

enter image description here

,並請給出代碼PHP顯示的結果。

回答

0

首先你可能要改變的:

Menu table : 
- id 
- name 
- num 

submenu table : 
- id 
- menu_id 
- sname 
- url 

這樣做有助於避免任何歧義。

,然後使用連接

<? 
$db = mysql_connect('YOUR_DB_ADDRESS','YOUR_DB_USER','YOUR_DB_PASS') or die("Database error"); 
mysql_select_db('YOUR_DB', $db); 


$getcat = mysql_query("SELECT * FROM menu m JOIN submenu sm ON m.id = sm.menu_id ORDER BY num "); 

if (!$getcat) { 
    die("Error"); 
} 

while ($row = mysql_fetch_assoc($getcat)) { 
    echo $row['name']; 
    echo $row['sname']; 
} 

一個側面說明舉措的MySQLi

+0

遺憾,但不工作//警告:mysql_fetch_array():提供的參數不是一個有效的MySQL結果資源// – user3210744

+0

修改答案 – raj

+0

感謝ü它的工作:) – user3210744

0

我認爲你需要加入你的子菜單項第一

SELECT * FROM menu INNER JOIN submenu ON submenu.id=menu.id ORDER BY num 
+0

子菜單表設計不好,你的代碼容納它 – raj

1

SQLFIDDLE

select * 
from 
    menu m inner join submenu sm 
    on m.id = sm.id 
order by m.num 
; 

enter image description here

SQLFIDDLE

+0

我怎麼能顯示結果這不起作用////// while($ rowc = mysql_fetch_array($ getcat)){... ////// – user3210744