[英]PHP MySQL Two Queries - Foreach
我有两个表,一个表包含一天中所有可用的工作时间,另一个表包含某人指出的可用时间。 当我创建我的<select>
表单字段时,我想自动选择该日期和时间的tutor_ availability
该tutor_id
在数据库中已经存在的时间。
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_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结果以获得正确的结果。
$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>';
}
我认为如果您仅使用数据库,则无需触发JOIN查询。 但是请始终使用mysqli_ *函数,因为自PHP 5.5.0起不推荐使用mysql_ *。 (请参阅此处 )下面是所需的代码。
//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>";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.