Javascript 仅从表单更新sql表中的最后一条记录
我已经实现了LIKE功能,但是不管用户单击哪一行的LIKE按钮,表中只有最后一条记录得到更新 我在这里和其他地方研究过类似的其他问题,并尝试过建议的补救措施,但没有任何效果。感谢您的帮助 这将输出表格,其中有一列用于LIKE按钮:Javascript 仅从表单更新sql表中的最后一条记录,javascript,php,html,sql,forms,Javascript,Php,Html,Sql,Forms,我已经实现了LIKE功能,但是不管用户单击哪一行的LIKE按钮,表中只有最后一条记录得到更新 我在这里和其他地方研究过类似的其他问题,并尝试过建议的补救措施,但没有任何效果。感谢您的帮助 这将输出表格,其中有一列用于LIKE按钮: <table class="table table-bordered"> <tr> <th>Word ID</th> <th>User I
<table class="table table-bordered">
<tr>
<th>Word ID</th>
<th>User ID</th>
<th>User Name</th>
<th>Word</th>
<th>Meaning</th>
<th>Example</th>
<th>Likes</th>
</tr>';
foreach ($data as $row)
{
echo '<tr>';
foreach ($row as $value)
{
echo '<td>';
echo $value;
echo '</td>';
}
echo '<td>
<form method="POST" action="'.$_SERVER["PHP_SELF"].'">
<input type="hidden" name="LIKE" value="'.$row['wordID'].'">
<input id="'.$row['wordID'].'" type="submit" class="btn btn-success" value="LIKE">
</form>
</td>';
echo '</tr>';
}
echo '</table>';
我已经尝试了所有的方法,包括添加这样的javascript,以获得更新代码所需的ID。不走运
echo '<script type="text/javascript">
function submitForm(){
var selectButton = document.getElementById( "'.$row['wordID'].'" );
selectButton.click();
}
</script>';
echo'
函数submitForm(){
var selectButton=document.getElementById(“.$row['wordID']”);
选择按钮。单击();
}
';
选项1:
我会改变:
<input name="like" value="'.$row['wordID'].'"
type="submit" class="btn btn-success">
选项2:
要将like显示为按钮值,请尝试以下操作:
<input name="like['.$row['wordID'].']" value="LIKE"
type="submit" class="btn btn-success">
选项3:
<input name="like_'.$row['wordID'].'" value="LIKE"
type="submit" class="btn btn-success">
但是要小心SQL注入。在执行查询或使用参数执行准备好的查询之前,您应该清理$\u POST['like']值。Javascript代码在哪里?它就在上面的第一个片段之后-就在表被回显之后。这是您的问题。在循环结束时,
$row['wordID']
仍然是循环结束时的状态(您的最后一个值)。根据我自己的经验,当只有“最后”一个内容被更新时,这意味着我的HTML重复了信息。您是否在浏览器中检查了HTML,以确保每个表单和类似按钮都有预期的id和值?是的,@kchason和Aj,我做了一个回显测试,它将世界id输出到屏幕上,显示为123456(如果有六行),所以最后一个值就是更新代码得到的值。但是我如何让它接受所选的wordID值呢?是的!你真漂亮!谢谢,jeprubio。只有一件事@jeprubio,表单按钮现在带有数字1、2、3等,因为value属性采用wordID。我怎样才能让按钮都像用户期望的那样显示呢?我刚刚添加了一个更新。其思想是将id作为数组发送到密钥中,这样您就可以遍历数组密钥来获取id。我还没有测试它,但应该可以工作。谢谢,我运行了它,发现语法错误,意外的'wordID'(T_STRING),预期为','或';'我试过了
<input name="like['.$row['wordID'].']" value="LIKE"
type="submit" class="btn btn-success">
if (!empty($_POST['like'])) {
foreach ($_POST['like'] as $key => $value) {
$sql = "UPDATE vocab SET likes = likes+1 where wordID = '".$key."'";
$stmt = $db->prepare($sql);
...
}
}
<input name="like_'.$row['wordID'].'" value="LIKE"
type="submit" class="btn btn-success">
if (!empty($_POST)) {
foreach($_POST as $key => $value) {
if (substr($key, 0, 5) == 'like_') {
$sql = "UPDATE vocab SET likes = likes+1 where wordID = '".substr($key, 5)."'";
$stmt = $db->prepare($sql);
...