2013-06-24 70 views
0

我正在寫預約書類型的東西,我有一個表只是可能的時間,所以我的第一個查詢是列出所有的時間,然後我的第二個表是預約約會,其中列出約會,如果它的約會時間和日期與從第一個查詢中提取的時間和日期相匹配。顯示來自嵌套查詢的多個結果?

我無法弄清楚的是,如果第二個查詢中的2個條目符合標準以同時顯示兩個結果。

我的繼承人設置:

$query = mysql_query("SELECT * FROM times", $db); 
while ($row = mysql_fetch_array($query)){ 
    $time = $row[time]; 
    $query2 = mysql_query("SELECT * FROM appts WHERE time = '$time' AND date = '$date' ", $db); 
    $apt = mysql_fetch_array($query2); 
    $aptid = $apt[id]; 
    echo "<tr><td>"; 
    echo date('h:i A', strtotime($row[time])); 
    echo "</td><td>$apt[name]</td></td><td>$apt[phone]</td><td>$apt[phone2]</td><td>$apt[src]</td><td>$apt[coach]</td><td>$apt[comments]</td><td>"; 
    if($aptid != ''){ 
     echo "<a href='index.php?date=$date&apptid=$aptid&action=delete'>Delete</a> &nbsp; <a href='index.php?date=$date&apptid=$aptid&action=x'>X</a> &nbsp; <a href='index.php?date=$date&apptid=$aptid&action=ns'>NS</a>"; 
    } 
    echo "</td></tr>"; 
} 

例如爲:2預約上午9點設置,其僅顯示第一個。 See screenshot

enter image description here

+0

你可以發表'appts'表的摘錄嗎?沒有結構/內容就很難檢查查詢。 –

+0

您是否預計在一次可能的時間內不會超過一次約會? – jtomaszk

+0

你能提供一個[SQLFiddle](http://sqlfiddle.com/)嗎? –

回答

5

其修改爲

$query = mysql_query("SELECT * FROM times", $db); 
while ($row = mysql_fetch_array($query)){ 
    $time = $row[time]; 
    $query2 = mysql_query("SELECT * FROM appts WHERE time = '$time' AND date = '$date' ", $db); 

    while($apt = mysql_fetch_array($query2)) 
    { 
    $aptid = $apt[id]; 
    echo "<tr><td>"; 
    echo date('h:i A', strtotime($row[time])); 
    echo "</td><td>$apt[name]</td></td><td>$apt[phone]</td><td>$apt[phone2]</td><td>$apt[src]</td><td>$apt[coach]</td><td>$apt[comments]</td><td>"; 
    if($aptid != ''){ 
     echo "<a href='index.php?date=$date&apptid=$aptid&action=delete'>Delete</a> &nbsp; <a href='index.php?date=$date&apptid=$aptid&action=x'>X</a> &nbsp; <a href='index.php?date=$date&apptid=$aptid&action=ns'>NS</a>"; 
    } 
    echo "</td></tr>"; 
} 
} 

你必須在裏面運行另一個嵌套循環。

+0

不完全是我所需要的,但絕對如何我需要做到這一點。謝謝,我希望能從這裏弄明白! – robz228

0

mysql_fetch_array將只取一行數據。從PHP手冊:

mysql_fetch_array - 從結果集中取得一行作爲關聯數組,一個 數字數組,或二者

這意味着你需要循環得到多個約會,就像第一循環:

while($apt = mysql_fetch_array($query2)) { 
    $aptid = $apt[id]; 
    echo "<tr><td>"; 
    echo date('h:i A', strtotime($row[time])); 
    echo "</td><td>$apt[name]</td></td><td>$apt[phone]</td><td>$apt[phone2]</td><td>$apt[src]</td><td>$apt[coach]</td><td>$apt[comments]</td><td>"; 
    if($aptid != ''){ 
     echo "<a href='index.php?date=$date&apptid=$aptid&action=delete'>Delete</a> &nbsp; <a href='index.php?date=$date&apptid=$aptid&action=x'>X</a> &nbsp; <a href='index.php?date=$date&apptid=$aptid&action=ns'>NS</a>"; 
    } 
    echo "</td></tr>"; 
}