【问题标题】:How to populate table from SQL data using PHP如何使用 PHP 从 SQL 数据中填充表
【发布时间】:2016-07-31 19:04:38
【问题描述】:

我有一个带标题的表格;周日、周一、周二、周三、周四、周五和周六。我从数据库中收集了用户“班次”...

<tr>
      <th>Sunday</th>
      <th>Monday</th>
      <th>Tuesday</th>
      <th>Wednesday</th>
      <th>Thursday</th>
      <th>Friday</th>
      <th>Saturday</th>
    </tr>
<?php $sql4 = "SELECT * FROM shifts WHERE date = '" . $sunday . "' or date = '" . $monday . "' 
               or date = '" . $tuesday . "' or date = '" . $wednesday . "' 
               or date = '" . $thursday . "' or date = '" . $friday . "' 
               or date = '" . $saturday . "'"; 

      $result1 = $database->query($sql4);

      echo"<tr>";
      while ($row4 = mysqli_fetch_array($result1)){ 
             echo "<td>";
             echo $row4['name'];
             echo "</td>";
      }
      echo "</tr>"

因此,每天可以有任意数量的班次,但取决于班次在哪一天,我需要将班次放在正确的表格标题下。

班次表有:shift_id, name, date, day

$resultsArray = array();
while ($row4 = mysqli_fetch_array($result1)){
     $weekDay = $row4['day'];
     $resultsArray[$weekDay][] = $row4['name'];
 }

for ($x = 0; $x <= count($resultsArray); $x++) {

 $sundayData = (!empty($resultsArray['Sunday'][$x]) ) ? $resultsArray['Sunday'][$x] : "";
 $mondayData = (!empty($resultsArray['Monday'][$x]) ) ? $resultsArray['Monday'][$x] : "";
 $tuesdayData = (!empty($resultsArray['Tuesday'][$x]) ) ? $resultsArray['Tuesday'][$x] : "";
 $wednesdayData = (!empty($resultsArray['Wednesday'][$x]) ) ? $resultsArray['Wednesday'][$x] : "";
 $thursdayData = (!empty($resultsArray['Thursday'][$x]) ) ? $resultsArray['Thursday'][$x] : "";
 $fridayData = (!empty($resultsArray['Friday'][$x]) ) ? $resultsArray['Friday'][$x] : "";
 $saturdayData = (!empty($resultsArray['Saturday'][$x]) ) ? $resultsArray['Saturday'][$x] : "";


 echo "<tr>";
 echo "<td>".$sundayData."</td>";
 echo "<td>".$mondayData."</td>";
 echo "<td>".$tuesdayData."</td>";
 echo "<td>".$wednesdayData."</td>";
 echo "<td>".$thursdayData."</td>";
 echo "<td>".$fridayData."</td>";
 echo "<td>".$saturdayData."</td>";
 echo "</tr>";

}

?>

【问题讨论】:

  • 如果不查看表中的示例数据和您希望输出格式的示例,以及您在变量 $sql4 中使用的查询,将很难提供帮助。请编辑您的问题以显示一些示例数据库行以及输出的预期外观。
  • @MichaelBerkowski 补充了一些细节,谢谢
  • 如果那是你的实际代码,你有一个明显的语法错误
  • @Fred-ii- 不,我的实际代码是从数据库中收集值并在我调试时打印到表中,只是想让它尽可能简单地解释,谢谢。
  • 你如何期望while循环在字符串中执行?

标签: php mysql


【解决方案1】:

如果我能看到你的数据的确切结构,回答你的问题会更容易,但无论如何我都会试一试,希望你能看到我的目标。

我要做的是创建一个数组并在查看结果时填写信息。一旦你有了新的结果数组,就建立你的表。

  $resultsArray = array();
  while ($row4 = mysqli_fetch_array($result1)){
         $weekDay = $row4['day'];
         $resultsArray[$weekDay][] = $row4['shift'];
  }

现在您有了一个数组,其中包含按天组织的所有班次。循环遍历此数组将允许您以您想要的方式创建表。

这是未经测试的,所以可能有一些错误,但这里是一个例子......

for ($x = 0; $x <= 10; $x++) {
     echo "<tr>";
     echo "<td>".$resultsArray['Sunday'][$x]."</td>";
     echo "<td>".$resultsArray['Monday'][$x]."</td>";
     echo "<td>".$resultsArray['Tuesday'][$x]."</td>";
     echo "<td>".$resultsArray['Wednesday'][$x]."</td>";
     echo "<td>".$resultsArray['Thursday'][$x]."</td>";
     echo "<td>".$resultsArray['Friday'][$x]."</td>";
     echo "<td>".$resultsArray['Saturday'][$x]."</td>";
     echo "</tr>";
}

注意:请记住,您必须更改这部分 $x &lt;= 10 以适合您的实际数组大小。

【讨论】:

  • 是的,我就是这么想的。我遍历结果并将结果存储在与当天相关的每个数组中,例如$星期日[],$星期一[]。但我遇到的问题是我如何在正确的标题下实际打印它们?有什么想法吗?
  • 会不会是打印星期天的第一个索引,移动到星期一并打印第一个位置等等等,然后检查索引位置是否不为空,如果为空,请转到下一个数组,直到所有数组都完成?
  • 因为它们在一个带有你想要的标题名称的数组中,你只需要在创建表格时调用你想要的日期。例如,当您创建第一行和第一列时...echo $resultsArray['Sunday'][0];
  • 我有点明白你的意思,有没有机会你可以显示一个小代码sn-p来查看示例?
  • @AaronC 我为你的答案添加了更多细节
猜你喜欢
  • 2012-12-29
  • 2016-07-03
  • 1970-01-01
  • 2021-07-29
  • 2019-01-05
  • 2018-10-13
  • 1970-01-01
  • 2019-11-16
  • 1970-01-01
相关资源
最近更新 更多