我正在写一个WP插件,现在我想在我的DB中有一个数据表视图,并且能够在点击按钮时删除一个条目。所以我想做的是:
--------------------------------------------
# 1 # Foo # Delete #
--------------------------------------------
# 2 # Boo # Delete #
--------------------------------------------
我从通过执行的sql命令接收所有数据
$wpdb
. 这非常好(并按照我的要求创建了表
delete
按下按钮/文本,我希望删除相应的条目(例如,名为“Boo”的条目)。遗憾的是,我不知道如何访问这个特殊条目。我在下面提供了我的代码。有人知道我如何访问对应的“删除”按钮所在行中的元素/数据吗?如果我可以定义在表条目的“POST”中传递什么参数,那就太好了,因为我可以访问数据库中条目的PK。
<?php
include_once WP_CONTENT_DIR . \'/DBService/DBInteractorService.php\';
include_once WP_CONTENT_DIR . \'/DBService/DBInteractionUtils.php\';
class tp_clubView {
public $_tableData;
public $_dbInteractorService;
public $_tableHTML;
public function __construct() {
$this->init_process();
}
private function init_process() {
$this->$_dbInteractorService = DBInteractorService::getInstance();
$this->refreshTableData();
if (isset($_POST[\'dropEntry\'])) {
echo($_POST[\'dropEntry\'];
//what to do here?
}
}
private function refreshTableData() {
$mySQL= DBInteractionUtils::$_mySQL;
$this->$_tableData = $this->$_dbInteractorService->executeSelectStatement($mySQL);
$this->refreshTableEntries();
}
private function refreshTableEntries() {
$counter = 1;
$tableLayout = \'<div>
<form name="form" action="\' . $_SERVER[\'REQUEST_URI\'] . \'" method="post">
<table class="widefat myTable">
<thead>
<tr>
<th> Number </th>
<th> Name </th>
<th> Action </th>
</tr>
</thead>
\';
$dataSet = $this->$_tableData;
foreach ($dataSet as $tableSet) {
$tableLayout = $tableLayout . \'<tr>\' .
\'<td>\' . $counter . \'</td>\' . \'<td>\' . $tableSet->name . \'</td>\' .
\'<td><input type="hidden" name="dropEntry" value="\' . $tableSet->id .\'">\' .
\'<button type="submit">Delete</button>\'
. \'</input>\' . \'</tr>\';
$counter = $counter + 1;
}
$tableEnd = \'</table>
</form>
</div>\';
$tableLayout = $tableLayout . $tableEnd;
$this->$tableHTML = $tableLayout;
}
public function createClubsTableDiv() {
return \'<div value=\'. $this->$_tableHTML;
}
}
?>
编辑:
我可以得到传递的数据,遗憾的是,它只是传递的最后一个条目的ID(最后一个ID
已插入)。我可以为每个条目保存当前ID吗?
最合适的回答,由SO网友:Sabbir Hasan 整理而成
试着让你的foreach循环像这样,并让我知道结果。它应该解决你的it is only the ID of the last entry passed (the last ID inserted) 问题
foreach ($dataSet as $tableSet) {
$tableLayout .= \'<tr>\' . \'<td>\' . $counter . \'</td>\' . \'<td>\' . $tableSet->name . \'</td>\' .
\'<td><input type="hidden" name="dropEntry" value="\' . $tableSet->id .\'">\' .
\'<button type="submit">Delete</button>\'
. \'</input>\' . \'</tr>\';
$counter = $counter + 1;
}