Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
models/categoria_model.php
class Categorias_model extends CI_Model
{
public $tab_categorias = 'categorias';
public function __construct() parent::__construct();
}
function get_categorias() {
$this->db->where('id_pai',0);
return $this->db->get($this->tab_categorias)->result();
}
function get_subcategorias($id_pai) $this->db->from($this->tab_categorias);
$this->db->where(array('id_pai'=>$id_pai, 'ativo'=>'Sim'));
$this->db->order_by('posicao', 'asc');
return $this->db->get()->result();
}
}
Controllers/categoria.php
function get_categoria()
{
$data['categorias'] = $this->categorias_model->get_categorias();
$data['textos'] = $this->textos_model->get_by_textos(array('id_texto'=>$id));
$data['subcats'] = $this->categorias_model->get_subcategorias($data['textos']->categoria_id);
$this->load->view('categorias', $data);
}
views/categorias.php
<form action="" method="POST" enctype="multipart/form-data">
<table>
<tr>
<th><label for="categoria"> Categoria </label></th>
<td>
<?php
$categoria['Categorias Disponíveis'][''] = 'Selecione uma categoria';
foreach($categorias as $a){
$categoria['Categorias Disponíveis'][$a->id_cat] = $a->nome;
}
echo form_dropdown('categoria', $categoria, array($textos->categoria_id),"id='categoria'");
?>
</td>
</tr>
<tr>
<th><label for="subcategoria"> Subategoria </label></th>
<td>
<select name='subcategoria' id='subcategoria'>
<option value=''> Selecione uma subcategoria </option>
<?php
if (isset($subcategorias)) {
echo "<optgroup label='Subcategoria'>";
foreach ($subcategorias as $key => $list) {
echo "<option value='". $list['id_cat'] . "'>" . $list['nome'] . "</option>";
}
echo "</optgroup>";
}else{
$subcategoria['Categorias Disponíveis'][''] = 'Selecione uma categoria';
foreach ($subcats as $key => $list) {
$selected = $textos->subcategoria_id == $list->id_cat ? 'selected=selected': '';
echo "<option value='{$list->id_cat}' {$selected}>{$list->nome}</option>";
}
}
?>
</select>
</td>
</tr>
</table>
O javascripts (Certifique-se de ter baixado a última versão do jQuery)
<script type="text/javascript">
$(document).ready(function(){
$('select#categoria').change(function(){
var categoria = $("#categoria").val(); // Pega o valor selecionado
//alert(categoria); //Só para debugg da variavel
$('#subcategoria').load('/get_categoria/'+categoria); //controller onde está chamando a função
});
});
</script>
Acho q é isso. Qualquer dúvida é só postar um comentário!!!
Pode até não ser a melhor solução mas, deve servir!!
Esqueci a tabela do MySQL
--
-- Estrutura da tabela categorias
--
CREATE TABLE IF NOT EXISTS `ell_categorias` (
`id_cat` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(30) DEFAULT NULL,
`posicao` int(11) NOT NULL,
`id_pai` int(11) DEFAULT NULL,
`ativo` enum('Sim','Não') NOT NULL DEFAULT 'Sim',
PRIMARY KEY (`id_cat`),
FULLTEXT KEY `busca` (`nome`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;Carregando comentários...