2011-03-15 15 views
0

皆さん、私は配列がついています。私は自分のSQLからメニューを作ろうとしていたが、私は失敗し続けている。mysqlの動的メニューPHP

これが応答である:Basicly、そのaが参加し、詐欺やpartIdで接続されている

Id - 3 , Name - Axle, con - 7, Desc - thin 
Id - 4 , Name - Axle, con - 7, Desc - flat 
Id - 5 , Name - Ball, con - 8, Desc - round 
Id - 6 , Name - Ball, con - 8, Desc - hard 

、同じ詐欺は、同じ名前を持ちます。

すべては、それが何をしたい、このです:

<ul> 

<li>Axle 

      <li>thin</li> 
      <li>flat</li> 
</li> 

<li>Ball 

     <li>round</li> 
     <li>hard</li> 

</li> 
</ul> 

私はこれを試してみたが、何も http://www.phpro.org/tutorials/Simple-Mysql-PHP-Menu.html#1

は、誰かが正しい方向に私を導くことはできませんですか? は

UPDATE //////////の返信用

[OK]を感謝をありがとう、私はまだtiが仕事を得る傾けます。 ダブルアクスルを取り除くことはできません。

+0

このようなSQLテーブルの書式設定は見られませんでした。 – konsolenfreddy

答えて

0

それは結果リストを反復処理し、二次タイトルからメインメニュー項目を分離するのが最善です:

foreach ($results as $row) { 
    extract($row); // take care that $row entries can't overwrite vars 
    $main[$Id] = $Name; 
    $sub[$Id][] = $Desc; 
} 

次に$サブリストを介して実行も$メインリストを反復処理し、各エントリに対して:

foreach ($main as $Id => $Name) { 
    print "<li>$Name"; 
    print "<ul>"; 
    foreach ($sub[$Id] as $Desc) { 
     print "<li>$Desc"; 
    } 
    print "</ul></li>"; 
} 

ネストされたリストがある場合(あなたの質問ではそう言っていない)、単純なループではなく再帰的な関数が必要になります。

+0

こんにちは、ありがとう、私はそれを働かせるように見えない。ありがとうthoug – petar

1

まず、ナビゲーション用の空の配列を宣言します。

$part_array = array(); 

まず、私は希望の配列をループし、部品名に基づいてアイテムを組み合わせています。

$counter = 0; 
foreach($mysql_result_array as $part) { 
    $part_array[$part['ID'] = $part['ID']; 
    $part_array[$part['ID']['Name'] = $part['Name']; 
    $part_array[$part['ID']['parts'] = $part; 
    $counter++; 
} 

ここでは、すべての部分が別々になっていますが、配列のIDと同じIDに含まれています。ここから、$ part_arrayの各部分をループし、そのID内の各部分を自分のリスト項目としてエコーします。

foreach($part_array as $list_item) { 
     echo '<ul id="<?=$part_item['ID']?>">'; 
     echo '<li id="'.$list_item['Name'].'">'.$list_item['Name']; 
     echo '<ul id="'.$list_item['Name'].'_sub">'; 
     foreach($list_item['parts'] as $list_item_part) { 
      echo '<li id="'.$list_item['Name'].'_.'.$list_item['Desc'].'"><a href="/part.php?id='.$list_item['conn'].'">'.$list_item['Desc'].'</a>'; 
     } 
    } 

これは最も効率的または最もエレガントではないかもしれませんが、うまくいけばそれはあなたにアイデアを与えます。

+0

こんにちは、他の答えと同じ、これは動作しないようです!、ありがとう – petar

+0

あなたのMySQLコードを投稿できますか? (クエリ、結果配列の作成など)あなたの結果に合うように修正できるかどうかを調べます。 –

+0

希望の出力をHTMLマークアップなしで表示します。 –

関連する問題