我怎样才能获得有关" optgroup"的信息。是从codeigniter中选出来的?

时间:2017-06-20 20:51:30

标签: php html codeigniter mysqli bootstrap-selectpicker

我正在做一个&#34; admin&#34;将照片上传到不同类别的页面,因此有一个<input type="file">和一个<select>,其中包含在optgroups中组织的类别和子类别(如果某个类别具有子类别),或者仅包含optgroup(如果它只是一个类别)

<?php echo form_open_multipart('principal/subir_foto');?>  
             <div class='input-group'>                                  
                <label for="img" class='control-label'>Seleccionar:</label>
                <input id="img" required="true" type='file' name='imagen'/>
             </div>
             <div class='input-group'>                                               
                <label for="categoria" class='control-label'>Elegir Categoria:</label>
                <select class='selectpicker form-control' name='cat_op' data-width='auto'>
                    <?php 
                        foreach ($categorias as $row_cat) {                         
                            if($row_cat->tiene_subcat > 0){
                                echo "<optgroup value='".$row_cat->nom_cat ."' label='". $row_cat->nom_cat ."'>";
                                foreach ($subcat as $row_subcat) {
                                    if($row_subcat->id_cat === $row_cat->id_cat){
                                        echo "<option value=". $row_subcat->nom_subcat ."> ". $row_subcat->nom_subcat ."</option>";
                                    }                                       
                                }
                                echo "</optgroup>";
                            }
                            else{
                                echo "<option value='" . $row_cat->nom_cat . "'>". $row_cat->nom_cat . "</option>";
                            }
                        }
                    ?>
                </select>                              
            </div>                
            <div class='input-group'>
                <input type='submit' name='agregar' value="Agregar">
            </div>             
           </form>

因此,当服务器解释代码时,<select>标记如下所示:

<label class='control-label'>Elegir Categoria:</label>
 <select class='selectpicker form-control' name='cat_op' data-width='auto'>

   <optgroup value='SALAS' label='SALAS'>

     <option value=RAWSON> RAWSON</option>
     <option value=CAPITAL> CAPITAL</option>

   </optgroup>

   <option value='SERVICIOS FUNERARIOS'>SERVICIOS FUNERARIOS</option>
   <option value='ATAUDES'>ATAUDES</option>
   <option value='FLORES'>FLORES</option>                   
</select>

因此,当按下提交按钮时,在名为&#34; Principal&#34;的Code Igniter控制器中。并在方法&#34; subir_foto&#34;我可以访问$ this-&gt; input-&gt; post(&#39; cat_op&#39;)这会给我提交时选择的选项,但我怎样才能获得optgroup值,因为我需要拥有子类别和类别名称。 我希望我能很好地表达我的问题

This is how the selectpicker is displayed

谢谢,这是我的第一个问题。

2 个答案:

答案 0 :(得分:0)

The <optgroup> tag does not have a value attribute.这纯粹是浏览器的格式化说明。

如果您需要区分<select>元素中的多个类似选项,请在value元素的<option>中包含所有必要数据。例如,您可以包括用冒号分隔的类别和子类别名称:

echo "<option value='"
    . $row_cat->nom_cat . ":" . $row_subcat->nom_subcat
    . "'>" . $row_subcat->nom_subcat . "</option>";

答案 1 :(得分:0)

好吧,我终于在&#34;校长&#34;控制器所以我可以知道它是一个类别还是一个子类别,并且也知道来自类别继承。

public function subir_foto(){
    $opcion = $this->input->post('cat_op');//obtengo el valor de "option" elegido
    $op_row = $this->datos_model->getWhere('sub_categorias',array('nom_subcat'=>$opcion));#busco en la tabla sub_categorias por el nombre. Si lo encuentra, busco en la tabla categoria por id_cat
    if(!empty($op_row)){
        foreach ($op_row as $row) {
            $id_Cat = $row->id_cat;
            $subcat = $row->nom_subcat;
        }           
        $cat_row = $this->datos_model->getWhere('categorias',array('id_cat'=>$id_Cat));
        foreach ($cat_row as $row) {
           $cat = $row->nom_cat;
        }                        
    }
    else{
        $cat = $opcion;
        $subcat = null;
    }

然后我可以像这样插入我的数据库表中的照片(当然我已经跳过了代码中的验证部分)

$datos = $this->upload->data();
        $row = array(
            'ruta'=>$datos['file_path'],
            'nom_img'=>$datos['file_name'],
            'categoria'=>$cat,
            'subcat'=>$subcat,
            'alt'=>$alt,
            'height'=>$datos['image_height'],
            'width'=>$datos['image_width'],'size'=>$datos['file_size']);
        $this->datos_model->insertar('imagenes',$row);
        $data['error'] = 'Archivo '. $datos['file_name'] .' subido exitosamente';

        $this->load->view('templates/header', $data);
        $this->load->view('pages/admin', $data);
        $this->load->view('templates/footer');

这是模型方法&#34; getWhere&#34;当我从$ this-&gt; datos_model-&gt; getWhere(table,array);

调用它时
function getWhere($tabla,$arreglo){
        $query = $this->db->get_where($tabla, $arreglo);
        if($query->num_rows() > 0){
            return $query->result();
        }
        else{
            return null;
        }
    }

所以基本上当我选择了这个选项时,我首先会查询&#34; name&#34; =&#34;子类别中的选项&#34; mi DB表。如果查询不为空,则表示该选项对应于子类别。所以现在我需要知道哪个类别是subcat的基础。(我将id_cat作为外键在&#34;子类别&#34;表中)所以我做了另一个查询,其中&#34; id_cat&#34; =我的&#34;类别中的id_cat&#34;数据库表。最后,我可以得到父类别的名称。

我希望自己清楚明白。感谢