我有5个复选框,包含鸡肉,水果,蔬菜,零食等食品。
我想要实现的是当用户选择复选框项目并点击提交时,它将搜索提供所选项目的餐馆,
表格将包含2个字段:restid,menu和数据存储在表
中restid->1, menu->chicken
restid->1, menu->Burger
restid->2, menu->fruits
restid->3, menu->chicken
我怀疑如何搜索餐桌上的餐馆。我的计划是,使用select语句遍历每个项目的for循环,例如(select * from restaurant_table where menu ='menu';)
当我们循环循环时,我们如何组合每个菜单的结果?
Plz帮助任何帮助将不胜感激
答案 0 :(得分:2)
我希望你有两个餐厅和菜单
restaurant - restid,name
菜单 - menuid,restid,菜单
php代码可以像这样
<?php
//$_POST['menus'] is the array of checkboxes
foreach($_POST['menus'] as $menu)
{
if($menu) $selected[]=intval($menu);
}
$selectedlist=implode(",",$selected);
//The SQL Query
$query="SELECT name from restaurant WHERE menu in(".$selectedlist.")";
$record=mysql_fetch_array(mysql_query($query)); //Loop this to get more records
?>
希望这很有用
答案 1 :(得分:1)
下面的查询将返回菜单上同时包含鸡和汉堡的餐馆的restid - 假设restaurant_table没有重复的行。
SELECT restid, COUNT(*) as cnt
FROM restaurant_table
WHERE menu IN ('chicken', 'burger')
GROUP BY restid
HAVING COUNT(*) = 2
答案 2 :(得分:0)
也许这可以帮助你作为起点:
$where = " 1=1 ";
if ( $_POST["chicken"] )
$where = $where . " AND menu = 'chicken' ";
if ( $_POST["Burger"] )
$where = $where . " AND menu = 'Burger' ";
if ( $_POST["fruits"] )
$where = $where . " AND menu = 'fruits' ";
$sql = "SELECT * FROM restaurants WHERE " + $where;