php - 使用循环形式的复选框更新 mysql 数据表

标签 php mysql wordpress

我正在尝试为我的 WordPress 插件更新自定义表,首先我从表中获取角色,然后使用表单显示它,这工作正常,现在的问题是,当我选中复选框时,它会在数据库中更新,但是当我取消选中它时,它根本不会更新,如果我全部取消选中,我会收到此错误消息

Warning: Invalid argument supplied for foreach() in C:\wamp\www\wp_test\wp-content\plugins\Data\settings.php on line 52

<?php 
$roles=get_editable_roles();

global $wpdb;
$table_name = $wpdb->prefix. "Author_detailed_repport";
?>

<h3>Settings Page</h3>
<h4>Add/Remove a role from filter list</h4>
<p>This setting allow you to add/remove roles from the filter<br />
  list, here down a list of all the roles existing in your website, all<br />
  you have to do is to check/uncheck wich you wanna add/rmove from filter list</p>
<form action="<?php $_REQUEST['PHP_SELF'] ?>" method="post">
  <?php 
require_once('../wp-config.php');
$i=0;
foreach($roles as $role)
{

     $rom=$role['name'];
     $results = $wpdb->get_results( "SELECT * FROM  ".$table_name." WHERE role= '".$rom."'" );
     if ($results==NULL)
            {$wpdb->insert( $table_name, array( 
                                  'role' => $role['name'],
                                  'statut' => '', 
                                  'post_number' => '', 
                                  'activate' => ''
                                   ));
            }?>
  <input type="checkbox" name="cat[]" value="<?php echo $i+1 ;?>" <?php checked($results[0]->statut, $i+1); ?> />
 <input type="hidden" name="ww" value="0">
   <?php 


 ?>
  <label>
  <?php echo $results[0]->role;?></label><br />

  <?php $i++; } ?>
  <input type="submit" value="save" name="saveme" />
</form>
<?php 


if(isset($_POST['saveme']))
{
    $cats=$_POST['cat'];
    foreach($cats as $cam)
    {
        if(isset($cam))
        {
        $wpdb->update( $table_name, array( 
                                  'statut' => $cam 
                                   ),array('ADR_id' => $cam),array('%d'));}
        else
        {
             $wpdb->update( $table_name, array( 
                                  'statut' => '0' 
                                   ),array('ADR_id' => $cam),array('%d'));

            }
    }

}

?>

最佳答案

因为 $roles 尚未设置,您需要进行另一次检查

If(isset($roles)) {
//foreach loop goes in here
}

关于php - 使用循环形式的复选框更新 mysql 数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38520904/

相关文章:

sql - 在 MySQL 中将 SUM 和 AVG 与 GROUP BY 相结合

php - Wordpress Posts 奇数/偶数 Li 布局

php - 将 WordPress 版本 4.7.4 的 mysql 版本升级到 5.6

php - 仅显示特定自定义帖子类型的自定义分类法计数

php - 使用 jQuery Ajax 上传文件

php - 最好不要将 &$ 与大字符串一起使用以节省内存吗?

mysql - 使用主数据库在 Spring MVC 应用程序中实现 Multi-Tenancy ?

mysql - 与 Mysql 合并表有限制吗?

php - OpenCart OCMOD 和 VQMOD 修改系统

javascript - 如何去掉页面顶部的这些字母