0

私はそのような状況にあり、mysql から行 ID を取得して隠し要素を入力したいと考えています。スクリプトを見てみましょう

php =>

<?php
$con = new mysqli("host","user","pswd","db");

if (isset($_POST['some'])){
    echo $_POST['some'];
}

echo "<form name='a' method='post' action='index.php'";

if (!$con->connect_error){
    if ($con->set_charset("utf8")){
        if ($r = $con->query("SELECT * FROM tb")){
            while ($row = $r->fetch_assoc()){
                echo "<input type='hidden' name='some' value='" . $row['id'] . "'><a href='javascript: void(0)' id='j'>" . $row['file_title'] . "</a><br>";
            }
            $r->free();
        }
    }
}

echo "</form>";
?>

とジャバスクリプト

<script type="text/javascript">
document.getElementById("j").addEventListener("click",function(){
    document.a.submit();
});
</script>

$row['file_title']このスクリプトから、クリックすると必要になると予想されますecho clicked row idが、最初の要素からのみIDを取得し、このIDはデータベースの最後の行に属します。ここで何が問題なのですか、どうすればこの問題を解決できますか? ありがとう

4

2 に答える 2

1

ここでは while ループが非表示の要素とリンク ID を毎回上書きしています。

while ($row = $r->fetch_assoc()){
                echo "<input type='hidden' name='some' value='" . $row['id'] . "'><a href='javascript: void(0)' id='j'>" . $row['file_title'] . "</a><br>";
            }

参照してください。ここでは、すべてのリンクの ID が「j」です。すべての入力要素には「some」という名前があります。このリンクにクラスを割り当て、隠し要素名に $row['id'] を追加して、次のように要素を一意にすることをお勧めします。

while ($row = $r->fetch_assoc()){
                    echo "<input type='hidden' name='some_".$row['id']."' value='" . $row['id'] . "'><a href='javascript: void(0)' class="alink" id='j_".$row['id']."'>" . $row['file_title'] . "</a><br>";
                }

Javascript は次のようになります。

<script type="text/javascript">

document.getElementsByClassName("alink").addEventListener("click",function(){
    document.a.submit();
});

</script>

ここで、「alink」はリンクに割り当てられたクラスです。

うまくいけば、それはあなたを助けるでしょう..

于 2012-08-16T10:07:50.483 に答える
0

どのリンクがクリックされたかをスクリプトはどのように知るのでしょうか? すべてのリンクは同じフォームを送信し、フォーム内のすべて<input>の は同じ名前です! それぞれを別のフォームに<input>関連付けるか、それぞれに一意の名前を付けることができます。もちろん、最初のリンクしか取得しないため、JavaScript も調整する必要があります。<a><input>document.getElementById('j')

于 2012-08-16T09:57:19.917 に答える