显示MySQL数据库中的重复值一次PHP


Show repeated value from MySQL DB once PHP

我在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];
}

每天重复。