|
|
|
| Есть таблица: id, login, step, pid. Дерево выстраивается по id и pid, выдает login. Но должно остановится когда step=2, ближайший по ветке. Не знаю как сделать, помогите. Извините за белеберду! | |
|
|
|
|
|
|
|
для: saniamu
(06.06.2010 в 00:30)
| |
<?
function go($pid = 0) {
$res = mysql_query("SELECT * FROM table WHERE pid = {$pid}");
if($res && mysql_num_rows($res)) {
while($r = mysql_fetch_assoc($res)) {
print_r($r);
if($r['step'] == 2)
return;
$pid = $r['pid'];
call_user_func(__FUNCTION__, $pid);
}
}
}
|
| |
|
|
|
|
|
|
|
для: sl1p
(06.06.2010 в 01:28)
| | вместо return; используй break; как вариант | |
|
|
|
|
|
|
|
для: sl1p
(06.06.2010 в 01:28)
| | неплохо бы проверять написанное.
Особенно с таким пафосом, как call_user_func(__FUNCTION__, ...) - подход, достойный перфекциониста. | |
|
|
|
|
|
|
|
для: Trianon
(06.06.2010 в 11:25)
| | я никогда так не юзал но думал будет удобней при изменении имени, а что здесь не так?:) | |
|
|
|
|
|
|
|
для: sl1p
(06.06.2010 в 12:57)
| | самое основное - в строке, где Вы переменной $pid значение присваиваете. | |
|
|
|
|
|
|
|
для: Trianon
(06.06.2010 в 13:06)
| | честно, слепой)
объясните) | |
|
|
|
|
|
|
|
для: sl1p
(06.06.2010 в 13:09)
| | что Вы ей присваиваете?
Ps. Почему Вы сами не хотите проверить работу функции? | |
|
|
|
|
|
|
|
для: Trianon
(06.06.2010 в 13:15)
| |
<?
function go($pid = 0) {
$res = mysql_query("SELECT * FROM table WHERE pid = {$pid}");
if($res && mysql_num_rows($res)) {
while($r = mysql_fetch_assoc($res)) {
print_r($r);
if($r['step'] == 2)
return;
call_user_func(__FUNCTION__, $r['id']);
}
}
}
|
точно))
Ps. Почему Вы сами не хотите проверить работу функции?
нет сил таблицу создать)
Ps. так а в чём проблема со строкой call_user_func(__FUNCTION__, $r['id']); ? | |
|
|
|
|
|
|
|
для: sl1p
(06.06.2010 в 13:47)
| | >Ps. Почему Вы сами не хотите проверить работу функции?
>нет сил таблицу создать)
А меня пытать силы нашлись.
>Ps. так а в чём проблема со строкой call_user_func(__FUNCTION__, $r['id']); ?
нет там проблемы.
просто на фоне той ошибки она выглядит слишком претенциозно. | |
|
|
|
|
|
|
|
для: sl1p
(06.06.2010 в 01:28)
| | Большое спасибо, сам бы я не додумался. Вот только хотелось бы чтобы выдавал один результат (login), да еще забыл условие правильно задать: step=2 или step=3 или step=4 и так далее до 8-ми, одно из этих условий, но обязательно ближайшее по ветке. Заранее благодарен. | |
|
|
|
|
|
|
|
для: saniamu
(06.06.2010 в 16:17)
| |
<?
function go($pid = 0) {
$res = mysql_query("SELECT * FROM table WHERE pid = {$pid}");
if($res && mysql_num_rows($res)) {
while($r = mysql_fetch_assoc($res)) {
echo $r['login'];
if($r['step'] >= 2)
return;
call_user_func(__FUNCTION__, $r['id']);
}
}
}
|
| |
|
|
|
|
|
|
|
для: sl1p
(06.06.2010 в 17:25)
| | Выдаёт несколько результатов, нужен один. | |
|
|
|
|
|
|
|
для: saniamu
(06.06.2010 в 18:15)
| | я если честно не могу понять что значит "ближайшее по ветке"
но возможно так:
<?
function go($pid = 0) {
$res = mysql_query("SELECT * FROM table WHERE pid = {$pid}");
if($res && mysql_num_rows($res)) {
while($r = mysql_fetch_assoc($res)) {
if($r['step'] >= 2)
return;
echo $r['login'];
call_user_func(__FUNCTION__, $r['id']);
}
}
}
|
| |
|
|
|
|
|
|
|
для: sl1p
(06.06.2010 в 19:23)
| | Вы пытаетесь думать за человека.
Что, в таком случае, Вы оставите ему? | |
|
|
|
|
|
|
|
для: Trianon
(06.06.2010 в 21:12)
| | возможно человек совсем не разбирается и правильній пример ему поможет разобраться :) | |
|
|
|
|
|
|
|
для: sl1p
(06.06.2010 в 21:24)
| | Допустим... правильный ...хм.. пример Вы ему уже дали.
И что? Он остановился разобраться хоть на минуту?
Они лишь ждет, пока Вы всё отальное за него добъете. | |
|
|
|
|
|
|
|
для: sl1p
(06.06.2010 в 19:23)
| | Прошу прощения! Всё работает, это я сам допустил небольшую ошибку. Спасибо за помощь. | |
|
|
|