【问题标题】:Dynamic PHP that creates navbar from SQL从 SQL 创建导航栏的动态 PHP
【发布时间】:2016-02-08 02:25:00
【问题描述】:

我试图找出我的代码哪里出错了。 我在导航栏的无序列表中使用 php 构建了导航栏,以从名为“shop”的数据库中检索名为“menu”的 SQL 表中的菜单元素,但无济于事。 我什至有一个 print_r,只是为了告诉我我的资源正在工作,但由于某种原因,整个代码并没有按照所写的那样创建菜单项。

这是代码:

    <?php 
$menu = [];
mysql_connect('localhost', 'root', '');
mysql_select_db('shop');

$result=  mysql_query("SELECT * FROM menu");
if ($result && mysql_num_rows($result)>0){

    while($row = mysql_fetch_assoc($result)){
        $menu[] = $row;
    }
}
echo '<pre>';
$error= print_r($menu);
$error = '' ;
 echo '</pre>';
?>

<!DOCTYPE html>

<html>
    <head>
        <link href="_CSS/style.css" rel="stylesheet" type="text/css"/>
            <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <div class="site-wrapper">
            <div class="header">
                <div class="navbar">
                <ul>
                    <li><a href="./">Home</a></li>
                    <?php if(count($menu) >0) : ?>
                    <?php foreach ($menu as $row) : ?>
                    <li><a href="#"><?php $row = ['link']; ?></a></li>
                        <?php endforeach; ?>
                        <?php endif; ?>
                </ul>
                </div>       
               <div class="member">
                    <ul>
                        <li><a href="../login.php"></a>Login</li>
                        <li><a href="../Register.php"></a>Register</li>
                    </ul>
                </div>
               </div>
        </div>

不幸的是,结果如下所示:

【问题讨论】:

  • 您的内联 PHP(列表内)中没有任何内容可以回显任何内容...您也不需要先检查数组的计数; foreach 将使用空数组做正确的事情。
  • 你不应该使用 mysql_* 函数,因为它们已被弃用并且正在被删除php.net/manual/en/function.mysql-connect.php

标签: php mysql list dynamic navbar


【解决方案1】:

你的问题是这样的:

<?php $row = ['link']; ?>

应该是这样的:

<?php echo $row['link']; ?>

也许你在尝试这样做时感到困惑:

<?= $row['link']?>

【讨论】:

    【解决方案2】:

    错误一:

    你用过

    $row = ['link'];

    你会在哪里得到这个错误Notice: Array to string conversion in ..

    所以你需要$row['link'];

    错误2:

    需要使用echo输出内容

    &lt;li&gt;&lt;a href="#"&gt;&lt;?php echo $row['link']; ?&gt;&lt;/a&gt;&lt;/li&gt;

    警告:不要使用 mysql_* 函数,因为它是 depreciated,而是使用 mysqli 或 PDO 来实现更安全的操作!

    【讨论】:

    • 首先,感谢 Sulthan 的回答!其次,我完全错过了,我想使用 = ... 那也可以吗?
    • @erezT 不客气。是的,你可以使用它!这是您将获得的输出示例s13.postimg.org/xr693pedz/image.png
    • 你应该使用这个&lt;li&gt;&lt;a href="#"&gt;&lt;?= $row['link']; ?&gt;&lt;/a&gt;&lt;/li&gt;来实现我在上面链接的截图中给出的那个;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 2019-03-12
    • 2017-05-09
    • 2016-11-15
    相关资源
    最近更新 更多