[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите новичку
Гость_Евгений
Знатоки, подскажите, что за "х" такое.

есть очень простой цикл:

for($i=$first;$i<=$last;$i++)
{
$result = mysql_query("SELECT name FROM intimage WHERE id =$i+1");
$row=mysql_fetch_assoc($result);

echo $row['name'];};

при отладке все ОК, в браузере выводит пустые строки.



Спустя 2 минуты, 57 секунд (7.03.2012 - 15:54) Commander Keen написал(а):
не совсем я понял, для чего цикл for ?

Спустя 1 минута, 30 секунд (7.03.2012 - 15:55) Visman написал(а):
Раз пустые, значит в таблице в поле name в диапазоне id от first+1 до last+1 ни чего нет, либо самих строк нет.

И писать лучше не так
 id =$i+1"

а так
 id =".($i+1)

Либо сразу диапазон нормально задавать!

Спустя 6 минут, 50 секунд (7.03.2012 - 16:02) Гость_Евгений написал(а):
Попробовал изменить на вариант со скобками id =".($i+1) в отладчике все отлично, в браузере - пустые строки sad.gif

Спустя 2 минуты, 19 секунд (7.03.2012 - 16:04) Visman написал(а):
Замени
echo $row['name'];};

на

print_r($row);
}


И смотри что в строках таблицы интересного происходит.

Спустя 13 минут, 9 секунд (7.03.2012 - 16:17) Guest написал(а):
Попробовал сделать аналог в отдельном файле:
<?php
$first=0;
$last=3;

$test[]="/images/interior/dn_block.png";
$test[]="/images/interior/dn_block.png1";
$test[]="/images/interior/dn_block.png2";
$test[]="/images/interior/dn_block.png3";

for($i=$first;$i<=$last;$i++)
{
echo $test[$i];
}
?>

Работает прекрасно. Переношу назад в рабочий файл этот же цикл - вывод пустой. В файле используются внешние скрипты на ява:

<script src='/script/engine/js/jquery.min.js' type='text/javascript'></script>
<script src='/script/engine/js/visuallightbox.js' type='text/javascript'></script>
<script src='/script/engine/js/vlbdata.js' type='text/javascript'></script>

от jquery.com. Их блокировка желаемого результата не дает...

если в рабочем файле указать не echo $test[$i];, а echo $test[1]; - все ОК.

Спустя 1 минута, 5 секунд (7.03.2012 - 16:18) Guest написал(а):
замена echo на print_r дает аналогичный результат. Пустой вывод.

Спустя 4 минуты, 6 секунд (7.03.2012 - 16:22) Visman написал(а):
Вероятно запросы к базе ни чего не возвращают или возвращают ошибку.

Спустя 2 минуты, 33 секунды (7.03.2012 - 16:25) Visman написал(а):
Добавь вывод ошибок к запросу как тут http://php.su/functions/?cat=mysql в примере сделано.

Спустя 6 минут, 21 секунда (7.03.2012 - 16:31) Гость_Евгений написал(а):
Проверку ошибок добавил, с базой ОК.

Спустя 3 минуты, 32 секунды (7.03.2012 - 16:35) Гость_Евгений написал(а):
Прошу прощения за "вынос мозга", но уже даже не так нужно, как интересно.

Добавил переменные цикла в явном виде - все работает ОК.

$first=0;
$last=3;

for($i=$first;$i<=$last;$i++)
{
$result = mysql_query("SELECT name FROM intimage WHERE id ="."($i+1)");
$row=mysql_fetch_assoc($result);

print_r($row);
}

Изначальный вариант:
$first=$p*$max-$max; (тип long, значение 0)
$last=($p*$max)-1; (тип long, значение 3)

Может $p - это какая нибудь константа языка?


Спустя 5 минут, 50 секунд (7.03.2012 - 16:41) Visman написал(а):
Цитата (Гость_Евгений @ 7.03.2012 - 21:35)
"($i+1)"

Я разве это писал?

А в явном виде это значит задавать цикл не от 0 до 3, а потом смещать значение на единицу, а от 1 до 4 и ни чего не смещать в запросе.

Спустя 17 минут, 26 секунд (7.03.2012 - 16:58) Guest написал(а):
разобрался ... дурацкая ситуация.

переменная $p передается через методом get и заменяется ява скриптом счетчика. При этом выражение $last=($p*$max)-1; становиться отрицательным.

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

Изменил $p на $page и все прекрасно заработало.

Спасибо большое за помощь и ответы.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.