0

1つのスクリプトにプレイリストとプレーヤーがあります。リストのいずれかをクリックすると、GET method($_GET['List_id'])で取得した値が渡され、この特定のビデオが再生されます。しかし、現在再生中のリストアイテムを強調表示するには、蛍光ペンが必要です。twitterブートストラップでは、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();
?>

この$list変数をhtml内に出力します。

4

2 に答える 2

1

各ループで変数をリセットする必要があります。そうし$iveないと、最初の一致後のすべてがアクティブになります。

これを試して

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

<a>また、でタグをネストしているよう$strLinkです$list。あなたはおそらくそれをしたくないでしょう

于 2013-01-23T05:18:50.600 に答える
1

まず第一に、あなたのコードはSQLインジェクションを起こしやすいことがわかったので、これに注意してください。

欠落している唯一のことは、変数$ iveを初期化していないことです。前のループで割り当てられた値をオーバーライドするように、whileループ内で以下のように変数を初期化する必要があります。

以下のコードの2行目を参照してください。私が追加したのは次のとおりです。

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 に答える