【问题标题】:how to store multiple check boxes with single name in one cell of the mysql data base in php.?如何在php的mysql数据库的一个单元格中存储多个具有单个名称的复选框。?
【发布时间】:2017-12-19 11:38:20
【问题描述】:

` 查询表格

  <div class="row">
      <label class="col-md-3" for="zones">Zones in Bangalore</label>
      <div class="checkboxes">
        <p id="zones"><input type="checkbox" name="zones[]" class="zones">CBD 
          <input type="checkbox" name="zones[]" class="zones">North 
          <input type="checkbox" name="zones[]" class="zones">South  
          <input type="checkbox" name="zones[]" class="zones">East  
          <input type="checkbox" name="zones[]" class="zones">West</p>
      </div>
    </div>

    <div class="row">
        <label class="col-md-3" for="propertytype">Property Type</label>
        <div class="checkboxes">
          <p id="propertytype">
            <input type="checkbox" name="propertytype[]" class="propertytype">Apartment &nbsp;

            <input type="checkbox" name="propertytype[]" class="propertytype">Raw House &nbsp;

            <input type="checkbox" name="propertytype[]" class="propertytype">Villa  &nbsp;
            <input type="checkbox" name="propertytype[]" class="propertytype">Residential Plot</p>
        </div>

      </div>

$('.zones').on('change', function() {
      $('.zones').not(this).prop('checked', false);
       });
      $('.propertytype').on('change', function() {
        $('.propertytype').not(this).prop('checked', false);
      });

这是脚本代码仅选中一个复选框的代码。我无法弄清楚如何存储此复选框值。尝试存储此数据时出现错误。我试图检查 if 条件但无法获取代码。我的项目中还有 4 个类似的复选框,我必须将所有数据存储在一个数据库表中。你能帮我解决这个问题吗?

在控制器中:

  $numreg= '/^[7-9]{1}[0-9]{9}$/';
  $this->load->helper(array('form', 'url'));
  $this->load->library('form_validation');
 if(isset($_POST['submit'])){
       $this->form_validation->set_rules('zones[]', 'zones of Bangalore',   'required');
       $this->form_validation->set_rules('propertytype[]', 'Property type', 'required');

       }

  if ($this->form_validation->run() == TRUE)
           {
             $data_to_store = array(

               'zones'=> $_POST['zones'],
               'propertytype'=> $_POST['propertytype']

          );

       $this->db->insert('enquiry', $data_to_store);
     }`

【问题讨论】:

  • 出现什么错误?
  • 遇到 PHP 错误严重性:通知消息:数组到字符串的转换文件名:mysqli/mysqli_driver.php 行号:553
  • 你可以试试vinothini answer :)
  • 一次我只选择一个复选框

标签: mysql codeigniter validation checkbox


【解决方案1】:

您可以序列化您的复选框值并将其存储在您的表中。

如下:

$data_to_store = array(

           'zones'=> serialize($_POST['zones']),
           'propertytype'=> serialize($_POST['propertytype'])

      );

您可以通过unserialize() 将数据反序列化,这是一个 php 函数。

【讨论】:

    【解决方案2】:

    如果两个数组的长度相同,您可以对存储在 db 中的每个数据使用 foreach。

    $data_to_store = array(
        'zones' => $this->input->post('zones'),
        'propertytype' => $this->input->post('propertytype')
    );
    $data = array();
    foreach($data_to_store['zones'] as $keyZone => $valZone)
    {
        $data['zone'] = $valZone;
        $data['propertytype'] = $this->input->post('propertytype')[$keyZone];
        $this->db->insert('enquiry', $data);
    }
    

    【讨论】:

      【解决方案3】:

      您需要为复选框提供值以保存,否则您将返回一个没有上下文的数组。

      <p id="zones">
        <input type="checkbox" name="zones[]" value="CBD" class="zones">CBD 
        <input type="checkbox" name="zones[]" value="North" class="zones">North 
        <input type="checkbox" name="zones[]" value="South" class="zones">South  
        <input type="checkbox" name="zones[]" value="East" class="zones">East  
        <input type="checkbox" name="zones[]" value="West" class="zones">West
      </p>
      

      如果您想将所有区域保存在一个表格字段中,您可以使用 implode() 创建一个分号分隔的列表。

       $myZones = implode( ';' , $_POST['zones'] );
      
       print_r($myZones); // North;East;West
      

      对属性类型也做同样的事情。

      编辑:重新阅读每个数组只返回一个复选框的问题。在这种情况下,implode() 仍然可以工作,因为如果只有一个数组元素,它不会插入分号。

       if ($this->form_validation->run() == TRUE) {
               $data_to_store = array(
      
                 'zones'=> implode(';', $_POST['zones']), // South
                 'propertytype'=> implode(';', $_POST['propertytype']) // Apartment
            );
      
         $this->db->insert('enquiry', $data_to_store);
       };
      

      编辑 2:如果您的 db insert 由于数组到字符串的转换而爆炸,请先使用 json_encode 转换数组。

       $data_to_store = array('zones' => 'South', 'propertytype' => 'Apartment');
      
       $db_value = json_encode($data_to_store);
      
       print_r($db_value); // {"zones":"South","propertytype":"Apartment"}
      
       $this->db->insert('enquiry', $db_value);
      

      【讨论】:

        猜你喜欢
        • 2020-03-12
        • 2013-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-12
        相关资源
        最近更新 更多