我在MySQL DB中有一张表,它存储每个工作日和时段餐厅提供的菜单。
表格结构如下:
i_type i_name i_cost i_day i_start i_end
--------------------------------------------------------
Breakfast Prantha 20 Sunday 07:00 11:00
Lunch Special 80 Sunday 11:01 15:00
Dinner Special 100 Sunday 15:01 21:00
Breakfast Prantha1 50 Monday 07:00 11:00
Lunch Special1 70 Monday 11:01 15:00
Dinner Special1 130 Monday 15:01 21:00
我想显示菜单如下:
<b>Sunday</b><br/>
Breakfast<hr/>Prantha 20 Add<br/><br/>
Lunch<br/><hr/>Special 80 Add<br/><br/>
Dinner<br/><hr/>Special 100 Add<br/><hr/>
<b>Monday</b><br/>
Breakfast<hr/>Prantha 20 Add<br/><br/>
Lunch<br/><hr/>Special 80 Add<br/><br/>
Dinner<br/><hr/>Special 100 Add<br/><hr/>
目前我处理如下:
$sql = SELECT * FROM `tabl1` WHERE 1;
$data = DB::instance()->prepare($sql)->execute()->fetchAll();
foreach($data as $row){
//print values
}
but this approach print Sunday and Monday multiple times.
只需跟踪您输出的日期,例如使用"状态机":
$previousday = null;
while($row = ... fetch from db... ) {
if ($row['day'] != $previousday) {
... output day header
$previousday = $row['day'];
}
... output row data ...
}
它当然会打印三个星期日和三个星期一。
例如,您可以先选择所有不同的日期(Select DISTINCT(i_day)FROM菜单),然后选择每天的所有菜单(Select*FROM菜单WHERE i_day=?)
$sql = "SELECT DISTINCT (i_day) FROM menu";
$data = DB::instance()->prepare($sql)->execute()->fetchAll();
foreach($data as $row){
// Add all i_day's to an associative array $i_days
}
foreach($i_days as $day) {
$sql = "SELECT * FROM menu WHERE i_day = $day";
$data = DB::instance()->prepare($sql)->execute()->fetchAll();
foreach($data as $row){
// Print values
}
}
试试这个:
$stat = "SELECT * from TABLE_NAME";
$conn -> query ($stat);
foreach($conn -> query($stat) as $menu) {
echo $menu["i_day"];
echo $menu["i_type"];
echo $menu["i_name"];
echo $menu["i_cost"];
}
根据您的需要格式化以上数据。我刚刚为您提供了基本代码。
或者,
$stat = "SELECT * from TABLE_NAME where i_day = 'DAY_GOES_HERE'";
$conn -> query ($stat);
foreach($conn -> query($stat) as $menu) {
echo $menu["i_type"];
echo $menu["i_name"];
echo $menu[i_cost];
}
每天重复。