Перевёл функцию в метод класса, и сразу всё перестало пахать.
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;
}
_____________
Вечно учусь.