2013-06-24 6 views
0

Я пишу вещь типа записи для встречи, и у меня есть таблица только для возможных времен, поэтому мой первый запрос состоит в том, чтобы перечислить все время, тогда моя вторая таблица назначена на свидания, которая перечисляет внутри таблицы встречу, если ее время и дата соответствуют времени и дате, выведенным из первого запроса.Отображение нескольких результатов из вложенного запроса?

То, что я не могу понять, состоит в том, что 2 записи второго запроса соответствуют критериям для одновременного отображения обоих результатов.

Heres мои настройки:

$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>"; 
}