SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 06.07.2011 17:30:31

Tony
Участник
Зарегистрирован: 06.07.2011
Сообщений: 1

Возник вопрос по поводу запроса

Доброго времени суток!
У меня возник такой вопрос по поводу создания запроса:
имеется таблица products, нужно сделать запрос так, чтобы в каждой строке было по 5 объектов.
К примеру запрос по ид: в первой строке с 1го по 5й ид отображается товар, на второй строке с 6 по 10й и так далее.
На данный момент смог только сделать то, что задумал через ЛИМИТ
("SELECT * FROM products ORDER BY id LIMIT 0,5").
но приходится для каждой строки прописывать свой запрос(((
возможно ли сделать так, чтобы не прописывать каждый раз запросы для каждой строки?
Заранее благодарен за помощь)

Неактивен

 

#2 07.07.2011 19:00:34

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Возник вопрос по поводу запроса

Это задача для клиентского приложения, а не для базы данных.

Неактивен

 

#3 08.07.2011 01:35:12

pixmaster
Участник
Зарегистрирован: 08.07.2011
Сообщений: 5

Re: Возник вопрос по поводу запроса

вставлять в запрос переменные $start и $length, где $length=5, а $start=$length*$i, а $i в цикле

"SELECT * FROM products ORDER BY id LIMIT $start,$length"


... короче

$length = 5;
for ($i=0;$i<10;$i++)
 {
  $start = $length*$i;
  $sql    = 'SELECT * FROM products ORDER BY id LIMIT '.$start.','.$length;
 }
 

Неактивен

 

#4 09.07.2011 23:37:43

vladislav
Участник
Зарегистрирован: 26.10.2010
Сообщений: 17

Re: Возник вопрос по поводу запроса

Не делайте запрос в цикле, это бред!

1) Выбираем все нужные товары одним запросом (LIMIT 0, 100 например) и загоняем из в массив.
2)

$i = 1;
$total = count($products);
echo '<div class="row">';
foreach ($products as $product)
{
  echo '<div class="col">';
  ... выводим нужные данные
  echo '</div>';

  if ($i % 5 == 0 and $i < $total) echo '</div><div class="row">'; // комментарий ниже*
  $i++;
}
echo '</div>';


* если остаток при делении - 0 И это не последний товар -  закрываем строку и начинаем новую. Если не ставить проверку на последний товар, то в случае если товаров будет 5, 10, и т.д, то будет появится пустая строка.

Стили следующие:
.row {
  clear: both;
  overflow: hidden;
}
.col {
  float: left;
}

Можно использовать UL LI либо TABLE TR TD.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson