一切都是乱序的:Php - MySQL

时间:2013-12-20 14:45:20

标签: php mysql html-table

我正在尝试创建一个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(); 

一切正常,直到达到第二个“桌面”名称。然后,应该具有下一个值的表将转移到下一个日期。这是它在页面上的样子:

php script output

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日”)

2 个答案:

答案 0 :(得分:0)

我相信你的问题是mysql行指针。你已经在while循环之前使用了mysqli_fetch_array一次,因此将当前的mysql行转移到下一行。

此代码 mysqli_data_seek($result, 0); 将重置指针。

将它放在你的while循环之前。

答案 1 :(得分:0)

找出问题所在。当while循环中断时,我需要添加一个“/ table”标记。