0

行数をエコーし​​たい(行数= 3と仮定)。ユーザーがその数をクリックすると(whileループから1パラメーターを渡す)、データが警告されますが、問題は

  1. whileループ内にnumrowsをエコーすると、onclickイベントですべての行(関連する3行のデータ)にアラートが送信されますが、numrowsは333のように3回表示されます。
  2. whileループの外側にエコーすると、num行が1回表示されますが、関数に渡される結果は1つだけです。

count(col)も使用しましたが、この方法では1つの結果のみが取得されます。

行数を一度に表示するが、$ uid(whileループ内にある)のすべての結果をonclick関数に渡すソリューションはありますか?.Plzヘルプ。

  $sql=mysqli_query($this->db->connection,"SELECT * from user_data where  scid='$scid'");
            $num=mysqli_num_rows($sql);

            while($row=mysqli_fetch_array($sql)){
                $uid=$row['uid'];



                ?>


            <span onclick=o4_sameby_scid(<?php echo $uid;  ?>)><?php echo  $num  ?></span>



            <script type="text/javascript">

                function o4_sameby_scid(o4_id) {
                    alert(o4_id);
                }


            </script>



            <?php
            }
4

1 に答える 1

1

あなたの問題は、whileループ内にコードの間違った部分をネストしていることだと思います。このアプローチはどうですか?:

<?php
$sql=mysqli_query($this->db->connection,"SELECT * from user_data where  scid='$scid'");
$num=mysqli_num_rows($sql);

$allvalues = array();

//  Do all looping before any echoing
while($row=mysqli_fetch_array($sql)){
    // add this row's value to an array of all values
    $allvalues[] = $uid=$row['uid'];
}

// implode this array
$valuesascsv = implode(', ', $allvalues);


//  This is echo'd outside of the loop, because we only need to see it one time
echo '<span onclick=o4_sameby_scid("'. $valuesascsv .'")>'. $num .' results found! </span>';
?>

<script type="text/javascript">
    function o4_sameby_scid(o4_id) {
        alert(o4_id);
    }
</script>

これは出力するはずです:

<span onclick=o4_sameby_scid("uid#1, uid#2, uid#3")>3 results found!</span>

<script type="text/javascript">
    function o4_sameby_scid(o4_id) {
        alert(o4_id);
    }
</script>

行数のいずれかをクリックすると、すべてのUIDに警告が表示されます。

これはあなたが探していた行動ですか?

于 2012-12-05T23:11:24.593 に答える