2016-07-04 46 views
0

我想從wordpress自定義表中讀取數據。我創建了表格並從中獲取數據。現在我需要爲表中的每一行創建鏈接,當我點擊鏈接時,它應該只刪除一行。從wordpress自定義表中刪除行

global $wpdb; 
    $table_name = $wpdb->prefix . 'customtable'; 
    $sql = "SELECT * FROM $table_name"; 
    $check = $wpdb->get_results($sql); 
    echo '<div class="col-lg-2">'; 
foreach ($check as $loc){ 
     echo $loc->row1; 
     echo '<br>'; 
     echo '<form action="" method="post" enctype="multipart/form-data">'; 
     echo '<input type="submit" name="delete" value="Delete" />'; 
     echo '</form>'; 
     echo '<br>'; 

    } 

    echo '</div>'; 
    if(isset($_REQUEST['delete'])) 
{ 
    $wpdb->delete($table_name, [ 'id' => $loc->id]); 
} 

鏈接正在工作,但我無法刪除特定的行。

我試圖創建函數刪除

function delete($id){ 
    global $wpdb; 
    $table_name = $wpdb->prefix . 'customtable'; 
    $wpdb->delete($table_name, [ 'id' => $id]); 

} 

,然後foreach循環之外,我定義

if (isset($_REQUEST['delete'])){ 
     $this->delete($loc->id); 

    } 

但同樣只有最後一排被刪除。

+0

是WP_DEBUG真的嗎?它說什麼錯誤? – Naranca

+0

wp調試爲真 刪除鏈接是在每行上方生成的,但是當我點擊任何鏈接時,它會刪除最後一行。沒有錯誤 – KondukterCRO

+0

在這種情況下,你應該發送你想要刪除的行的id與提交,因爲它似乎分配數據庫中的最後一行 – Naranca

回答

0

所以我想出了這個解決方案。如果我在foreach循環中調用delete link,它會刪除整個表,如果我在外部調用它,它只會刪除最後一行。 我在插件文件夾中製作了php腳本並將id發佈到其中。

$url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; 
$url = $_SERVER['REQUEST_URI']; 
$my_url = explode('wp-content' , $url); 
$path = $_SERVER['DOCUMENT_ROOT']."/".$my_url[0]; 
include_once $path . '/wp-config.php'; 
include_once $path . '/wp-includes/wp-db.php'; 
include_once $path . '/wp-includes/pluggable.php'; 
if (isset($_REQUEST['ID'])){ 
$id = $_REQUEST['ID']; 
delete_row($id); 

} 

function delete_row($id){ 
    global $wpdb; 
    $table_name = $wpdb->prefix . 'customtable'; 
    $wpdb->query( 
$wpdb->prepare( 
    " 
      DELETE FROM $table_name 
    WHERE id = %d", 
     $id 
    ) 
); 
} 

和內部功能從數據庫中讀取所有數據,並生成刪除鏈接:

foreach ($check as $loc){ 
     echo $loc->location; 
     echo '<br>'; 
     echo '<a name="delete" href="'.$dir.'delete_loc.php?ID=' . $loc->id . '">delete</a>'; 
     echo '<br>'; 

    } 
相關問題