Олег Г.
57 повідомлень
#16 років тому
Подскажите , почему в html скипт возращает токо одно текущее значение с бд , если на самом деле результатов =3

$sql="select id , name from contents where link='common/galery.php' ";
$db->next_record();

if($db->next_record()){
do{
$T->set_var(array(
'v_page_id'=>$db->f('id',
'v_page_name'=>$db->f('name'));



}while ($db->next_record());
}

$T->parse('B_LIST', 'list', true);
Константин Т.
589 повідомлень
#16 років тому
Я не знаю, на каком языке можно делать такой жуткий код, но скорее всего надо переписать как-то так:


$sql="select id , name from contents where link='common/galery.php' ";
while($db->next_record()){
$T->set_var(array(
'v_page_id'=>$db->f('id'),
'v_page_name'=>$db->f('name')
)
);
}

$T->parse('B_LIST', 'list', true);
Сергей В.
244 повідомлення
#16 років тому
Немного не знаком с этим классом $db. Пользуюсь только тем что сам написал. Может приведете полностью код класса на ?
Владимир Лукьяненко
124 повідомлення
#16 років тому
goter, неплохо бы узнат что в функции next_record()
Олег Г.
57 повідомлень
#16 років тому
Next_record - ставит метку на следующий елемент масива
Владимир Лукьяненко
124 повідомлення
#16 років тому
Цитата:
Next_record - ставит метку на следующий елемент масива

ну если так то у вас должно все работать длжно
Константин Т.
589 повідомлень
#16 років тому
Ну как оно может работать, если первая и третья запись теряется?

Вообще надо пистаь проще, чтобы не разбираться в порядке следования проверок, не использовать конструкции отличные от for() и while() ...
Олег Г.
57 повідомлень
#16 років тому
Переписал вот так , но всеравно результат тотже

Цитата:
$sql="select id , name from contents where link='common/galery.php' ";
$db->query($sql);

while($db->next_record()){

$T->set_var(array(
'v_page_id'=>$db->f('id',
'v_page_name'=>$db->f('name'));



}
}

$T->parse('B_LIST', 'list', true);

Цитата ("Pilat66"):
ну как оно может работать, если первая и третья запись теряется?

Вообще надо пистаь проще, чтобы не разбираться в порядке следования проверок, не использовать конструкции отличные от for() и while() ...


так а как зделать чтоб не терялись?
Константин Т.
589 повідомлень
#16 років тому
Если результат с моим кодом тот же, то надо смотреть на класс, который в $db - что-то там не то. Я предположил, что next_record() переводит курсор на следующую позицию и возвращает true если есть данные. Раз не работает, значит next_record() работает не так.
Вообще лучше пользоваться обычными методами для доступа к данным, а это на настоящий день то, что делает prepare() execute() fetch() последовательность, например PDO - тогда не будет вопросов про странные классы.
Константин Т.
589 повідомлень
#16 років тому
Кстати. $T - тоже место неизвестное. Твой код скорее всего неправильный однозначно, но вот что такое $T - есть ли там накопитель в виде массива, или только одно значение $T->set_var() может сохранить?
Надо писать проще!!!
Константин Т.
589 повідомлень
#16 років тому
Какая-то неясная связь между $sql и $db - откуда $db узнаёт, что запрос надо выполнить из $sql ? Если $sql - глобальная переменная для $db - то это мегазасада, такой код невозможно поддерживать.
Вадим Т.
3240 повідомлень
#16 років тому
Cкорее всего, используется такая либа MDB. Если так, то явно неудачный выбор. goter, попробуйте такое:

$sql="select id , name from contents where link='common/galery.php' ";
$db->query($sql);

while ($db->next_record()) {
echo "id: " . $db->f('id') . "<br>";
}

Что выдаст на экран?
Андрей Д.
1267 повідомлень
#16 років тому
$sql="select id , name from contents where link='common/galery.php' ";

while($db->next_record())
{
$T->set_var(array(
'v_page_id'=>$db->f('id'),
'v_page_name'=>$db->f('name')));
}

$T->parse('B_LIST', 'list', true);



проблемма в том что вы вызываете
$db->next_record();
3 раза

$sql="select id , name from contents where link='common/galery.php' ";
$db->next_record();

if($db->next_record()){
do{
$T->set_var(array(
'v_page_id'=>$db->f('id'),
'v_page_name'=>$db->f('name')));



}while ($db->next_record());
}

$T->parse('B_LIST', 'list', true);

из за чего элементы теряются (ненужный раз указатель перемещаете на другой элемент массива)
Олег Г.
57 повідомлень
#16 років тому
Цитата ("tvv"):
Cкорее всего, используется такая либа MDB. Если так, то явно неудачный выбор. goter, попробуйте такое:

$sql="select id , name from contents where link='common/galery.php' ";
$db->query($sql);

while ($db->next_record()) {
echo "id: " . $db->f('id') . "<br>";
}

Что выдаст на экран?


используетса библиотека phplib
для етого и надо витащить с бд данные чтоб поместить в переменные 'v_page_id' и 'v_page_name'
Андрей Д.
1267 повідомлень
#16 років тому
И не пойму как вы выполняете запрос, переменные сами по себе запросы не делают ($sql)
должно быть что-то на подобии такого:

$db->query($sql);
Вадим Т.
3240 повідомлень
#16 років тому
goter, запустите тот код, что я написал выше. и скажите, что выбаст на экран. таким образом для начала определим, где проблема - при работе с БД или же при работе с темплейтом.

или же вместо echo можете в лог писать, через error_log(....)
Андрей Д.
1267 повідомлень
#16 років тому
goter пиши мне в асю, я в онлай режиме помогу...
Олег Г.
57 повідомлень
#16 років тому
Всем кто отозвался пасиба , проблема решена