Я пытаюсь сделать сайт ресторана, где люди могут видеть меню.PHP Group sql query под тем же названием
У меня есть таблица, которая выглядит следующим образом:
А теперь я хочу, чтобы вывести эти данные в соответствии с названием:
Пицца
Ham & Сыр $ 150
Лук & Сыр $ 120
салат
Цезарь $ 70
Томат & Оливки $ 60
Десерт
Мороженое $ 110
Ванильный торт $ 90
-
Ну в будущем menu_title может быть изменен клиентом ... Это означает, что заголовок должен быть получен также из базы данных.
Вот код, я пытаюсь, но я не знаю, как добавить содержание под заглавие:
<?PHP
$sql_product="SELECT * FROM cc_restaurants_menu WHERE menu_asoc='$asoc' AND menu_type='product' GROUP BY menu_title";
$stmt_product = $conn->prepare($sql_product);
$stmt_product->execute();
$result_product = $stmt_product->setFetchMode(PDO::FETCH_ASSOC);
if($result_product > 0) {
while($row = $stmt_product->fetch()) {
echo '<h3>'. $row['menu_title'] .'</h3><br><p>'. $row['menu_product'] .'</p>';
}
}
?>
Но этот код выводится только заголовок и первый ряд: S
Любая идея?
EDIT
Я получил 2 ответ правильный:
ВАРИАНТ 1
$sql_product="SELECT * FROM cc_restaurants_menu WHERE menu_asoc='$asoc' AND menu_type='product'";
$stmt_product = $conn->prepare($sql_product);
$stmt_product->execute();
$result_product = $stmt_product->setFetchMode(PDO::FETCH_ASSOC);
if($result_product > 0) {
while($row = $stmt_product->fetch()) {
$menuArr[$row['menu_title']][] = '<p>'. $row['menu_product'] . ''. $row['menu_product_price'] . ''. $row['menu_product_desc'] .'</p>';
}
foreach($menuArr as $menuTitle => $productArr){
echo '<h3>'. $menuTitle .'</h3></br>';
foreach($productArr as $key =>$productname){
echo '<p>'. $productname .'</p>';
}
}
}
ВАРИАНТ 2
$sql_product="SELECT * FROM cc_restaurants_menu WHERE menu_asoc='$asoc' AND menu_type='product' ORDER BY menu_title";
$stmt_product = $conn->prepare($sql_product);
$stmt_product->execute();
$result_product = $stmt_product->setFetchMode(PDO::FETCH_ASSOC);
$title = "";
while ($row = $stmt_product->fetch()) {
if ($row['menu_title'] != $title) {
echo '<h3>'.$row['menu_title'].'</h3><br>';
$title = $row['menu_title'];
}
echo '<p>'.$row['menu_product'].'</p><p>'.$row['menu_product_price'].'</p>';
}
не могли бы вы должны изменить 'GROUP BY' для' ORDER BY' – MaggsWeb
Вы правы, и я пропустил ';' –
работает !! Спасибо друг! –