使用循环形式的复选框更新MySQL数据表

问题描述 投票:0回答:1

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

警告:第 52 行 C:\wamp\www\wp_test\wp-content\plugins\Data\settings.php 中为 foreach() 提供的参数无效

<?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 which you want to add/remove 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'));
            
            }
    }
    
}

?>
php mysql wordpress
1个回答
0
投票

因为 $roles 尚未设置,您需要再次检查

If(isset($roles)) {
//foreach loop goes in here
}
© www.soinside.com 2019 - 2024. All rights reserved.