【问题标题】:update wordpress plugin table rows with php forms使用 php 表单更新 wordpress 插件表行
【发布时间】:2014-08-01 00:26:08
【问题描述】:

这是我第一次制作 wordpress 插件。我正在尝试创建一个包含多行的表单,因此 sql 表中的每一行都可以单独更新。使用下面的脚本,我只能编辑最后一行,而不能编辑其他行。

PHP 表单

<form name="edit_from" action="<?php bloginfo('url'); ?>/wp-content/plugins/menu/process.php" method="post">
<?php foreach($resultupdate as $key => $row ) { ?>
<tr id="product">
<td id="naam"><input name="id1"  value="<?php echo $row->ID ?>"/><input type="text" name="productnaam[<?php echo $row->ID ?>]" value="<?php echo $row->PRODUCT ?>" /></td>
<td id="prijs"><input type="text" name="price[<?php echo $row->ID ?>]" value="<?php echo $row->PRICE ?>" /></td>
<td><input type="submit" name="Submit" value="update" /></td>
<input name="id[<?php echo $row->ID ?>]"  type="hidden" value="<?php echo $row->ID ?>"/>
<input name="cat[<?php echo $row->ID ?>]" type="hidden" value="<?php echo $row->CAT ?>"/>
</tr>
<?php } ?>
</form>

工艺部分

if ($_POST['Submit'] == 'update') {
$product=$_POST['productnaam'];
$price=$_POST['price'];
$cat=$_POST['cat'];
$ID=$_POST['id'];

$update = "UPDATE " . $table_name ." SET PRODUCT = '" . $product ."', PRICE = '" .$price ."', CAT = '" . $cat ."' WHERE ID = '" . $ID . "'";
$results = $wpdb->query( $update );
}

我做错了什么?感谢一百万的帮助。

【问题讨论】:

    标签: php mysql wordpress


    【解决方案1】:

    您必须在数组的每个元素上循环。 由于表单的输入是数组(带有 [],如 id[] 或 cat[] 或 price[])

    我会这样做:

    if ($_POST['Submit'] == 'update') {
            $products = $_POST['productnaam'];
            $prices = $_POST['price'];
            $cats = $_POST['cat'];
            $IDs = $_POST['id'];
    
            if (!empty($IDs) && is_array($IDs)) {
                foreach ($IDs as $id)  {
                    //a little check of existing values
                    $price = is_array($prices) && isset($prices[$id]) ? $prices[$id] : '';
                    $product = is_array($products) && isset($products[$id]) ? $products[$id] : '';
                    $cat = is_array($cats) && isset($cats[$id]) ? $cats[$id] : '';
                    $update = "UPDATE " . $table_name . " SET PRODUCT = '" . $product . "', PRICE = '" . $price . "', CAT = '" . $cat . "' WHERE ID = '" . $id . "'";
                    //here you have to check the return of the query
                    $results = $wpdb->query($update);
                }
            }
        }
    

    希望得到帮助:)

    【讨论】:

    • 我实现了代码,但由于某种原因,表中的值不会改变。
    • 谢谢。它与包括的另一个修改一起工作。通过将
      标签放在 foreach 中,我可以编辑单个表格行。
    猜你喜欢
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    相关资源
    最近更新 更多