2017-05-08 185 views
0

我想从基于复选框(列提供作为复选框)的MySQL表中选择列。以下是一个可重复的例子。MYSQL列选择基于复选框和组复选框

<?php 
    require('connect.php'); 
?> 
<!DOCTYPE html> 

<head></head> 

<body> 
<div>  
    <form action="" method="POST"> 
     <input type="checkbox" name="check_list[]" value="ZONE"><label>ZONE</label> 
     <input type="checkbox" name="check_list[]" value="STATE"><label>STATE</label> 
     <input type="submit" name="submit" Value="Submit"/> 
    </form> 
</div> 

    <?php 
     if(isset($_POST['submit'])){ 
     if(!empty($_POST['check_list'])) { 
     $checkboxes = isset($_POST['check_list']) ? $_POST['check_list'] : array(); 
     foreach($checkboxes as $value) { 
      echo $value,','; //selected value 
     $sql = "SELECT $value,sum(RICEPDS) as 'CEREALS' from ck group by $value" ; 
     $result = mysqli_query($connection, $sql); 
     }}} 
     ?> 

    <div> 
     <table> 
     <thead> 
      <tr> 
       <?php 
        if (!$result) { 
         die("Query to show fields from table failed"); 
        } 
        $fields_num = mysqli_num_fields($result); 
         for($i=0; $i<$fields_num; $i++) 
         { 
          $field = mysqli_fetch_field($result); 
          echo "<th>{$field->name}</th>"; 
         } 
       ?> 
      </tr> 
     </thead> 
     <tbody> 
      <?php 
      while ($row = mysqli_fetch_assoc($result)) { 
      ?> 
      <tr> 
      <?php 
       foreach($row as $cell) 
        echo "<td>$cell</td>"; 
      ?> 
      </tr> 
      <?php 
      } 
      mysqli_free_result($result); 
      ?> 
     </tbody> 
    </table> 
    </div> 
</body> 
</html> 

可以理解当我选择一个复选框时,表格会被返回。当我选中这两个复选框时,我收到的错误消息是:die("Query to show fields from table failed");

我想我必须从$值得到最后的尾随逗号。我该怎么做?

+0

可以显示什么输出中,你这个的print_r后得到($复选框) – Exprator

+0

这种问题是对症设计 – Strawberry

+0

使用mysqli_multi_query差的()函数 –

回答

1

从这个post我解决了这个问题,以启发。我的工作代码如下:

if(isset($_POST['submit'])){ 
     if(!empty($_POST['check_list'])) { 
      $my_values = implode(",", $_POST['check_list']); 
      $sql = "SELECT $my_values,sum(RICEPDS) as 'CEREALS' from ck group by $my_values" ; 
      $result = mysqli_query($connection, $sql); 
     }}