doujichan1399 2015-04-19 21:03
浏览 67
已采纳

在HTML / PHP表MYSQL中对结果进行分类

I have two tables, dishes and days_avail, where dishes contains information regarding dishes cooked and days_avail contains what days a certain dish is available.

days_avail looks like this:

daysid || dishid || monday || tuesday || wednesday || friday

daysid: unique id

dishid: dish id from dishes table

Mon - Fri: boolean

So, what I am able to do is pull the dishes and show relevant info along with what day it is available on. However, what I am trying to accomplish is categorizing the dishes by the days they are available. So something like this:

Monday
dish name
dish desc desc desc

Tuesday
Dish name
dish desc dish desc

My query is as follows:

$sql = "SELECT * FROM dishes JOIN days_avail ON days_avail.dishid = dishes.id WHERE user_id = :cookid ORDER BY days_avail.daysid";
  try {
    $stmt = $db->prepare($sql);
    $stmt->execute(array(
    ':cookid' => $cookid
  ));
}
    catch(Exception $error) {
  echo '<p class="bg-danger">', $error->getMessage(), '</p>';
}

    while($row = $stmt->fetch()) { 
      $dish_name = $row['dish_name'];
      $dish_desc = $row['dish_desc'];
      $dish_price = $row['dish_price'];
      $mon = $row['Monday'];
      $tues = $row['Tuesday'];
      $wed = $row['Wednesday'];
      $thurs = $row['Thursday'];
      $fri = $row['Friday'];
    }

I can't group the dishes under one day its available. I have tried using a if statement (example: if($mon == 1) { echo "Monday // dish_info, etc" }) but this results in the heading being repeated for each dish.

I have also tried using java handlebars to more or less run a query and then simply "stuff" the results in the (appropriate) div boxes but did not work.

I am get a complete lost here. I would greatly appreciate any help.

Thank you

  • 写回答

2条回答 默认 最新

  • dqw7121 2015-04-19 21:22
    关注

    You can do this by putting your returned rows into an array, based off the day available-

    ...your query code...
    
    $days=array('Monday'=>array(),'Tuesday'=>array(),'Wednesday'=>array(),'Thursday'=>array(),'Friday'=>array());
    
    while($row = $stmt->fetch()) { 
        foreach($days as $day=>$array){
            if($row[$day]){
                $days[$day][]=array('dish_name'=>$row['dish_name'],
                                    'dish_desc'=>$row['dish_desc'],
                                    'dish_price'=>$row['dish_price']);
            }
        }
    }
    

    now just loop over your $days array

    foreach($days as $day => $dishes){
        echo "<h2>$day</h2>";
        foreach($dishes as $dish){
            echo $dish['dish_name']."<br />";
            echo $dish['dish_desc']."<br />";
            echo $dish['dish_price']."<br />";
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值