2011-07-27 13 views
0

クライアントにメニュー項目を編集させるためにPHP/MySQLに変換しようとしている既存のドロップダウンメニューがあります。これは構造体である:US-#
    -about.php
    -annualreport.php
    -awards.php
サービス - #
についてphp/mysql動的メニュー

ホーム-index.phpを

01 -loans.php     -services.php
 

など。私が使用しているクエリは次のとおりです。

select distinct mainlinks.id as daddyid, mainlinks.title as daddytitle, mainlinks.urlink as daddyurl, babylinks.id as babyid, babylinks.title as babytitle, babylinks.urlink as babyurl from mainlinks, babylinks where mainlinks.id = babylinks.parentid order by mainlinks.listorder"; 

、以下のコードで表示された結果:

$result = mysql_query($query) or die(mysql_error()); 
// keep track of previous maincategory 
$previous_maincategory = NULL; 

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

     // if maincategory has changed from previouscategory then display it 
     if ($previous_maincategory != $row['daddytitle']) 
     { 
       echo "<strong><h2>" . strtoupper($row['daddytitle']) . "</h2></strong>"; 
     } 

     echo '<a onclick="return confirmSubmit()" class="inside" href="deletesubcategory.php?id='; 
     echo $row['babyid']; 
     echo '">'; 
     echo $row['babytitle']; 
     echo "</a>"; 
     echo "<br/>"; 

     // record what the previous category was 
     $previous_maincategory = $row['daddytitle']; 
} 

それだけ要素を持っているアイテムではなく、親項目を表示しますには子要素がありません。何か案は?私は問題を推測しているクエリのwhere節では、私は私が必要なものをつかむ方法を把握することはできません。ありがとう。

答えて

1

あなたはチャイルズを持っていないアイテムを取得するためにLEFT JOINを使用する必要があり、

select distinct mainlinks.id as daddyid, mainlinks.title as daddytitle, mainlinks.urlink as daddyurl, babylinks.id as babyid, babylinks.title as babytitle, babylinks.urlink as babyurl 
from mainlinks 
    LEFT JOIN babylinks ON mainlinks.id = babylinks.parentid 
order by mainlinks.listorder; 
1

あなたのクエリは唯一、それはその関係が存在しないでアイテムを無視するという意味のアイテムwhere mainlinks.id = babylinks.parentidをつかんされてみてください。

はこれを試してみてください:LEFT JOINを使用して

SELECT DISTINCT mainlinks.id as daddyid, mainlinks.title as daddytitle, mainlinks.urlink as daddyurl, babylinks.id as babyid, babylinks.title as babytitle, babylinks.urlink as babyurl FROM mainlinks LEFT JOIN babylinks ON mainlinks.id = babylinks.parentid ORDER BY mainlinks.listorder 

は、彼らが赤ちゃんのリンクを持っている場合に関係なく、すべてのmainlinksを引っ張ってクエリを伝えるが、唯一の親を持つ赤ちゃんのリンクを引っ張ってきます。

+0

完全に作業しました。みんなありがとう。 – John

関連する問題