0

MSSQL と PHP を使用して、ユーザーのスケジュールの時間を一覧表示し、忙しいかどうか、空いているかどうかなどを入力できるカレンダー フォームを作成しています。

ユーザーが情報を送信すると、データベースに保存されます。

ユーザーがフォームに戻ると、フォーム フィールドが既定で入力済みの値に設定されていることがわかります。

わかりましたので、各曜日とタイムスロットについてデータベースにクエリを実行し、その結果を使用してフォームに表示される内容を判断できます...しかし、ユーザーが 1 週間に持つことができるタイムスロットの数であるため、データベースへの呼び出しは 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 に答える