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

Форум PHP

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

 

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

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

тема: Не пойму логики, пропадают промежуточные значения в конструкции if
 
 автор: kireyev   (22.12.2010 в 09:05)   письмо автору
 
 

<? if (mysql_num_rows($sql_portfolio)>0) { ?><div id="img_line"><? ?>
<? 
while ($portfolio mysql_fetch_array($sql_portfolio) AND $portfolio['order'] < 5) { echo $portfolio['order']; ?>
<a href="/portfolio/<? echo $portfolio['filename']; ?>" rel="<? echo $portfolio['rel']; ?>" onclick="return jsiBoxOpen(this)" title="<? echo $portfolio['title']; ?>"><img src="/portfolio/<? echo $portfolio['filename']; ?>" width="151" height="100" alt="<? echo $portfolio['title']; ?>" /></a><? ?>
<? 
if (mysql_num_rows($sql_portfolio)>0) { ?></div><? ?>

<? if (mysql_num_rows($sql_portfolio)>4) { ?><div id="img_line"><? ?>
<? 
while ($portfolio mysql_fetch_array($sql_portfolio) AND $portfolio['order'] > AND $portfolio['order'] < 9) { echo $portfolio['order']; ?>
<a href="/portfolio/<? echo $portfolio['filename']; ?>" rel="<? echo $portfolio['rel']; ?>" onclick="return jsiBoxOpen(this)" title="<? echo $portfolio['title']; ?>"><img src="/portfolio/<? echo $portfolio['filename']; ?>" width="151" height="100" alt="<? echo $portfolio['title']; ?>" /></a><? ?>
<? 
if (mysql_num_rows($sql_portfolio)>4) { ?></div><? ?>

<? if (mysql_num_rows($sql_portfolio)>8) { ?><div id="img_line"><? ?>
<? 
while ($portfolio mysql_fetch_array($sql_portfolio) AND $portfolio['order'] > 8) { echo $portfolio['order']; ?>
<a href="/portfolio/<? echo $portfolio['filename']; ?>" rel="<? echo $portfolio['rel']; ?>" onclick="return jsiBoxOpen(this)" title="<? echo $portfolio['title']; ?>"><img src="/portfolio/<? echo $portfolio['filename']; ?>" width="151" height="100" alt="<? echo $portfolio['title']; ?>" /></a><? ?>
<? 
if (mysql_num_rows($sql_portfolio)>8) { ?></div><? ?>

Всего значений в БД 12 штук. 5 и 9 не выводятся на страницу. Почему?

  Ответить  
 
 автор: ONYX   (22.12.2010 в 09:57)   письмо автору
 
   для: kireyev   (22.12.2010 в 09:05)
 

Код голимый кошмар.

Суть в том что вы указываете значения в диапазоне, в первой проверке меньше 5 (<5), тоеть 5-я запись уже не выведется (тоесть должно быть <=5 что бы запись была выведена)
Далее во втором цикле диапазон между (>4 и < 9 ), не выводится 9 запись, конечно она исключена из диапазона, та же проблема и в последнем цикле

  Ответить  
 
 автор: kireyev   (22.12.2010 в 10:10)   письмо автору
 
   для: ONYX   (22.12.2010 в 09:57)
 

я понимаю так:
1 цикл: <5 выводятся 1,2,3,4
2 цикл: >4 <9 выводятся 5,6,7,8
3 цикл: >8 выводятся 9,10,11,12 и т.д.

Но этого не происходит. 5 и 9 теряются

Упрощу код:

<? while ($portfolio mysql_fetch_array($sql_portfolio) AND $portfolio['order'] < 5) { echo $portfolio['order']; } ?> 

<? while ($portfolio mysql_fetch_array($sql_portfolio) AND $portfolio['order'] > AND $portfolio['order'] < 9) { echo $portfolio['order']; } ?> 

<? while ($portfolio mysql_fetch_array($sql_portfolio) AND $portfolio['order'] > 8) { echo $portfolio['order']; ?> 

  Ответить  
 
 автор: ONYX   (22.12.2010 в 10:22)   письмо автору
 
   для: kireyev   (22.12.2010 в 10:10)
 

меня смущает сама конструкция

<? while ($portfolio mysql_fetch_array($sql_portfolio) AND $portfolio['order'] > 8?>


мне кажется на первой итерации значение в $portfol просто теряется, попробуйте проверить все ли значения возвращает вам sql запрос

  Ответить  
 
 автор: kireyev   (22.12.2010 в 10:33)   письмо автору
 
   для: ONYX   (22.12.2010 в 10:22)
 

Сделал проверку на каждом этапе:
echo mysql_num_rows($sql_portfolio); 

Все нормально, ничего не вываливается. Проблема не решена.

  Ответить  
 
 автор: ride   (22.12.2010 в 10:50)   письмо автору
 
   для: kireyev   (22.12.2010 в 10:33)
 

а вы сортировали по полю order?
upd
если даже все отсортировано, все равно 5 и 9 вы потеряете.
если сейчас $portfolio['order'] == 5, вы выходите из цикла
<? while ($portfolio = mysql_fetch_array($sql_portfolio) AND $portfolio['order'] < 5) { echo $portfolio['order']; ?>
<a href="/portfolio/<? echo $portfolio['filename']; ?>" rel="<? echo $portfolio['rel']; ?>" onclick="return jsiBoxOpen(this)" title="<? echo $portfolio['title']; ?>"><img src="/portfolio/<? echo $portfolio['filename']; ?>" width="151" height="100" alt="<? echo $portfolio['title']; ?>" /></a><? } ?>

а тут вы берете следующую запись(c order==6), не обработав с order==5


<? while ($portfolio = mysql_fetch_array($sql_portfolio) AND $portfolio['order'] > 4 AND $portfolio['order'] < 9) { echo $portfolio['order']; ?>
<a href="/portfolio/<? echo $portfolio['filename']; ?>" rel="<? echo $portfolio['rel']; ?>" onclick="return jsiBoxOpen(this)" title="<? echo $portfolio['title']; ?>"><img src="/portfolio/<? echo $portfolio['filename']; ?>" width="151" height="100" alt="<? echo $portfolio['title']; ?>" /></a><? } ?>

аналогично с 9

  Ответить  
 
 автор: Valick   (22.12.2010 в 10:28)   письмо автору
 
   для: kireyev   (22.12.2010 в 10:10)
 

-

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

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