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>";
?>

和 javascript

<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'。每个输入元素都有名称“一些”。更好的是在此链接上分配一个类并在隐藏元素名称中附加 $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>s 都具有相同的名称!您可以将每个<input>和关联<a>放在单独的表单中,也可以给每个单独<input>的名称。当然,您还必须调整您的 JavaScript,因为document.getElementById('j')只会获取第一个链接。

于 2012-08-16T09:57:19.917 回答