Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка записи до условия (цикл)
 
 автор: PSB   (26.02.2011 в 15:08)   письмо автору
 
 

Приветствую.
Нужно выбрать предположим, 10 записей из таблицы , потом выбрать последнюю (десятую), проверить её поле на условие, если оно соответствует условию то прекратить цикл, если не соответствует то выбрать из базы 11 запись и проверить её и так до тех пор пока запись не будет соответствовать условию.

Другими словами, занести в массив все записи и по очереди начиная с десятой проверять на условие.

  Ответить  
 
 автор: Trianon   (26.02.2011 в 15:25)   письмо автору
 
   для: PSB   (26.02.2011 в 15:08)
 

в чем затруднение?

  Ответить  
 
 автор: PSB   (26.02.2011 в 15:40)   письмо автору
 
   для: Trianon   (26.02.2011 в 15:25)
 

Затруднение как организовать цикл

  Ответить  
 
 автор: Trianon   (26.02.2011 в 16:28)   письмо автору
 
   для: PSB   (26.02.2011 в 15:40)
 

то есть?
Обычным образом.
$num = 0;
while($row = mysql_fetch... )
{
   ++$num;

   // здесь проверки ,  break и прочие операторы, формирующие результат.  . 
   //...
]

  Ответить  
 
 автор: PSB   (26.02.2011 в 16:41)   письмо автору
 
   для: 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;

  Ответить  
 
 автор: Trianon   (26.02.2011 в 16:50)   письмо автору
 
   для: PSB   (26.02.2011 в 16:41)
 

Ошибки:
1. применен цикл do { ..} while() вместо while(){ ... } - нарушение логики выборки записей.
2. запрос данных помещен внутрь цикла их выборки. - цикл будет брать одну и ту же строку бесконечно.
3. применен LIMIT (причем с некорректными параметрами) в то время как изначально количество записей неизвестно.
4. SELECT применен без ORDER BY - а ограниченная выборка не имеет смысла - (та как в таблице нет собственного порядка строк - его следует задавать в запросе.)

и не очень ясно, что за данные в конце концов требуется получить.

как-то так.

  Ответить  
 
 автор: PSB   (26.02.2011 в 16:59)   письмо автору
 
   для: Trianon   (26.02.2011 в 16:50)
 

Нужно сделать постраничный вывод записей из базы. Условие такое, что бы поле не равнялось нулю. Т.е есть, к примеру, в базе 100 записей и все соответствуют условию, т.е поле у всех равно нулю. Тогда выводим по 10 записей на страничке. Но если среди этих записей например 11 имеет в поле не ноль тогда выводим 11 записей на страничке и так далее, если и 11 и 12 и 13 имеют в поле не ноль тогда выводим 13 записей. Т.е следующая страничка и самая первая, должны начинаться обязательно с записью у которой поле равно нулю.

  Ответить  
 
 автор: mihdan   (27.02.2011 в 04:59)   письмо автору
 
   для: PSB   (26.02.2011 в 16:59)
 

http://www.softtime.ru/info/articlephp.php?id_article=33

  Ответить  
 
 автор: Trianon   (27.02.2011 в 08:45)   письмо автору
 
   для: 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

  Ответить  
 
 автор: PSB   (27.02.2011 в 10:43)   письмо автору
 
   для: Trianon   (27.02.2011 в 08:45)
 

Запутал Вас и себя ))) Это комментарии древовидные и вот как их выводить постранично не могу понять. Даты разные id разные, как отсортировать не представляю ))

  Ответить  
 
 автор: Trianon   (27.02.2011 в 12:54)   письмо автору
 
   для: PSB   (27.02.2011 в 10:43)
 

сперва следует продумать модель разбиения на страницы.
Потом уже пытаться её реализовать.

  Ответить  
 
 автор: PSB   (27.02.2011 в 13:52)   письмо автору
 
   для: Trianon   (27.02.2011 в 12:54)
 

Ну пытаюсь прикрутить то, что mihdan предложил, только вместо жёсткого $num хотел сделать его плавающим, что бы не было разрыва в комментариях на которые есть ответ. Т.е если комментарий имеет ответ, то он должен отобразится со всеми ответами, не важно сколько их. Как должно быть вроде понимаю, а вот как сделать. ) Проблема в сортировке, по дате ни как, коммент 1, может иметь ответ с датой намного позже, плюс на ответ может быть ещё ответ. Единственный путь, это выбирать комменты без ответа, и их выводить.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования