2013-02-24 127 views
0

我正在为一些自定义媒体审查目的开发一个用于WordPress系统的插件。我已经设置了大部分的东西,但几乎没有。在while循环内点击AJAX更新数据库

目前我卡在部分更新数据库点击(onlink)使用AJAX更新表值。请参阅以下代码。它有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时,它将从目录中删除行和图像。希望我发布足够的数据来理解。如果没有,请让我知道我会尝试添加更多的信息。

万元感谢.... :)

+0

你尝试过什么让AJAX请求工作?我在循环中没有看到任何ajax逻辑。 – 2013-02-24 10:55:03

+0

我甚至不知道如何在循环内启动。我正在寻找完整的工作代码,但需要一些启动路径,并有一些解释,我可以开始工作。我检查了几个视频,但没有一个显示如何在循环中使用,没有窗体只用于链接 – 2013-02-24 10:58:17

回答

1

首先,你的发言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']

FYI:要在网页上输入的jQuery,你可以使用:

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

感谢karancan让我试试并找回你.. – 2013-02-25 15:05:42

+0

这是适用于非WordPress系统,但不适用于WordPress。我的意思是很好,但是当ajax调用页面时,它并没有考虑代码 – 2013-02-26 07:30:47

+0

不确定问题可能是什么。我从来没有使用Wordpress – karancan 2013-02-26 14:18:40