我遇到过这种情况,想从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属于数据库中的最后一行。这里有什么问题,我该如何解决这个问题呢?谢谢
答案 0 :(得分: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'是分配给链接的类。
希望,它会帮助你......
答案 1 :(得分:0)
如何知道脚本被点击了哪个链接?所有链接都提交相同的表单,表单中的所有<input>
都具有相同的名称!
您可以将每个<input>
和关联的<a>
放在单独的表单中,也可以为每个<input>
指定一个唯一的名称。当然,您还必须调整JavaScript,因为document.getElementById('j')
只会获取第一个链接。