Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅从表单更新sql表中的最后一条记录_Javascript_Php_Html_Sql_Forms - Fatal编程技术网

Javascript 仅从表单更新sql表中的最后一条记录

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

我已经实现了LIKE功能,但是不管用户单击哪一行的LIKE按钮,表中只有最后一条记录得到更新

我在这里和其他地方研究过类似的其他问题,并尝试过建议的补救措施,但没有任何效果。感谢您的帮助

这将输出表格,其中有一列用于LIKE按钮:

<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);
            ...