2

php/mysql によって生成された複数のテーブルを含むページがあります。要素の 1 つはイン/アウト ボタンです。ページをリロードせずにクリックするたびにボタンがオンまたはオフの画像に変わるように、私はそれを ajax しました。

そして、それは魅力のように機能しました!しなくなるまで。1 つのテーブルまたはテーブルの組み合わせが非常に多くの行を超えると、機能しなくなります。ただし、その上の行では引き続き機能します。なぜでしょうか?

これがテーブルの生成です...これは複数のphpファイルで発生します。

<tbody>
<?php while($row = MySQL_fetch_array($result)):
$id = htmlentities($row['id']);
$status = htmlentities($row['status']);
include ("button.php");
?>
<tr>
        <td title="lname" width="100px">
            <div style="width:100px; overflow:hidden;">
                <?php echo(htmlentities($row['last_name'])); ?>
            </div>
        </td>
        <td width="100px">
            <div style="width:100px; overflow:hidden;">
                <?php echo(htmlentities($row['first_name'])); ?>
            </div>
        </td>    
        .
        .
        .
        <td>
        <div style="width:100px; overflow:hidden;">
                <?php echo '<div><div id="r'.$id.'"><div id="test"><img class="rating" id="'.$status.$id.'" src="'.$color.'"><div style="display:none;">'.$status.'</div></div></div></div>';?>
        </div>
        </td>
</tr>
<?php endwhile; ?>

スクリプトは次のとおりです。

<script>
        $(function(){
            $(document).on("click", ".rating", function(){
                var status = $(this).attr("id").substr(0,1);
                var id = $(this).attr("id").substr(1);
                var data = "id="+id+"&status="+status;

                $.ajax({
                    type: "POST",
                    url: "rate.php",
                    data: data,
                    success: function(e){
                    $("#r"+id).html(e);
                }

            })
        });
    });
    </script>

上記のコードで参照されている rate.php は次のとおりです。

<?php
include ("db.php");
$id = $_POST["id"];
$newstatus = $_POST["status"];

if($newstatus == 0){
    mysql_query("UPDATE users SET status = 1 WHERE id='$id'");
}
else {
    mysql_query("UPDATE users SET status = 0 WHERE id='$id'");
}
include("button.php"); //FILE WITH THE LIKE & DISLIKE BUTTONS AND THE NUMBER OF LIKES & DISLIKES

$list = '<div id="test"><img class="rating" id="'.$q[0].$id.'" src="'.$color.'"><div style="display:none;">'.$q[0].'</div>';

echo $list;
?>

そして、上記で参照されている button.php ファイル:

<?php 

$q = mysql_query("SELECT status FROM users WHERE id='$id'");
$q = mysql_fetch_array($q);

if($q[0]){
    $color = "green.png";
}
else{
    $color = "red.png";
}
?>

そうですね... 1 つのテーブルの mysql クエリが大きすぎる場合、一定数の行の後、in/out ボタンが機能しなくなります。または、複数の小さなテーブルがある場合、特定の合計行数を超えると、同じことになります。

ヘルプ?

4

1 に答える 1