2016-11-22 101 views
0

我试图显示一个网站上从MySQL数据库填充的类别和子目录的列表,我有点生疏,如何正确地做到这一点。从MySQL数据库显示在PHP中的类别和子类别

基本上我想实现这一点:

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 

编辑 这是我至今非常感谢的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

我会做的第一件事是实现它,从数据库中获取价值和s将它撕到数组中并运行一个循环来打印数组。

这是我的代码。让我们考虑类别字段的名字是猫和子类别字段名为SUBCAT和表名是菜单,然后

<?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>"; 
    } 
} 
?> 

而上述方案将满足您的需求。

+0

嘿,非常感谢:D我想我可以做这个工作..只是在db上找出一些bug然后生病测试你的代码这个arv –

+0

$ sql ='SELECT category,subcat FROM CatTest'; $ con = mysqli_connect(“localhost”,“user”,“pass”,“DB-Store”); 这就是我所做的一切,浏览器给出了500错误 –

+0

由于500错误,我编辑了代码。现在尝试一下。 – Gowtham