循环通过锚ID

时间:2013-07-11 13:43:42

标签: php html loops menu menubar

我道歉,这看起来不对,这是我第一次在这个网站上提问。

我正在使用html,css和php创建一个网页。具体来说,我正在尝试使用数据库中的信息在我的页面上创建子导航链接。

这是我的代码:

foreach ($subArr as $sub => $result)
{
    if (mysql_num_rows($result) > 0)
    {
       $resultString .= '<a id="$sub" style="cursor: poimter; color: #0076cf;" href="$sub">'.'  |  '.$sub.'  |  '.'</a>';
    }
 }

$ subArr是一个子类别数组,我希望用户能够点击具有子类别名称的链接,并将它们带到同一页面的那一部分。截至目前,它所做的只是在所有子类别名称下创建一个巨型链接,而不是创建每个单独的链接。

显然我需要某种循环,但我不知道如何查看$ resultString以更改锚ID和href。

非常感谢任何帮助!!

4 个答案:

答案 0 :(得分:0)

(主题,但很重要)

你有一个错字,它应该是:

style="cursor: pointer; ..."

而不是:

style="cursor: poimter; ..."

答案 1 :(得分:0)

您的代码中存在错误。

你把变量放在''中,php不会解析它以获得你需要将变量放在""中的正确结果。

foreach ($subArr as $sub => $result)
{
    if (mysql_num_rows($result) > 0)
    {
       $resultString .= '<a id="'.$sub.'" style="cursor: pointer; color: #0076cf;" href="'.$sub.'">  |  '.$sub.'  |  </a>';
    }
 }

此外,与href具有相同的ID看起来很奇怪。

我注意到你使用的mysql_ *函数被删除了,将来会被删除。请考虑使用 PDO MySQLi

答案 2 :(得分:0)

foreach ($subArr as $sub => $result)
{
  if (mysql_num_rows($result) > 0)
  {
    $resultString = '<a id="$sub" style="cursor: pointer; color: #0076cf;" href="$sub">'.'  |  '.$sub.'  |  '.'</a>';
  }

  $resultstring="";
}

答案 3 :(得分:0)

你似乎走在正确的轨道上,但有一些事情混乱了。

菜单

首先在制作菜单时要使用unordered list,然后使用CSS设置样式。 basic example of this是:

<ul class="menu">
    <li><a href="test">Test</a></li>
    <li><a href="test2">Test 2</a></li>
    <li><a href="test3">Test 3</a></li>
</ul>

然后使用以下CSS

设置样式
ul.menu, ul.menu * {
    list-style: none;
    padding: 0;
    margin: 0;
}

ul.menu {
    width: 100%;
    height: 20px;
    background: #ccc;
    padding: 5px 0; /* Add padding top and bottom */
}

ul.menu > li {
    height: 20px;
    line-height: 20px;
    float: left;
}

/* Make a tag fill the entire LI so users can click
anywhere, not just on the text. */
ul.menu > li > a { 
    display: block;
    padding: 0 10px; /* Add padding between items */
    color: #000;
    text-decoration: none;
}

ul.menu > li > a:hover, ul.menu > li > a:active {
    background: #000;
    color: #FFF;
}

/* Add divider between items, except last item (Does not work with earlier versions of IE) */
ul.menu > li:not(:last-child) {
    border-right: 1px solid #000;
}

PHP循环

首先是一张纸条。您使用的是mysqldepreciated。这意味着在PHP版本的某个时间很快就不再可用了。很多人建议你学习PDO。就个人而言,我更喜欢MySQLi而不是准备好的陈述,但这只是我的偏好。要么是好的,要么学习其中一个。

现在循环播放。你似乎在循环中检查你的mysql查询的结果,这是错误的。我猜你上面有一个查询,它将结果加载到$ subArr。在将它们加载到$ subArr之前,您需要调用mysql_num_rows

如上所述将循环应用到列表后,循环本身就可以了。你的最终代码看起来应该是这样的。注意,我在我的例子中使用了MySQLi,我建议你也这样做,尽管如果你愿意的话,将它转换为MySQL应该不会太难。

<?php
$subArr = array();
$query = "SELECT something FROM somewhere";
$result = $mysql->query($query);
if($result->num_rows) {
    while($row = $result->fetch_assoc()) { //I personally prefer fetch_assoc over the others, but fetch_row or fetch_array are both fine here too.
        $subArr = $row;
    }
}

//Lets output the menu
$resultString .= '<ul class="menu">';
foreach($subArr as $sub => $result) {
    $resultString .= '<li><a href="' . $result['url'] . '">' . $result['name'] . '</a></li>'
}
$resultString = '</ul>';

作为最后一点,您不需要在标记上放置cursor: pointer,默认情况下它具有该样式。

我希望这能为你解决一些问题。