0

使用 MSSQL 和 PHP,我正在编写一个日历表单,列出用户日程表中的时间,并让他输入他是否忙、有空等。

一旦用户提交信息,它就会保存到数据库中。

如果用户返回表单,他应该会看到表单字段默认为他已经输入的值。

好的,所以我可以查询数据库的每一天和时间段,并使用结果来确定表单上显示的内容……但这是对数据库的 145 次调用,因为这是用户在一周内可以拥有的时间段数。

似乎应该有一种方法可以查询一次数据库,将 145 个结果存储在一个数组中,然后按日期和时间查询每个字段的数组。

所以我有:

$sql="SELECT * FROM committee_employee_schedules WHERE fac_id = $user_id";
$result= mssql_query($sql,$conn);

但是从那里我不想进入一个带有 mssql_fetch_array() 的 while 循环......我将如何去查询我的结果集呢?谢谢。

这是更多示例代码,因为我似乎无法沟通:

<form>
<label for="7:30AM">7:30AM</label>
<select name="7:30AM">
<option>Available</option>
<option>Class</option>
<option>Office Hours</option>
</select>

<label for="8:00AM">8:00AM</label>
<select name="8:00AM">
<option>Available</option>
<option>Class</option>
<option>Office Hours</option>
</select>

<label for="8:30AM">8:30AM</label>
<select name="8:30AM">
<option>Available</option>
<option>Class</option>
<option>Office Hours</option>
</select>
</form>

...这会一直持续到周一至周五晚上 9:30,总共有 145 个下拉字段。

每个字段都需要知道表中是否存在针对该时间段的行,如果存在,则选择适当的活动。

我可以使用上面的代码为用户获取所有记录,但是我是否必须为表单上的每个字段循环遍历这 145 行?有没有办法将记录粘贴到数组中并用 results['Monday']['7:30'][Activity] 或其他东西引用它?

4

1 回答 1

1

因此,您将从数据库中取回 145 条记录。SELECT 查询的结果将存储在一个数组中,您必须使用循环遍历它们。该循环可以从记录中读取日期和时间段,并将其存储到适当的数组中。稍后,您可以按照您想要的方式引用该新数组。我将尝试在下面整理一个近似示例。

<?php
    slotData = array();//Store your results here the way you want to, see down below

    $sql="SELECT * FROM committee_employee_schedules WHERE fac_id = $user_id";
    $result= mssql_query($sql,$conn);
    while($row = mssql_fetch_row($result)) {
        $day = $row['day'];//Guessing your column name here
        $time = $row['time_of_day'];//again, guessing your time here
        $slotData[$day][$time] = $row;
        //this all assumes "$day" looks like "monday", "tuesday", etc.
        //also assumes "$time" looks like "8:00AM", "9:30PM", etc.
    }

    //now that data is in array the way you want, reference it later
    //Assume you are currently trying to populate Monday at 8am position in calendar...
    $curDay = 'monday';
    $curTime = '8:00AM';
    $data = $slotData[$curDay][$curTime];
    //Yeay! "$data" now has all of the information for Monday at 8am.
?>

底线是,遍历您的数据库结果集并将数据移动到不同数组的适当槽中,具体取决于它应该去哪里。稍后,您可以随意引用该不同的数组,而不必担心每次都遍历所有原始记录。解决了。

于 2013-03-28T20:05:30.453 回答