使用onClick更新数据库

时间:2014-07-20 09:16:14

标签: javascript php jquery database

我尝试通过单击页面上的阅读按钮来更新我的下午的状态。所以我在这个网站上找到了一些解决方案,但它并不适合我。

我在html按钮之前使用这个ajax:

     <script type="text/javascript">
function setRead(){
      $.ajax({
        type: "POST",
        url: "update_pm_status.php",
        data: { name: $("select[name='gelesen']").val()},
        success:function( msg ) {
         alert( "Data Saved: " + msg );
        }
       });
  }
</script>

该按钮的样式为css,并使用它自己的javascript来切换内容(打开/关闭) 所以我想通过打开消息来更新状态

<span class="toggleOpen" onclick="setRead()"><input type="hidden" method="post" name="gelesen" value="<?php echo $row['id']; ?>">lesen</span>

包含的网站

<?php
ini_set('include_path', 'inc');
    require("connect.php"); 

        {
                  $id = $_POST['id'];


            $sql = "UPDATE
                    PMS
                    SET
                    gelesen = 'yes'
                    WHERE id = '".mysql_real_escape_string($id)."' AND gelesen = 'no'";
                    mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());

        }

但我总是注意到未定义的变量&#39; id&#39;。 我怎样才能将这个变量赋予包含的网站?


因为我必须等待8个小时才能回复我编辑我的帖子:

感谢您的回答,但我仍然收到未定义索引的消息:name 所以变量不是我的update_pm_staus.php的后缀 我已将我的脚本更新为:

<script type="text/javascript">

function setRead(){       $就({         键入:&#34; POST&#34;,         url:&#34; update_pm_status.php&#34;,         data:{id:$(this).children(&#34; [name =&#39; gelesen&#39;]&#34;)。val()},         成功:函数(msg){          警报(&#34;数据保存:&#34; + msg);         }        });   }

和update_pm_status.php到此:

    ini_set('include_path', 'inc');
    require("connect.php"); 

            $id = $_POST['name'];

            $sql = "UPDATE
                    PMS
                    SET
                    gelesen = 'yes'
                    WHERE id = '".mysql_real_escape_string($id)."' AND gelesen = 'no'";
                    mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());

我也改变了我的html,希望能让它发挥作用。

<span class="toggleOpen" onclick="setRead()" input type="hidden" method="post" name="gelesen" value="<?php echo $row['id']; ?>">lesen</span>

2 个答案:

答案 0 :(得分:1)

您好像正在发送id,但是您将其发送为name。您希望更新JavaScript以传递您期望的密钥:值对,以及您在PHP中所期望的密钥名称。

     <script type="text/javascript">
        function setRead(){
          $.ajax({
            type: "POST",
            url: "update_pm_status.php",
            data: { id: $(this).children("[name='gelesen']").val()},
            success:function( msg ) {
              alert( "Data Saved: " + msg );
            }
          });
        }
     </script>

您会注意到,在AJAX请求的data: {}块中,我已将您的密钥:值对更新为id,而不是name 。如果您在发布邮件时执行了将您的密钥命名为name,那么您需要更新您的PHP以查找:

$id = $_POST['name'];

答案 1 :(得分:0)

抱歉迟到了。我上班了。我用

<script type="text/javascript">
function setRead($id){
  $.ajax({
    type: "POST",
    url: "update_pm_status.php",
    data: { id: $id}
   });  }

和html一样

onclick="setRead(this.id);

感谢所有人帮助我:)