从MSSQL引用PHP数组

时间:2013-03-28 19:42:58

标签: php sql-server

使用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行?难道没有办法将记录粘贴到一个数组并用结果['Monday'] ['7:30'] [活动]或其他东西引用它?

1 个答案:

答案 0 :(得分: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.
?>

最重要的是,遍历数据库结果集并将数据移动到不同数组的相应插槽中,具体取决于它应该去的位置。然后,根据您的喜好引用不同的数组,而不必担心每次迭代所有原始记录。解决。