使用php表单更新wordpress插件表行

时间:2014-07-31 16:08:25

标签: php mysql wordpress

这是我第一次制作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 );
}

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

1 个答案:

答案 0 :(得分:0)

你必须遍历数组的每个元素。 由于表单中的输入是数组([]如[]或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);
            }
        }
    }

希望这有帮助:)