php минимальный временной интервал результата - PullRequest
0 голосов
/ 14 марта 2011

Таблица временных интервалов:

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

Ответы [ 3 ]

3 голосов
/ 14 марта 2011

Возможно, лучший способ печати только 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 вы можете использовать переменную-счетчик для выхода из цикла while

$i = 0;
while(($r = $q->fetch_array(MYSQLI_ASSOC)) && ($i < 5)) :
  echo '<tr>';
  echo '<td>'.$r['times'].'</td>';
  echo '</tr>';
  $i++;
endwhile;
0 голосов
/ 14 марта 2011

В зависимости от типа данных Times , попробуйте оператор BETWEEN … AND … :

SELECT *
FROM timeslot
WHERE Times BETWEEN "10:00" AND "12:00";
0 голосов
/ 14 марта 2011
$q = $db->query("SELECT * FROM timeslot WHERE id BETWEEN 1 AND 5");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...