【问题标题】:Delete a single db row after clicking delete button单击删除按钮后删除单个数据库行
【发布时间】:2016-01-04 10:25:06
【问题描述】:

我有这个查询,我想在点击 delete 按钮时从 DB 中删除一行。现在,它正在删除整个数据库行。但我想按 ID 删除一行。

这是code

add_action('admin_menu', 'conference_register');
function conference_register(){
      add_options_page('Register Conference', 'Conference Registration',  'manage_options', 'conference-registration', 'display_conference');
}

function display_conference(){
    echo "<form method='post'>";
    echo "<div class='wrap'>";
    echo "<h2>Conference Registration User Details</h2>";
    global $wpdb;
    $results = $wpdb->get_results("SELECT `id`,`email`,`details` FROM `conference_register`"); ?>
    <table class="wp-list-table widefat fixed striped pages">
      <thead>
          <tr>
            <th id="posts" class="manage-column column-posts num">ID</th>
            <th id="email" class="manage-column column-email">Email</th>      
            <th id="description" class="manage-column column-description">Details</th>
            <th id="posts" class="manage-column column-posts num">Delete</th>
          </tr>
      </thead>
    <tbody id="the-list">
   <?php foreach($results as $value){
        echo "<tr>";
        echo "<td class='posts column-posts'>".$value->id."</td>";
        echo "<td class='email column-email'>".$value->email."</td>";
        echo "<td class='description column-description'><div id='col-container'>".$value->details."</div></td>";
        echo "<td class='posts column-posts'><input type='submit' name='delete_registration' value='delete'/></td>";
        echo "</tr>";
         if(isset($_POST['delete_registration'])){
            $wpdb->delete( 'conference_register', array( 'id' => $value->id ) );
        }

    }
    echo "</tbody></table></div></form>";
}

点击动作的code在上面的代码中是这样设置的:

 if(isset($_POST['delete_registration'])){
    $wpdb->delete( 'conference_register', array( 'id' => $value->id ) );
}

我在这里遗漏了什么吗? 任何帮助将不胜感激。

P.S. 我想在不使用 jQuery 的情况下删除一行。

【问题讨论】:

  • 你说的是整个数据库行,是指整个表都被删除了吗?
  • 是的,现在整个表都被删除了。

标签: php mysql database wordpress


【解决方案1】:

如果设置了delete_registration,则在删除行时使用它。您需要为每一行设置/检查它并删除该特定行。

<?php foreach($results as $value){
    echo "<tr>";
    echo "<td class='posts column-posts'>".$value->id."</td>";
    echo "<td class='email column-email'>".$value->email."</td>";
    echo "<td class='description column-description'><div id='col-container'>".$value->details."</div></td>";
    $delRow = "delete_registration_{$value->id}";
    echo "<td class='posts column-posts'><input type='submit' name= $delRow value='delete'/></td>";
    echo "</tr>";
     if(isset($_POST[$delRow])){
        $wpdb->delete( 'conference_register', array( 'id' => $value->id ) );
    }

}

【讨论】:

【解决方案2】:

您没有传递 id 或数据库查询语法不正确

【讨论】:

  • 查询语法没问题,就是不能删除单行。
【解决方案3】:

使用这个:

 echo "<td class='posts column-posts'><input type='submit' name= 'delete_registration_{$value->id}' value='delete'/></td>";
 echo "</tr>";
  if(isset($_POST[delete_registration_{$value->id}])){
    $wpdb->delete( 'conference_register', array( 'id' => $value->id ) );
 }

这应该可行

【讨论】:

    【解决方案4】:

    如何做到这一点是在每一行中我都有一个hidden input 字段并且默认值=“x”。当用户更改任何字段时,我使用 javascript 将值更改为“e”,如果用户单击“删除”,我将值更改为“d”并提交表单。

    提交时我使用 switch 。遍历所有记录,如果 e - 编辑,d-删除。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-23
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      相关资源
      最近更新 更多