[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Рекурсивный метод
Воитель
Бывают ли рекурсивные методы?
Перевёл функцию в метод класса, и сразу всё перестало пахать.



function vivod_dochernih_papok($nomer_papki,$level) {
$sql='SELECT nomer_papki, imya FROM `papki` WHERE nomer_roditelskoy_papki='.$nomer_papki;
$result=mysql_query($sql) or die(mysql_error());

while($row=mysql_fetch_array($result, MYSQL_BOTH)) {
for($i=0;$i<$level;$i++) echo "    ";
echo $row['imya']."<br />";
this->vivod_dochernih_papok($row['nomer_papki'],$level+1);
}
}





Спустя 3 часа, 55 минут, 9 секунд (7.09.2011 - 06:12) Nikitian написал(а):

this->vivod_dochernih_papok($row['nomer_papki'],$level+1);

Замените на

$this->vivod_dochernih_papok($row['nomer_papki'],$level+1);

Спустя 3 часа, 59 минут, 13 секунд (7.09.2011 - 10:11) Воитель написал(а):
Ну я тупица.

Спустя 17 минут, 25 секунд (7.09.2011 - 10:29) Winston написал(а):
Цитата (Воитель @ 7.09.2011 - 02:17)
WHERE nomer_roditelskoy_papki='.$nomer_papki

Здесь инъекция пройдет
Цитата (Воитель @ 7.09.2011 - 02:17)
mysql_fetch_array($result, MYSQL_BOTH)

Зачем тебе fetch_array да еще и с MYSQL_BOTH ? :huh: (MYSQL_BOTH и так по умолчанию).
Здесь fetch_array никаким боком не нужна, потому лучше так писать
while($row = mysql_fetch_assoc($result))

Цитата (Воитель @ 7.09.2011 - 02:17)
echo $row['imya']."<br />";

За вывод в методе могут руки по отрывать.
Почему бы не оформить вот так метод ?
Свернутый текст
function vivod_dochernih_papok($nomer_papki,$level) {
$sql = 'SELECT `nomer_papki`, `imya` FROM `papki` WHERE `nomer_roditelskoy_papki` = ' . (int)$nomer_papki;
$result = mysql_query($sql) or die(mysql_error());

$names = '';
while($row = mysql_fetch_assoc($result)) {
for($i = 0; $i < $level; $i++)
$names .= $row['imya'] . "<br />";
$this->vivod_dochernih_papok($row['nomer_papki'],$level+1);

// Или возможно даже так
$names .= $this->vivod_dochernih_papok($row['nomer_papki'],$level+1);
}

return $names;
}


_____________
Вечно учусь.
Быстрый ответ:

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