2010-10-21 10 views
2

Je vais avoir un petit problème d'affichage des données à partir d'une base de données ...Affichage des données de plusieurs tables MySQL

J'ai deux tables de base de données:

  • catégories (cat_id, CAT_NAME)
  • menu_items (menu_id, MENU_NAME, cat_id, menu_description, menu_price)

je voudrais d isplay données:

Catégorie 1 Nom

  • cat_id = 1, MENU_NAME, menu_description, menu_price
  • cat_id = 1, MENU_NAME, menu_description, menu_price
  • cat_id = 1, ...

Catégorie 2 Nom

  • cat_id = 2, MENU_NAME, menu_description, menu_price
  • cat_id = 2, MENU_NAME, menu_description, menu_price
  • cat_id = 2, ...

Catégorie 3 Nom

  • cat_id = 3, menu_name, menu_description, menu_price
  • cat_id = 3 , MENU_NAME, menu_description, menu_price
  • cat_id = 3, ....

...


Mon code:

function get_menu_items() { 
     // query database for a list of categories 
     $conn = db_connect(); 
     $query = "select cat_id, cat_name from categories"; 
     $result = @$conn->query($query); 
     if (!$result) { 
     return false; 
     } 
     $num_cats = @$result->num_rows; 
     if ($num_cats == 0) { 
      return false; 
     } 
     $result = db_result_to_array($result); 
     return $result; 
    } 


function display_menu_items($menu_array) { 
    if (!is_array($menu_array)) { 
    echo "<p>No menu items currently available</p>"; 
    return; 
    } 
    foreach ($menu_array as $row) { 
    echo "<section id='".$row['cat_name']."'>"; 
    echo "<div class='group course'>"; 
    echo "<h3>".$row['cat_name']."</h3>"; 

    ***/* Problem */*** 

    echo "<ul>"; 
foreach... { 
    echo "<li>cat_id = #, menu_name, menu_description, menu_price</li>"; 
    } 
    echo "</ul> 

    ***/* Problem */*** 

    echo "</div>"; 
    echo "</section>"; 
    } 
} 

Toutes les suggestions?

Merci.

Répondre

2
catRecordset = select * from categories 
foreach cat in catRecordset 
{ 
    print(cat.name); 
    menuRecordset = select * from menu where menyu.cat_id = cat.cat_id 
    foreach(menuItem in menuRecordSet) 
    { 
     print(menuItem.whatever); 
    } 
} 
0

Ou utiliser encore mieux rejoindre et exécuter une seule requête

$Recordset = 'select * from categories cat LEFT JOIN menu ON menu.cat_id = cat.cat_id'; 

$category = ''; 
foreach $record in $Recordset 
{ 
    if ($category != $record['cat_id']) { 
     print(cat.name); 
     $category = $record['cat_id']; 
    } 
    print($record['menu_name'] .....); 
} 
Questions connexes