如何从 codeigniter 中获取有关选择了哪个 "optgroup" 的信息?
How can I get information about which "optgroup" was selected from codeigniter?
我正在制作一个“管理”页面来将照片上传到不同的类别,所以有一个 <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>
因此,当按下提交按钮时,在名为“Principal”的 Code Igniter 控制器和方法“subir_foto”中,我可以访问 $this->input->post('cat_op') 这让我在提交时选择了选项,但是我怎样才能得到 optgroup 值,因为我需要有子类别和类别名称。
The <optgroup>
tag does not have a value
attribute.纯粹是浏览器的格式化指令
如果您需要区分 <select>
元素中的多个相似选项,请在 value
的 value
中包含 all 必要数据15=] 元素。例如,您可以包括用冒号分隔的类别和子类别名称:
echo "<option value='"
. $row_cat->nom_cat . ":" . $row_subcat->nom_subcat
. "'>" . $row_subcat->nom_subcat . "</option>";
好吧,我终于在“Principal”控制器中创建了逻辑,这样我就可以知道它是一个类别还是一个子类别,并且还可以知道从哪个类别继承。
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;
}
然后我可以像这样在我的数据库的table中插入照片(当然我跳过了代码中的验证部分)
$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');
这是模型方法“getWhere”,当我从 $this->datos_model->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;
}
}
所以基本上当我选择了选项时,我首先查询 mi DB 的“子类别”table 中的“名称”= 选项。如果查询不为空,则表示该选项对应于一个子类别。所以现在我需要知道哪个类别是该子类别的基础。(我有 id_cat 作为“子类别”table 中的外键)所以我进行另一个查询,其中“id_cat”= id_cat 在我的数据库的“类别”table 中。终于可以拿到父类的名字了
我正在制作一个“管理”页面来将照片上传到不同的类别,所以有一个 <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>
因此,当按下提交按钮时,在名为“Principal”的 Code Igniter 控制器和方法“subir_foto”中,我可以访问 $this->input->post('cat_op') 这让我在提交时选择了选项,但是我怎样才能得到 optgroup 值,因为我需要有子类别和类别名称。
The <optgroup>
tag does not have a value
attribute.纯粹是浏览器的格式化指令
如果您需要区分 <select>
元素中的多个相似选项,请在 value
的 value
中包含 all 必要数据15=] 元素。例如,您可以包括用冒号分隔的类别和子类别名称:
echo "<option value='"
. $row_cat->nom_cat . ":" . $row_subcat->nom_subcat
. "'>" . $row_subcat->nom_subcat . "</option>";
好吧,我终于在“Principal”控制器中创建了逻辑,这样我就可以知道它是一个类别还是一个子类别,并且还可以知道从哪个类别继承。
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;
}
然后我可以像这样在我的数据库的table中插入照片(当然我跳过了代码中的验证部分)
$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');
这是模型方法“getWhere”,当我从 $this->datos_model->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;
}
}
所以基本上当我选择了选项时,我首先查询 mi DB 的“子类别”table 中的“名称”= 选项。如果查询不为空,则表示该选项对应于一个子类别。所以现在我需要知道哪个类别是该子类别的基础。(我有 id_cat 作为“子类别”table 中的外键)所以我进行另一个查询,其中“id_cat”= id_cat 在我的数据库的“类别”table 中。终于可以拿到父类的名字了