#php #mysql #for-loop
#php #mysql #цикл for
Вопрос:
Таблица временных интервалов:
id Times
------------
1 10:00
2 10:30
3 11:00
4 11:30
5 12:00
6 12:30
7 13:00
8 13:30
9 14:00
10 14:30
$q = $db->query("SELECT * FROM timeslot");
while($r = $q->fetch_array(MYSQLI_ASSOC)) :
echo '<tr>';
echo '<td>'.$r['times'].'</td>';
echo '</tr>';
endwhile;
как мне отобразить только временной интервал с 10:00 до 12:00 (id: 1-5). как насчет использования forloop?
while($r = $q->fetch_array(MYSQLI_ASSOC)) :
for($i; $i<=5; $i ) {
echo '<tr>';
echo '<td>'.$r['times'].'</td>';
echo '</tr>';
}
endwhile;
он показывает пять временных интервалов, но время показывает неправильное время (все 10:00)? пожалуйста, помогите. есть другое решение?
Результат
times:
10:00
10:00
10:00
10:00
10:00
Ответ №1:
Возможно, лучший способ напечатать только 5 — это выбрать только 5
$q = $db->query("SELECT * FROM timeslot ORDER BY times LIMIT 5");
while($r = $q->fetch_array(MYSQLI_ASSOC)) :
echo '<tr>';
echo '<td>'.$r['times'].'</td>';
echo '</tr>';
endwhile;
Проблема с вашим WHILE / FOR заключается в том, что цикл WHILE получает только одну запись, затем FOR выполняется 5 раз для одной и той же записи.
while($r = $q->fetch_array(MYSQLI_ASSOC)) :
for($i; $i<=5; $i ) { // each one uses the same $r
Однако, как правило, только в PHP вы можете использовать переменную counter для выхода из цикла while
$i = 0;
while(($r = $q->fetch_array(MYSQLI_ASSOC)) amp;amp; ($i < 5)) :
echo '<tr>';
echo '<td>'.$r['times'].'</td>';
echo '</tr>';
$i ;
endwhile;
Ответ №2:
$q = $db->query("SELECT * FROM timeslot WHERE id BETWEEN 1 AND 5");
Ответ №3:
В зависимости от типа данных раз, попробуйте BETWEEN … AND …
оператор:
SELECT *
FROM timeslot
WHERE Times BETWEEN "10:00" AND "12:00";