首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一次显示来自MySQL DB的重复值

一次显示来自MySQL DB的重复值
EN

Stack Overflow用户
提问于 2015-02-06 15:13:57
回答 3查看 847关注 0票数 0

我在MySQL DB有一张桌子,它存储餐厅在每个工作日和时段提供的菜单。

表的结构如下:

代码语言:javascript
复制
  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

我想按以下方式显示菜单:

代码语言:javascript
复制
<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/>

我现正处理以下事项:

代码语言:javascript
复制
$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. 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-06 15:23:01

只需跟踪您输出的日期,例如使用“状态机”:

代码语言:javascript
复制
$previousday = null;
while($row = ... fetch from db... ) {
    if ($row['day'] != $previousday) {
       ... output day header
       $previousday = $row['day'];
    }
    ... output row data ...
}
票数 1
EN

Stack Overflow用户

发布于 2015-02-06 15:19:36

当然,它会打印三个星期天和三个星期一。

例如,您可以首先选择所有不同的日子(从菜单中选择DISTINCT ( i_day ) ),然后为每一天选择所有的菜单(选择*i_day= ?)

代码语言:javascript
复制
$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
    }
}
票数 1
EN

Stack Overflow用户

发布于 2015-02-06 16:35:47

试试这个:

代码语言:javascript
复制
$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"];

}

根据您的需要对上述数据进行格式化。我刚给你提供了基本代码。

交替地,

代码语言:javascript
复制
$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];

}

每天重复一遍。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28368848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档