0

我在一个脚本中有一个播放列表和一个播放器。当单击列表中的任何一个时,它会传递一个我使用 GET 方法($_GET['List_id'])获取的值,然后播放此特定视频。但我需要一个荧光笔来突出显示正在播放的列表项。在 twitter bootstrap 中,它只需要声明class='active'。所以我初始化类blank( $ive = ''),当它与它的$_GET值匹配时,它会被激活。但这不起作用,使用此代码,所有列表项都显示为活动状态。如何将此“活动”放在$ive变量中?

这是我的代码-

<?php
include "ste_content/connect.php";

//initialize
$subID = $_GET['Subcategory_id'];
$listID = $_GET['List_id'];
$list = "";
$ive = '';

$strSQL = "SELECT * FROM `video_links` WHERE `Subcategory_id`=".       
    $_GET["Subcategory_id"] ." ORDER BY `Subcategory_id`";
$rs = mysql_query($strSQL);

while($row = mysql_fetch_array($rs)) {
    $strTitle = $row['List_title'];
    $id = $row['List_id'];

    $strLink = "<a href = 'tv.php?List_id=" . $row['List_id'] 
        . "&&Subcategory_id=". $row['Subcategory_id']."'>" 
        . $strTitle . "</a>";

    if(strcmp($listID,$id)==0){
        $ive = 'active';
    }

    $list .= "<li class='$ive'><a href='#'><i class='icon-chevron-right'></i> $strLink </a></li>" ;  
}

mysql_close();
?>

我在 html 中输出这个$list变量。

4

2 回答 2

1

您需要$ive在每个循环中重置变量,否则第一次匹配后的所有内容都将处于活动状态

尝试这个

$list .= sprintf('<li%s><i class="icon-chevron-right"></i> %s </li>',
                 $id == $listID ? ' class="active"' : '', $strLink);

此外,您似乎正在使用in嵌套<a>标签。你可能不想这样做$strLink$list

于 2013-01-23T05:18:50.600 回答
1

首先,我发现您的代码容易发生 SQL 注入,所以请注意这一点。

您唯一缺少的是您尚未初始化变量 $ive,您需要在 while 循环中初始化变量,如下所示,以便它覆盖在前一个循环中分配的值。

请参阅下面代码中的第二行是我添加的唯一内容:

while($row = mysql_fetch_array($rs)) {
$ive = '';
$strTitle = $row['List_title'];
$id = $row['List_id'];

$strLink = "<a href = 'tv.php?List_id=" . $row['List_id'] . "&&Subcategory_id=".  $row['Subcategory_id']."'>" . $strTitle . "</a>";

if(strcmp($listID,$id)==0){
$ive = 'active';
}

$list .= "<li class='$ive'><a href='#'><i class='icon-chevron-right'></i> $strLink    </a></li>" ;  
}
于 2013-01-23T05:19:00.090 回答