Php 标记中的onclick属性<;a>;工作不正常

Php 标记中的onclick属性<;a>;工作不正常,php,html,onclick,Php,Html,Onclick,我有一个菜单,可以从数据库中获取菜单项。 我想获得以下每个菜单中单击菜单的菜单id: public function gen_menu($menuItems, $pId = 0) { $menu = ''; $ulStart = 0; $base_url = base_url(); $uri = $this->uri->segment(1); foreach($menuItems as $row) {

我有一个菜单,可以从数据库中获取菜单项。 我想获得以下每个菜单中单击菜单的菜单id:

public function gen_menu($menuItems, $pId = 0)
{
    $menu       = '';
    $ulStart    = 0;
    $base_url   = base_url();
    $uri        = $this->uri->segment(1);
    foreach($menuItems as $row)
    {
        if($row->parent_id==$pId)
        {
            if($ulStart==0) { $menu .= "<UL>"; $ulStart++; }
                $url = $row->item_url;
                stripos($url,$base_url)===0 || $url==""?$base_url = base_url():$base_url="";
                {
                    if($row->external==1){
                        $menu .= '<LI><a href="'.$row->custom_url.'" title="'.$row->alt_title.'">'.$row->item_title.'</a>'.$this->gen_menu($menuItems, $row->item_id).'</LI>';
                    }
                    else{
                        $class = ($uri==$row->custom_url)?"class='selected'":"";
                        $menu .= '<LI '.$class.'><a href="'.site_url($row->custom_url).'/'.$row->item_id.'" title="'.$row->alt_title.'" onclick="'.$this->get_id($row->item_id).'">'.$row->item_title.'</a>'.$this->gen_menu($menuItems, $row->item_id).'</LI>';
                    }
                }
        }

    }
    if($ulStart!=0) { $menu .= "</UL>"; }
    return $menu;
}`
公共功能genu菜单($menuItems,$pId=0)
{
$menu='';
$ulStart=0;
$base_url=base_url();
$uri=$this->uri->segment(1);
foreach($menuItems作为$row)
{
如果($row->parent_id==$pId)
{
如果($ulStart==0){$menu.=“
    ”;$ulStart++;} $url=$row->item\u url; stripos($url,$base\u url)==0 | |$url==“”?$base\u url=base\u url():$base\u url=“”; { 如果($row->external==1){ $menu.='
  • 。$this->gen_菜单($menuItems,$row->item_id)。'
  • ; } 否则{ $class=($uri==$row->custom_url)?“class='selected'”:; $menu.=''.$this->gen\u菜单($menuItems,$row->item\u id)。''; } } } } 如果($ulStart!=0){$menu.=“
”;} 返回$menu; }`
当我使用onclick-in时,它总是返回表的最后一个id。

试试这个:

$menu .= '<LI '.$class.'><a href="'.site_url($row->custom_url).'/'.$row->item_id.'" title="'.$row->alt_title.'" onclick="javascript:get_id('.$row->item_id.');">'.$row->item_title.'</a>'.$this->gen_menu($menuItems, $row->item_id).'</LI>';
$menu.=''.$this->gen_菜单($menuItems,$row->item_id)。';
您在带引号的字符串中有
$row->item\u id
,因此它没有展开。你应该从中得到一个javascript错误

更新:

您遇到的问题是混淆了服务器端和客户端操作。当创建要发送给用户的页面时,此PHP脚本中的代码都在服务器上运行。如果在循环中设置会话变量,该变量将包含上一次迭代的值。将PHP代码放入
onclick
不会在用户单击时运行,而是在服务器编写
onclick
属性以放入发送到浏览器的HTML时运行


如果希望在用户单击时在服务器上执行某些操作,则需要在
onclick
属性中添加一个Javascript函数,该函数应使用AJAX调用另一个PHP脚本。

PHP是一种服务器端语言。你的意思是当浏览器导航到此脚本时?完成后,是否可以转储$菜单?returend$菜单是一个带有子菜单的样式化菜单。我唯一需要的是,如何使用onclick-in标记我在你的
A
中没有看到
onclick
属性。哦,对不起,我刚刚删除了它。。。。这里是汉克斯。。。我只是在post中编辑代码。正如我所说,onclick正在工作,但无论单击哪个菜单,它都会返回表菜单的最后一项。\u id()method.function get\u id($id=0){$this->session->set\u userdata($menu id',$id);}$id总是像338一样,Table的最后一个id将该函数的返回值放入
onclick
属性,该属性应该包含Javascript语句。PHP中的所有内容都在服务器创建页面时运行,而不是在用户与页面交互时运行。如果要运行服务器代码以响应用户操作,则需要使用AJAX。