-2

私はグーグルで調べて、私のために働くことができるものを見つけました(http://wizardinternetsolutions.com/web-database-design/dynamic-multilevel-css-menu-php-mysql/)。動作するようになったら、少し変更して自分のニーズに合わせて調整する予定です。-Ej。乱数ではなくlabelとして使用したい。Primary Key

ただし、次のエラーが表示されます: 警告: mysql_fetch_assoc() は、パラメーター 1 がリソースであり、23 行目の /home/content/81/10038181/html/_html/menu/menu-generator.php で指定されたブール値であると想定しています

面白いことに、クエリを実行すると問題なく動作します。

テーブル構造(SQL)は次のとおりです。

CREATE TABLE `menu` (
  `id` int(11) NOT NULL auto_increment,
  `label` varchar(50) NOT NULL default '',
  `link` varchar(100) NOT NULL default '#',
  `parent` int(11) NOT NULL default '0',
  `sort` int(11) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=248 DEFAULT CHARSET=latin1;

これがデータのモックアップです

PHP:

$dbc = new mysqli("localhost", "username", "password", "temp_database");
$dbn = "temp_database";
    function display_children($parent, $level) {
        $sql = "SELECT a.id, a.label, a.link, Deriv1.Count FROM `$dbn`.`menu` a  LEFT OUTER JOIN (SELECT `parent`, COUNT(`parent`) AS Count FROM `".$dbn."`.`menu` GROUP BY parent) Deriv1 ON a.id = Deriv1.parent WHERE a.parent=" . $parent . " ORDER BY `sort`";
        //echo $sql;  //For testing purposes
        $result = $dbc->query($sql);
        echo "<ul>\n";

        while ($row = $result->fetch_assoc() ) {
            if ($row['Count'] > 0) {
                echo "<li><a href='" . $row['link'] . "'>" . $row['label'] . "</a>";
                display_children($row['id'], $level + 1);
                echo "</li>";
                }
            elseif ($row['Count']==0) {
                echo "<li><a href='" . $row['link'] . "'>" . $row['label'] . "</a></li>";
                } 
            else;
        }
        echo "</ul>";
    }
    display_children(0, 1);
4

1 に答える 1

0

リンクをたどりました-データベースに接続するコードはまったくありません。を含む別の PHP-MySql チュートリアルを見てくださいmysql_connect

また、これは簡単な修正にすぎmysql_ません。拡張機能は廃止されました。代わりに mysqli を使用してください。php.net のドキュメントを確認してください

于 2012-12-17T06:00:30.023 に答える