在while循环中单击AJAX更新数据库

时间:2013-02-24 10:44:36

标签: php mysql ajax wordpress while-loop

我正在为WordPress系统开发一个插件,用于某些自定义媒体审查目的。我已经设置了大部分内容,但还有更多。

目前我坚持使用AJAX来更新数据库(onlink)以更新表值。请参阅以下代码。它有while循环,我想在循环中使用AJAX来更新媒体状态。我不确定这是正确的方法还是有另一种简单的方法来实现它。任何建议都将不胜感激。

代码:

<?php
$media_item = mysql_query($media_sql);

if ($media_item) {

echo '<ul class="rm-media-list">'; 

    while ($media = mysql_fetch_array($media_item)) {

        $m_uid = $media['user_id'];
        $m_uname = $media['user_login'];

        $media_class = new q2a_review_media;
        $thumb_path = $media_class->rm_thumbnail_url($pid,$m_uid);
        $media_url = $media_class->rm_media_url($pid,$m_uid);
        $mediaid = $media['id'];
        $image_name = $media['image_name'];                                

        echo '<li>';
        echo '<span class="rm-media-user"><a href="'.admin_url( 'user-edit.php?user_id=' . $m_uid, 'http' ).'">',$m_uname,'</a></span>';
        echo '<a href="'.$media_url.$image_name.'" rel="lightbox['.$pid.']" title="Post: '.$pid.' |  '.$ptitle.' | Image: '.$image_name.' | by: '.$m_uname.' " ><img src="'.$thumb_path.$image_name.'" alt="'.$media['image_name'].'" width="56" class="rm-thumbs-list" /></a>';
        echo '<span class="rm-action-links"><a href="#" id="approve-'.$mediaid.'" >Approve</a> | <a href="#" id="delete-'.$mediaid.'" >Delete</a></span>';                            
        echo '</li>';
    }

} else {

    echo 'No media found';

}

echo '</ul>';                        
?>

数据库表: enter image description here

我的插件页面输出 enter image description here

在上图中,您可以看到名为Approve |的链接Delete这里我想使用ajax与数据库进行交互。当管理员点击Approve时,它会在status列中将值从0更新为1,当Delete时,它将删除目录中的行和图像。希望我发布足够的数据来理解。如果没有,请告诉我,我会尝试添加更多信息。

百万感谢.... :)

1 个答案:

答案 0 :(得分:2)

首先,您的陈述echo '</ul>';必须位于循环的if部分。

你的AJAX代码不必在while循环中。以下是如何操作代码来发出AJAX请求。

我们首先稍微修改您的<a>代码:

<a href="#" class="approve-button" id="'.$mediaid.'">Approve</a>

此更改允许您拥有一组包含class="approve-button"id="the id of the item you want to approve"

的按钮

现在,我们可以使用一些JavaScript来发出AJAX请求。为方便起见,我将使用jQuery来提出此请​​求:

<script type="text/javascript">

//Attach an onclick handler to each of your buttons that are meant to "approve"
$('.approve-button').click(function(){

   //Get the ID of the button that was clicked on
   var id_of_item_to_approve = $(this).attr("id");

   Make an AJAX request
   $.ajax({
      url: "some-page.php", //This is the page where you will handle your SQL insert
      type: "post",
      data: "id=" + id_of_item_to_approve, //The data your sending to some-page.php
      success: function(){
          console.log("AJAX request was successfull");
      },
      error:function(){
          console.log("AJAX request was a failure");
      }   
    });

});

</script>

some-page.php而言,这就是你需要做的事情:

  • 让您的SQL语句对数据库进行更改
  • 要访问附加到单击的批准按钮的ID,您可以使用$_POST数组,因为AJAX请求的类型为“post”。具体而言,这是您的ID存储位置:$_POST['id']

仅供参考:要在您的页面上导入jQuery,您可以使用:

<script src='http://code.jquery.com/jquery-latest.min.js' type='text/javascript'></script>