| |
|
|
| |
<?
function subdirbd2($id_catalog,$dir)
{
$query = "SELECT * FROM libcat
WHERE id_catalog = '$id_catalog'";
$ctg = mysql_query($query);
if(mysql_num_rows($ctg)>0)
{
$cat = mysql_fetch_array($ctg);
$dir = $cat['name']."/".$dir;
if ($cat['id_parent'] != 0) subdirbd2($cat['id_parent'],$dir);
}
echo $dir;
return $dir;
}
|
вызываю функцию
<?
echo subdirbd2($id_catalog,"")."^^<br>"; // возвращает ОСТ/^^
|
на экране
<?
Стандарты/ОСТ/ //то что мне надо //выдает echo из function
ОСТ/ //выдает echo из function
ОСТ/^^ //то что выдает echo subdirbd2():(
|
| |
| |
|
|
| |
|
|
| |
для: P@Sol
(03.10.2006 в 17:23)
| | | Просто надо убрать в функции строчку:
Как минимум на одну строчку меньше будет на экране. А насчет второй строчки, может это из-за рекурсии?! | |
| |
|
|
| |
|
|
| |
для: komex
(03.10.2006 в 17:29)
| | |
я написал для того чтобы показать что мне надо, если ее убрать, то две верхнии строки пропадут...и выведется третья строка, но она не правильная
Подправил первый пост | |
| |
|
|
| |
|
|
| |
для: P@Sol
(03.10.2006 в 17:35)
| | | Странно! По идее первые 2 строки должны быть одинаковые! А зачем нужен редирект? | |
| |
|
|
| |
|
|
| |
для: komex
(03.10.2006 в 17:40)
| | | они будут разные из-за рекурсии...но почему именно так у меня происходит не понятно...
сначало из бд достаетс ОСТ, потом Стандарт.
а где вы редирект нашли? | |
| |
|
|
| |
|
|
| |
для: komex
(03.10.2006 в 17:40)
| | | Извиняюсь, не ридерект, а рекурсия, конечно! Почему-то не могу сообщение отредактировать! =( | |
| |
|
|
| |
|
|
| |
для: P@Sol
(03.10.2006 в 17:35)
| | | У тебя ведь как происходит?! Сначала при вызове функции происходит обращение к БД, потом что-то там выводится с помощью echo, а далее это же значение возвращается фуекцией, и опять выводится (echo subdirbd2($id_catalog,"")."^^<br>";). Значит 2 строчки должны совпасть! По идее это 2 и 3 строчки! А вот первая не понятно откуда берется (скорее всего из-за рекурсии)! Закоментируй рекурсию и посмотри что выведет? | |
| |
|
|
| |
|
|
| |
для: komex
(03.10.2006 в 17:49)
| | | без рекурсии выведет "ОСТ/^^" | |
| |
|
|
| |
|
|
| |
для: P@Sol
(03.10.2006 в 17:51)
| | | А надо что бы что выводило? Для чего этот скрипт вообще? | |
| |
|
|
| |
|
|
| |
для: komex
(03.10.2006 в 17:49)
| | | и еще разок
заходим в функцию, выбираем из бд сначало по id_catalog и получаю dir = "ОСТ/", захожу второй раз в функцию и получаю dir = "Стандарты/ОСТ/" - это мне и нужно вывести на экран...но он возвращает первый дир, хотя видно, что нужный мне dir тоже существует
составляю полный путь к каталогу, если известно его id | |
| |
|
|
| |
|
|
| |
для: P@Sol
(03.10.2006 в 17:23)
| | | Я кажется понял! Попробуй так:
<?
function subdirbd2($id_catalog,$dir)
{
$query = "SELECT * FROM libcat
WHERE id_catalog = '$id_catalog'";
$ctg = mysql_query($query);
if(mysql_num_rows($ctg)>0)
{
//Можно попробовать заменить на
//$cat = mysql_result($ctg); раз выбирается 1 строка.
$cat = mysql_fetch_array($ctg);
$dir = $cat['name']."/".$dir;
if ($cat['id_parent'] != 0) $dir = subdirbd2($cat['id_parent'],$dir);
}
return $dir;
}
?>
|
А вызавать также:
<?
echo subdirbd2($id_catalog,"")."^^<br>";
?>
|
| |
| |
|
|
| |
|
|
| |
для: komex
(03.10.2006 в 18:01)
| | | cheops help | |
| |
|
|
| |
|
|
| |
для: P@Sol
(04.10.2006 в 09:58)
| | | Что, не работает как я написал что ли? =( | |
| |
|
|
| |
|
|
| |
для: komex
(04.10.2006 в 11:08)
| | | я даже не проверял...я не заметил изменений логических...а из бд все и так достается нормально...но return возвращает не последний $dir, а первый
использую первый листинг, но с 3 уровня
1Стандарты/ГОСТ/ОСТ/ //должен вернуть
2ГОСТ/ОСТ/
3ОСТ/ // вовращает
ОСТ/^^
|
1,2,3 - id каталогов, т.е. сначало в функцию заходит id=3, потом id=2 и последним id=1 | |
| |
|
|
| |
|
|
| |
для: P@Sol
(04.10.2006 в 11:19)
| | | А по моему все должно работать как надо! Ты проверь! | |
| |
|
|
| |
|
|
| |
для: komex
(04.10.2006 в 11:20)
| | | 1. ты пропустил 1обязательный параметр и 1 необязательный
2. даже если вписать обязательный параметр, ошибок будет еще больше, я проверил | |
| |
|
|
| |
|
|
| |
для: P@Sol
(03.10.2006 в 17:23)
| | | help | |
| |
|
|
| |
|
|
| |
для: P@Sol
(03.10.2006 в 17:23)
| | | Следует исправить строку
<?php
if ($cat['id_parent'] != 0) subdirbd2($cat['id_parent'],$dir);
?>
|
следующим образом
<?php
if ($cat['id_parent'] != 0) $dir = subdirbd2($cat['id_parent'],$dir);
?>
|
| |
| |
|
|