Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde!
Tenho um sistema que preenche os dados do registro via ajax, na hora de editar. Tenho um select dinâmico nesse meio ai. O select "pai" eu consigo trazer os dados do banco via ajax, já o filho me retorna em branco.
Essa função é chamada ao abrir o modal:
function carregaDadosCdJSon(idchamado){
$.post(base_url+'/index.php/chamado/chamado_controller/dados_chamado', {
idchamado: idchamado
}, function (data){
(... outros dados ...)
$('#subcategoria').val(data.subcategoria_fk);
$('#categoria_fk').val(data.categoria_fk);
}, 'json');
HTML:
<label for="categoria">Categoria</label>
<select class="form-control" name="categoria_fk" id="categoria_fk" required="required" onchange='buscar_subcategoria($(this).val())'>
<option value="">Selecione uma categoria</option>
<?php foreach ($categoria -> result() as $linha): ?>
<option value="<?php echo $linha->idcategoria?>"><?php echo $linha->nomecategoria?></option>
<?php endforeach;?>
</select>
<div class="form-group">
<label for="exampleSelect1">Subcategoria</label>
<select class="form-control" name="subcategoria_fk" id="subcategoria">
</select>
O Javascript que preenche o select filho é aquele padrãozinho que acessa o php e gera o select.
function buscar_subcategoria(idcategoria){
$.post(base_url+"/index.php/subcategoria/subcategoria_controller/ajax_dados_subcategoria", {
idcategoria : idcategoria
}, function(data){
$('#subcategoria').html(data);
});
}
Recebe o id da view, faz a consulta e devolve o valor correspondente ao valor passado:
function ajax_dados_subcategoria($idcategoria){
$this->load->model('subcategoria/subcategoria_model');
$dados = $this->subcategoria_model->m_ajax_dados_subcategoria($idcategoria);
$option = "<option value=''></option>";
foreach($dados -> result() as $linha) {
$option .= "<option value='$linha->idsubcategoria'>$linha->nomesubcategoria</option>";
}
echo $option;
}Quando você seleciona um estado ele não traz a cidade? Ou é só quando você abre o modal para a edição?
Somente quando eu abro o modal para edição. Quando eu abro a primeira vez para cadastro td funciona. E se, por exemplo, eu abrir o modal de edição e alterar a categoria, a subcategoria passa a funcionar. Mas se eu n mexer na categoria, a subcategoria fica em branco.
Faz uma requisição ajax assim que você clicar no botão editar, ai você pega o id do que você vai editar e faz uma verificação se do id da categoria e o id da subcategoria..
Ai você faz
$('#categoria_fk').val(data);
$('#subcategoria').val(data);>
Faz uma requisição ajax assim que você clicar no botão editar, ai você pega o id do que você vai editar e faz uma verificação se do id da categoria e o id da subcategoria..
Ai você faz
$('#categoria_fk').val(data);
$('#subcategoria').val(data);
Ele retorna o id certo tanto da categoria qnt da sub. Já debuguei e vi que passa. Tanto é que qnd eu faço um foreach na subcategoria, ele exibe o dado a subcategoria sacou? É tipo assim, ele precisa que o valor esteja carregado na página para que o Ajax possa trazer no campo certo. Como o meu foreach de subcategoria é feito numa página PHP, ele n encontra.
Meu foreach da subcategoria é feito no controller. E não na pg de edição como o da categoria.
Quando você vai na pq view de edição você tem o id que vai ser editado certo?
Com esse id você manda fazer a consulta no banco e verifica se tem, se tiver manda mostrar, eu fiz assim com o meu de estado e cidade.
<?php
if($model->city_id){
$cidade = $con->createCommand("select c.id, c.city_id, a.name_city, b.state, b.id as cod_state from city a, state b, address c
where a.state_id = b.id and a.id = c.city_id and c.id = '$model->id'");
$resultado = $cidade->queryAll();
}
?>
<select name="city_id" id="cidade" style="width: 17%; height: 31px;">
<?php
if($model->city_id){
echo"<option value='".$model->city_id."'>".$resultado[0]['name_city']."</option>";
}else{
echo"<option>Sua Cidade</option>";
}
?>
</select>>
Quando você vai na pq view de edição você tem o id que vai ser editado certo?
Com esse id você manda fazer a consulta no banco e verifica se tem, se tiver manda mostrar, eu fiz assim com o meu de estado e cidade.
<?php
if($model->city_id){
$cidade = $con->createCommand("select c.id, c.city_id, a.name_city, b.state, b.id as cod_state from city a, state b, address c
where a.state_id = b.id and a.id = c.city_id and c.id = '$model->id'");
$resultado = $cidade->queryAll();
}
?>
<select name="city_id" id="cidade" style="width: 17%; height: 31px;">
<?php
if($model->city_id){
echo"<option value='".$model->city_id."'>".$resultado[0]['name_city']."</option>";
}else{
echo"<option>Sua Cidade</option>";
}
?>
</select>
Amigo, perdoe me se não entendi corretamente, mas você usou a query na view?
É nesse exemplo eu usei, não é o correto né.
Quando você seleciona um estado ele não traz a cidade? Ou é só quando você abre o modal para a edição?