|
|
|
| Приветствую.
Нужно выбрать предположим, 10 записей из таблицы , потом выбрать последнюю (десятую), проверить её поле на условие, если оно соответствует условию то прекратить цикл, если не соответствует то выбрать из базы 11 запись и проверить её и так до тех пор пока запись не будет соответствовать условию.
Другими словами, занести в массив все записи и по очереди начиная с десятой проверять на условие. | |
|
|
|
|
|
|
|
для: PSB
(26.02.2011 в 15:08)
| | в чем затруднение? | |
|
|
|
|
|
|
|
для: Trianon
(26.02.2011 в 15:25)
| | Затруднение как организовать цикл | |
|
|
|
|
|
|
|
для: PSB
(26.02.2011 в 15:40)
| | то есть?
Обычным образом.
$num = 0;
while($row = mysql_fetch... )
{
++$num;
// здесь проверки , break и прочие операторы, формирующие результат. .
//...
]
|
| |
|
|
|
|
|
|
|
для: Trianon
(26.02.2011 в 16:28)
| | Посмотрите пожалуйста на этот код. Правильно я понимаю, что будет идти проверка начиная с 10 записи из базы до той записи где $chk['pole'] будет равнятся нулю и в итоге $final примет значение $num.
$num = 10;
do
{
$zapros= mysql_query("SELECT * FROM baza LIMIT $num,$num");
$chk = mysql_fetch_array($zapros);
$num++;
}
while ($chk['pole'] > 0);
$final = $num;
|
| |
|
|
|
|
|
|
|
для: PSB
(26.02.2011 в 16:41)
| | Ошибки:
1. применен цикл do { ..} while() вместо while(){ ... } - нарушение логики выборки записей.
2. запрос данных помещен внутрь цикла их выборки. - цикл будет брать одну и ту же строку бесконечно.
3. применен LIMIT (причем с некорректными параметрами) в то время как изначально количество записей неизвестно.
4. SELECT применен без ORDER BY - а ограниченная выборка не имеет смысла - (та как в таблице нет собственного порядка строк - его следует задавать в запросе.)
и не очень ясно, что за данные в конце концов требуется получить.
как-то так. | |
|
|
|
|
|
|
|
для: Trianon
(26.02.2011 в 16:50)
| | Нужно сделать постраничный вывод записей из базы. Условие такое, что бы поле не равнялось нулю. Т.е есть, к примеру, в базе 100 записей и все соответствуют условию, т.е поле у всех равно нулю. Тогда выводим по 10 записей на страничке. Но если среди этих записей например 11 имеет в поле не ноль тогда выводим 11 записей на страничке и так далее, если и 11 и 12 и 13 имеют в поле не ноль тогда выводим 13 записей. Т.е следующая страничка и самая первая, должны начинаться обязательно с записью у которой поле равно нулю. | |
|
|
|
|
|
|
|
|
для: PSB
(26.02.2011 в 16:59)
| | если как страница заканчивается примерно понятно, то как она начинается непонятно совсем.
В таких условиях я бы ввел таблицу страничного индекса pageindex(id, first_id, last_id)
с выборкой
SELECT b.*
FROM pageindex p
JOIN baza b ON b.id BETWEEN p.first_id AND p.last_id
WHERE p.id = $page
ORDER BY b.id
|
| |
|
|
|
|
|
|
|
для: Trianon
(27.02.2011 в 08:45)
| | Запутал Вас и себя ))) Это комментарии древовидные и вот как их выводить постранично не могу понять. Даты разные id разные, как отсортировать не представляю )) | |
|
|
|
|
|
|
|
для: PSB
(27.02.2011 в 10:43)
| | сперва следует продумать модель разбиения на страницы.
Потом уже пытаться её реализовать. | |
|
|
|
|
|
|
|
для: Trianon
(27.02.2011 в 12:54)
| | Ну пытаюсь прикрутить то, что mihdan предложил, только вместо жёсткого $num хотел сделать его плавающим, что бы не было разрыва в комментариях на которые есть ответ. Т.е если комментарий имеет ответ, то он должен отобразится со всеми ответами, не важно сколько их. Как должно быть вроде понимаю, а вот как сделать. ) Проблема в сортировке, по дате ни как, коммент 1, может иметь ответ с датой намного позже, плюс на ответ может быть ещё ответ. Единственный путь, это выбирать комменты без ответа, и их выводить. | |
|
|
|