-1

Делаю рекурсивную функцию для вывода меню с неопределенным числом предков и потомков. Вот код:

<?

mysql_connect("localhost", "root", ""); mysql_select_db("BD");

//$zapros=mysql_query("select * from test where id=0"); //echo ($zapros);

function menu($parent, $h) { $h++;

$zapros = mysql_query("select * from test where id={$parent}");

while ($row = mysql_fetch_array($rezult)) {
    echo "{$row['name']}&lt;p&gt;";

    $zapros1 = mysql_query("select * from test where key={$row['id']}");

    while ($row1 = mysql_fetch_array($zapros1)) {
        echo " &lt;p&gt;{$row1['name']}&lt;p&gt;";
        $p = $row1['id'];
        menu($p, $h);

    }
}

} menu(0, 0);

?>

Таблица базы данных:

CREATE TABLE `test` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `key` int(11) DEFAULT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `ID` (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=cp1251;

В результате пишет мне:

Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in C:\xampplite\htdocs\test.php on line 16

Различные манипуляции ни к чему не приводят. Подскажите, пожалуйста, в чем может быть проблема?

Nicolas Chabanovsky
  • 51,426
  • 87
  • 267
  • 507

4 Answers4

2
$zapros = mysql_query("select * from test where id={$parent}");

У Вас:

while ($row = mysql_fetch_array($rezult)) {...

А надо:

while ($row = mysql_fetch_array($zapros)) {...
ilovetrancekrsk
  • 535
  • 3
  • 7
0

Попробуйте подключение вида:

$Link = mysql_connect($DBHost, $DBUser, $DBPassword) or die(mysql_error());
mysql_select_db($DBName, $Link) or die(mysql_error());
Avalon
  • 1,016
  • Не помогает. К базе подлючение хорошее, кажется в коде проблема... – new_russian_man Jul 20 '11 at 16:09
  • 1
  • while ($row = mysql_fetch_array($rezult)) {
  • замените на:

    while ($row = mysql_fetch_array($zapros)) {

    1. menu(0, 0);

    замените на:

    menu(11, 0);

    т.к. Вы при создании таблицы указали: AUTO_INCREMENT=11

    – Avalon Jul 20 '11 at 16:56