0

私は 2 つのテーブルを持っています。1 つは 1 日に利用可能なすべての労働時間を含み、もう 1 つのテーブルには誰かが利用可能であると述べた時間を含みます。フォーム フィールドを作成するときに、その日時<select>の DB に既にある時間を自動選択したいと考えています。tutor_idtutor_ availability

      hours_list                                tutor_availability
----------------------               --------------------------------------       
  24hour   |   12hour                tutor_id | day | start_time | end_time
----------------------               --------------------------------------
  1000     |   10:00am                 27     | mon |   1000     |   1100
----------------------               --------------------------------------
  1030     |   10:30am
----------------------
  1100     |   11:00am
----------------------
  1130     |   11:30am
----------------------
//the list goes on

を使用していくつかのクエリを試しましLeft Joinたが、ほとんど成功しませんでした。私は2つの別々のクエリを実行できると考えていましたが、次の結果を反復しながら正しいオプションフィールドを選択する方法に問題が発生していますhours_list:

$hours = Select * FROM hours_list;
//next query
$available = Select day, start_time, end_time 
FROM tutor_availability WHERE tutorid = '27';

foreach ($hours as $option) { 
echo '<option value="' . $option['24hour'] . '"';
if ($available['start_time'] == $option['24hours'] && $available['day'] == 'mon') {   
echo 'selected'; }
//rest here

ただし、正しい結果を得るために、2 つの SQL の結果を組み合わせて反復処理する方法がわかりません。

4

2 に答える 2

0
$hours  = array();
$avail  = array();
$query  = mysql_query("Select * FROM hours_list");

while($result = mysql_fetch_assoc($query)){
   $hours[]   = $result['24hour'] 
}

$available = mysql_query("Select day, start_time, end_time 
FROM tutor_availability WHERE tutorid = '27'");

while($res  = mysql_fetch_assoc($available)){
    $avail[] = $res['start_time'];
}


foreach($hours as $hour){
echo '<option value="' . $hour . '"';
if (in_array($hour, $avail)) {   
echo 'selected >'.$hour.' </option>';
}
于 2013-01-22T05:41:49.357 に答える
0

データベースをこれほど小さなスコープまでしか使用していない場合は、JOIN クエリを起動する必要はないと思います。ただし、mysql_* は PHP 5.5.0 で廃止されるため、常に mysqli_* 関数を使用してください。(こちらを参照) 以下は目的のコードです。

    //Connect to db
    $link =mysqli_connect("localhost", "root", "", "test");

    // Get all hours record as all are needed in dropdown
    $hours = mysqli_query($link, "SELECT * FROM hours_list");

    // Get desired tutor record as it is to be shown as selected
    $tut=mysqli_query($link, "SELECT * FROM tutor_availability WHERE tut_id=27");
    $tut1= mysqli_fetch_assoc($tut);

    //echo dropdown script
    echo "<select name='testSelect'>";
    while($row=mysqli_fetch_assoc($hours)){

        echo '<option value="' . $row['twentyFourHour']. '" ';
        if ($tut1['start_time'] == $row['twentyFourHour'] && $tut1['day'] == 'mon') {
            //show this option as selected.
            echo ' selected ';
        }
        echo ">".$row['twelveHour']."</option>";
    }
    echo "</select>";
于 2013-01-22T06:14:05.887 に答える