2016-11-22 17 views
0

MySQLデータベースから作成されたカテゴリやサブカタログのリストをWebサイトに表示しようとしていますが、正しく処理する方法が少し錆びます。MySQLデータベースからカテゴリとサブカテゴリを表示する

基本的に私はこれを達成したい:

Parent Cat 1 
--Child Cat1 
--Child Cat2 
Parent Cat 2 
Parent Cat 3 
--Child Cat 1 
--Child Cat 2 

を、データベースがレイアウトされている:

ParentCat1, ChildCat1, Item1 
ParentCat1, ChildCat1, Item2 
ParentCat1, ChildCat2, Item1 
ParentCat2,    Item1 
ParentCat3, ChildCat1, Item1 
ParentCat3, ChildCat2, Item2 

EDIT これは私がこれまでGowthamに大きな感謝を持っているものです。

<?php 
    $conn = mysql_connect("localhost", "USER", "PASS"); 

    if (!$conn) { 
     echo "Unable to connect to DB: " . mysql_error(); 
     exit; 
    } 

    if (!mysql_select_db("DB-Store")) { 
     echo "Unable to select DB-Store: " . mysql_error(); 
     exit; 
    } 

    $sql = "SELECT * FROM menu"; 

    $result = mysql_query($sql); 

    if (!$result) { 
     echo "Could not successfully run query ($sql) from DB: " . mysql_error(); 
     exit; 
    } 

    if (mysql_num_rows($result) == 0) { 
     echo "No rows found, nothing to print"; 
     exit; 
    } 

    $result = mysql_query($sql); 
    $menu = array(); 
    echo "Start of Array"; 
    echo "<br>"; 
    while ($row = mysql_fetch_assoc($result)) { 
     $menu['category'][] = $result['cat']; 
     if (!empty($result['subcat'])) 
     $menu['subcat'][$result['cat']][] = $result['subcat'];   
    } 

    foreach ($menu['category'] as $cat) { 
     echo $cat."<br>"; 
     foreach ($menu['subcat'][$cat] as $subcat) { 
      echo "--" . $subcat."<br>"; 
     } 
    } 
    echo "<br>"; 
    echo "End of Array"; 
    mysql_free_result($result); 
?> 

答えて

0

これを達成するためにまずやるべきことは、データベースから価値を得ることですそれを配列に入れてループを実行して配列を出力します。

ここに私のコードです。

<?php 

$sql = 'select * from menu'; 
$con = mysqli_connect("localhost", "my_user", "my_password", "my_db"); 
// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

// Perform queries 
$result = mysqli_query($con, $sql); 

$menu = array(); 
while ($row = mysqli_fetch_assoc($result)) { 
    if (!in_array($row['cat'], $menu['category'])) { 

      $menu['category'][] = $row['cat']; 
    } 
    if (!empty($row['subcat'])) 
     $menu['subcat'][$row['cat']][] = $row['subcat']; 
} 

foreach ($menu['category'] as $cat) { 
    echo $cat."<br>"; 
    foreach ($menu['subcat'][$cat] as $subcat) { 
     echo "--" . $subcat."<br>"; 
    } 
} 
?> 
、その後、メニューであるのは、猫とサブカテゴリフィールド名がSUBCATとテーブル名であるカテゴリフィールド名がある考えると、上記のプログラムは、あなたのニーズを満足させます。

+0

こんにちはありがとう:私はこの仕事をすることができると思う..ちょうどdbのいくつかのバグを試してみてくださいあなたのコードはこのarvをテストします –

+0

$ sql = 'SELECT category、subcat FRT CatTest'; $ con = mysqli_connect( "localhost"、 "user"、 "pass"、 "DB-Store"); これは私が変更したもので、ブラウザは500エラーを返します –

+0

500エラーのためにコードを編集しました。今それを試してみてください。 – Gowtham

関連する問題