Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal , sou iniciante em PHP e etc... Estou tentando preencher os meus inputs de acordo com o valor do select .... Mas está difícil ! Os erros podem ser grotescos ..Mas como sou iniciante nao consigo entender muito bem o script ... Qualquer ajuda é bem vinda !
PHP
<form name="form1" action="gravarementa.php" method="post" onsubmit="return validar();"> Selecione a Disciplina
<select id="sel-teste" name="sel">
<option value="">Disciplinas Atuais</option><?php
while ($lista = mysql_fetch_array($res)) {
if ($aux == $lista['periodo']) {
$combo = '<option value="' . $lista['cod_disciplina'] . '">' . $lista['descricao'] . '</option>';
}
echo $combo;
}
?>
</select>
<br>
<br>
Ementa<br>
<?php
include('funcaoAjax.php'); ?>
<label>Ementa: <input type="text" name="ementa" value="" /></label>
<label>Objetivo: <input type="text" name="objetivo" value="" /></label>
funcao
function retorna($id=null) {
$id = (int) $id;
$json = NULL;
$sql = "SELECT descricao,objetivo From `ementa_disciplina` ";
if ($id != null){
$sql .= "WHERE ano='2014' and cod_disciplina = {$id} ";
$query = mysql_query($sql);
}
$json .= '[';
if (mysql_num_rows($query) > 0) {
while ($dados = mysql_fetch_assoc($query)) {
$json .= "{ementa: '{$dados['descricao']}', objetivo: '{$dados['objetivo']}'}";
}
} else
$json = 'ementa: não encontrada';
$json .= ']';
return $json;
}
if (isset($_GET['cod_disciplina'])) {
echo retorna($_GET['cod_disciplina']);
}Esse script peguei num post aqui seu ... rsrs
Eu fiz o código exatamente como o seu e funcionou perfeitamente .. Mais estou tendo problemas para compreender a sintaxe ..
Ta ae o JS
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("select[name='sel']").change(function(){
$("input[name='ementa']").val('Carregando...');
$("input[name='objetivo']").val('Carregando...');
$.getJSON(
'funcaoAjax.php',
{cod_disciplina: $(this).val()},
function(data){
$.each(data, function(i, obj){
$("input[name='ementa']").val(obj.ementa);
$("input[name='objetivo']").val(obj.objetivo);
});
});
});
});
</script>Guilherme, beleza?
Vamos lá:
Js:
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript">
1- $(document).ready(function(){
2- $("select[name='sel']").change(function(){
3- $("input[name='ementa']").val('Carregando...');
4- $("input[name='objetivo']").val('Carregando...');
5-
6- $.getJSON('funcaoAjax.php', {cod_disciplina: $(this).val()}, function(data){
7- $.each(data, function(i, obj){
8- $("input[name='ementa']").val(obj.ementa);
9- $("input[name='objetivo']").val(obj.objetivo);
10- });
11- });
12- });
13- });
</script>
Linha 2:
O método change é disparado quando uma opção é selecionada no combox com o nome sel. Nesse caso o combobox de disciplinas.
Linha 3 e 4:
Seta o valor "Carregando...." nos inputs ementa e objetivo. Isso é usado para mostrar ao usuário que está acontecendo uma ação após ele escolher uma opção no combobox de disciplinas
Linha 6:
Chama o método $.getJSON para que processe os dados que contem na página funcaoAjax.php e tenha como retorno um formato JSON. Note que também é passado parar a página via get o código da disciplina, que na verdade é o valor do value selecionado no combobox de disciplinas
Linha 7:
O método $.each na verdade é um loop, ou seja ele vai pegar o resultado da consulta obtida na página funcaoAjax.php e setar os valores nos inputs ementa e objetivo. (Linha 8 e 9).
funcaoAjax.php
Basicamente pega o código enviado, faz um select no banco e retorna os dados no formato json.
Espero ter ajudado
ATT
Muito obrigado pela ajuda , esclareceu bastante coisa ..
Mas continua o problema .. No console do Chrome aparece a seguinte mensagem :
Uncaught TypeError : Cannot read property 'ementa' of null (repeated 2 times) , não sei o que fazer
Guilherme,
Eu sinceramente faria diferente do seu exemplo.
No arquivo .php use o json_encode : http://www.php.net/manual/pt_BR/function.json-encode.php
O retorno com o javascript você pode alterar o método $.each por um for simples.
var json_parsed = $.parseJSON(data);
if (json_parsed.results.length > 0) {
for (var i = 0; i < json_parsed.results.length; i++) {
var jresult = json_parsed.results[i];
$("input[name='ementa']").val(jresult.ementa);
....
}
}Obrigado Pinguim CPT, estou apanhando muito de Ajax e etc .. Obrigado mesmo assim !
Mudei a função para esta , mas continua o problema :/
function retorna( $id )
{
$id = (int)$id;
$sql = "SELECT `descricao`, `objetivo`, `ano`
FROM `ementa_disciplina` WHERE `ano`='2014' `cod_disciplina` = {$id} ";
$query = mysql_query( $sql );
$arr = Array();$arr['descricao'] = $dados->ementa;
$arr['objetivo'] = $dados->objetivo;
}
}$arr[] = 'ementa: não encontrada';
}
return json_encode( $arr );
}
Ok, e o js ?
veja:
}Esse script é do meu blog:http://wbruno.com.br/ajax/combobox-preenche-input-ajax/A melhor coisa que vc pode fazer, é deixar ele funcionando sem alterar, e depois que entender, ai sim mexer em algo.