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 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算