doujia9204 2016-07-04 09:51
浏览 31
已采纳

从wordpress自定义表中删除行

I am trying to read data from wordpress custom table. I created table and got data from it. Now I need to create link for every row from table and when I click on link it should delete only one row.

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] );
}

Link is working but I can't delete specific row.

I tried creating function delete

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

}

and then outside of foreach loop I defined

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

    }

but again only last row is deleted.

  • 写回答

1条回答 默认 最新

  • duanhe1903 2016-07-05 09:06
    关注

    So I came up to this solution. If I call delete link inside foreach loop it will delete entire table and if I call it outside it deletes only last row. I made php script inside plugin folder and posted id into it.

    $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
        )
    );
    }
    

    and inside function that reads all data from database and generates delete link:

    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>';
    
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂