访问HTML表中的某些条目,并将条目数据传递到WP中不起作用

时间:2018-06-03 作者:Rüdiger

我正在写一个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吗?

1 个回复
最合适的回答,由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;
}

结束