0

Ajax GET コマンドの PHP FOR & WHILE ループ コンボから正しい mysql ID を取得するにはどうすればよいですか? 現在、テスト アラートを実行すると、各 href の onclick によって、正しい ID ではなく、最後の ID がアラートされます。

   <?php 
    $varRank = 1;
    $pRow = 1;
    $pBlock = 1;
       FOR ($pRow == 1; $pRow < 5; $pRow++){    
            WHILE ($pBlock <= $pRow){

            mysql_select_db($database_cms_test, $cms_test);
            $query = "SELECT * WHERE rank=$varRank";
            $result = mysql_query($query) or die();
            $row = mysql_fetch_array($result);

            $scr = '<script type="text/javascript" src="jquery.min.js"></script>' .
            '   <script type="text/javascript">' .
            '       function runCounter(){' .
            '       var currentID = ' . $row['id'] . ';' .
            '       var currentRank = ' . $row['rank'] . ';' .  
            '       alert(\'the current id is \' + '. $row['id'] .');' .                
            '       $.get("counter5.php?id=' . $row['id'] . '");' .
            '       }' .
            '   </script>';

            echo $scr;

            $onclkHTML = '<a href="#" onclick="runCounter();" id="' .    $row['song_name'] . '">' .
            '<img src="images/glossy.jpg" width="30" height="30" align="absmiddle" hspace="10" /></a>';
            echo $onclkHTML;    

            $pBlock++;
            $varRank++;
            }
            $pBlock = 1;  // reset
        }
    ?>
4

1 に答える 1

1

ループのたびに同じ関数を再定義しています。

jQuery を使用しているので、クリック ハンドラーを jQuery にバインドしてみませんか? これらの各リンクにクラスをdata-XXX指定し、タグを使用してパラメーターを関連付けます。

$onclkHTML = '<a href="#" class="counter" id="' . $row['song_name'] . ' data-rank=" . $row['rank'] . " data-id=" . $row['id'] . ">' .
        '<img src="images/glossy.jpg" width="30" height="30" align="absmiddle" hspace="10" /></a>';
echo $onclkHTML;    

次に、ハンドラーをクラスにバインドします。

$(function () {
    $(".counter").click(function() {
        var currentId = $(this).data("id");
        var currentRank = $(this).data("rank");
        alert("The current id is " + currentId);
        $.get("counter5.php?id=" + currentId);
    });
});
于 2013-04-16T01:51:19.180 に答える