2013-02-24 128 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