2013-01-22 111 views
0

我有两个表,一个包含一天中所有可用的工作时间,另一个表包含某人声明他们可用的时间。当我创建我的<select>表单字段时,我想自动选择哪个时间已在数据库中,该日期和时间的tutor_id位于tutor_ availabilityPHP MySQL两个查询 - Foreach

 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的几乎没有成功。我想我可以做两个单独查询,但后来我遇到了一个问题,如何选择正确的选项字段,同时遍历结果从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 

然而,我无法弄清楚如何迭代两个sql结果以获得正确的结果。

+2

第一张桌子和第二张桌子之间的关系是什么? –

+0

@PrasanthBendra真的没有关系。第一张桌子储存所有的时间(即:一天24小时)。第二个表存储导师选择的可用性。第一个表是静态的,只存储在MySQL中,用于每个用于遍历小时的选项。 – cantaffordretail

回答

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>'; 
} 
0

我认为没有必要激发JOIN查询,如果您只使用数据库到这个小范围。 但总是使用mysqli_ *函数,因为mysql_ *从PHP 5.5.0开始已弃用。(参考here) 以下是所需的代码。

//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>";