我正在尝试创建一个php脚本,该脚本从MySQL数据库获取值,显示带有来自数组的time_stamp的标头,以及带有名为“working_ra”的值的子标头,其值在这些类别下面。两个类别下面的值都显示在表格中。我在查询中对working_ra的值进行排序,这样我就可以运行一个while循环,说明如果它们不相同,则显示下一个working_ra并继续回显值。这是我的代码:
foreach ($date as $i) {
echo "<pre>"."<h2>".$i."</h2>"."</pre>";
$result = mysqli_query ($con, "SELECT * FROM Signing WHERE value1 = 'Ings' AND time_stamp = '$i' ORDER BY working_ra");
$num_results = mysqli_num_rows($result);
$row = mysqli_fetch_array($result);
$desk = $row["working_ra"];
echo "var_desk starting value ","<b>", $desk,"</b>";
echo "<table border='1'>";
echo "<tr>";
echo "<td>", $row["first"],"</td>";
echo "</tr>";
while ($row = mysqli_fetch_array($result)) {
if ((string)$desk != (string)$row["working_ra"]) {
echo "</table>";
$desk = $row["working_ra"];
echo "var_desk next value ","<b>",$desk,"</b>";
echo "<br />";
echo "<table border='1'>";
}
echo "<tr>";
echo "<td>", $row["first"],"</td>";
echo "</tr>";
}
$result->free();
}
$con->close();
一切正常,直到达到第二个“桌面”名称。然后,应该具有下一个值的表将转移到下一个日期。这是它在页面上的样子:
aSFashagh,Jeremy,Jeremy和Johnny都应该受到影响(Phil,2013年1月10日),但是下降到了下一个日期和working_ra(Phil,2013年1月20日)。 zffaA,andsdfdsggsdhj都应该在(Phil,2013年1月20日),但是(Phil,2013年2月25日)。奇怪的是,该方法确实有效没有试图将所有值都放在表格中。
我的假设是它可能是表标签结束和开始的顺序,但我已经尝试了很多东西,但仍然无法弄清楚出了什么问题。
修改
对不起它很难说。但我试图把它变成一切都按照它应该的方式向上移动的地方。其中“first”的值属于其对应的time_stamp和working_ra。例如,MySQL数据库中Johnny的值的值为working_ra - Phil,值为time_stamp - 2013年1月10日。但是如您所见,Johnny不在下面(Phil,2013年1月10日),而不是1月20日, 2013.它不是问题的查询,它与while循环和表有关,我只是想不出来。
唯一正确的两个值是Zack和为什么它们具有相应的值(working_ra =“Bob”,time_stamp =“2013年1月10日”)
答案 0 :(得分:0)
我相信你的问题是mysql行指针。你已经在while循环之前使用了mysqli_fetch_array一次,因此将当前的mysql行转移到下一行。
此代码
mysqli_data_seek($result, 0);
将重置指针。
将它放在你的while循环之前。
答案 1 :(得分:0)
找出问题所在。当while循环中断时,我需要添加一个“/ table”标记。