Dieos 0 Denunciar post Postado Novembro 17, 2010 olá, já tentei de tudo to quase indo na macumba pra ve se roda... é o seguinte tenho um formulario on o usuario entra com um valor (numerico) e faz-se uma consulta ao banco e o valor retornado preenche alguns text field, até aqui tudo na santa paz, logo abaixo vem um listmenu, que recebe seus dados do campo t_Nome da tabela terminal de acordo com o codgo que ele digitou anteriormente no form, até aqui tb ta tranquilo ele ta fazendo, o problema é que logo abaixo ele tem que preencher outros textfield de acordo com os dados da tabela terminal só que dessa vez sendo filtrado pelo nome que for escolido no listmenu. William Bruno, tentei varios codigos seus, ate refiz uma pagina teste para tentar rodar so o que vecê postou em ajax, ele carrega os dados vindo do banco mas não passa para as textfile, ou seja o JSON não funciona tentei também uma outra que você postou que o retorno vai para um outro box dependente, mas não funciona, estou desenvolvendo em PHP no dreamweaver cs4, não sei se tem alguma coisa haver. segue os codigos, index.php <div id="Layer4"> //aqui ta tudo tranquilo ele faz a consulta e retorna os dados do banco <form action="ag_valida.php" method="post" enctype="multipart/form-data" name="form1" id="form1"> <p>Dados da Agencia </p> <p>Codigo<span id="sprytextfield1"> <input name="agencia" type="text" id="agencia" value="<?php echo $_SESSION['agenciaCode']; ?>" size="5" maxlength="3" /> </span> <label> <input name="ok" type="submit" id="ok" value="OK" /> </label> Nome <input name="nome_agencia" type="text" disabled="disabled" id="nome_agencia" value=" <?php echo $_SESSION['agenciaNome']; ?>" /> <label> <input type="submit" name="Submit" value="PServe" /> <input type="submit" name="Submit2" value="PRot" /> <input type="submit" name="Submit3" value="VNC" /> <br /> <br /> Circuito <input name="circuito" type="text" disabled="disabled" id="circuito" value="<?php echo $_SESSION['agenciaCircu']; ?> " size="22" readonly="readonly" /> <br /> <br /> Telefone <input name="telefone" type="text" disabled="disabled" id="telefone" value="<?php echo $_SESSION['agenciaTel']; ?> " size="16" /> Ramal <input name="textfield2" type="text" disabled="disabled" value="<?php echo $_SESSION['agenciaRamal']; ?> " size="18" /> </label> <label>Fax <input name="textfield3" type="text" disabled="disabled" value="<?php echo $_SESSION['agenciaFax']; ?>" size="10" /> </label> <p> //aqui é o listmenu funcionando <label> <select name="terminal" id="terminal"> <option value="">Terminal</option> <?php include ('ag_valida.php'); echo montaSelect(); ?> </select> <br /> <br /> </label> //aqui são os textfild que irão receber os dados da tabela de acordo com o listmenu <label> UNIDADE:</label> <input name="t_Unidade" type="text" disabled="disabled" id="UNIDADE" value="<?php echo $_SESSION['teste']; ?>"/> <label>COD.:</label> <input name="COD" type="text" disabled="disabled" id="textfield2" value="<?php echo "$t"; ?>" /> <p> <label> TIPO: </label> <input name="TIPO" type="text" disabled="disabled" id="textfield3" value"" /> <label>UF:</label> <input name="UF" type="text" disabled="disabled" id="textfield4" value"" /> <p> <label> SUPERINTEND.:</label> <input name="SUPERINTEND" type="text" disabled="disabled" id="textfield5" value"" /> <label> TERM.: </label> <input name="TERM" type="text" disabled="disabled" id="textfield6" value"" /> </form> </div> <div id="apDiv1"><img src="icon/longin.png" width="28" height="26" /></div> <script type="text/javascript"> <!-- var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1", "none", {isRequired:false}); //--> </script> </body> </html> ag_valida.php <?php session_start(); //conexão com o banco $aglink = mysql_connect('127.0.0.1', 'dieos', 'Di140984') or die ("Não foi possivel conectar ao banco"); $agbanco = mysql_select_db('infobank', $aglink) or die ("Não foi possivel acessar o banco"); $agCod = (isset($_POST['agencia'])) ? $_POST['agencia'] : ''; [color="#FF0000"]//aqui é a consulta do primeiro campo digitado[/color] $agc = "SELECT * FROM `agencias` WHERE `ag_cod` = '".$agCod."' LIMIT 1"; $agquery = mysql_query($agc); $agresultado = mysql_fetch_assoc($agquery); if (empty($agresultado)) { return false; } else { //variaveis que irão preencher os textfield iniciais $_SESSION['agenciaNome'] = $agresultado['ag_Nome']; $_SESSION['agenciaCode'] = $agresultado['ag_cod']; $_SESSION['agenciaTel'] = $agresultado['telefone']; $_SESSION['agenciaFax'] = $agresultado['fax']; $_SESSION['agenciaIpServ'] = $agresultado['ipserv']; $_SESSION['agenciaIpRot'] = $agresultado['iprot']; $_SESSION['agenciaCircu'] = $agresultado['circuito']; $_SESSION['agenciaRamal'] = $agresultado['ramal']; } //aqui eu me guiei pelo post de como fazer pelo JSON function montaSelect() { $tsql = "SELECT * FROM `terminal` "; $tsql .= "WHERE `ag_cod` = '".$_SESSION['agenciaCode']."'"; $tquery = mysql_query($tsql); if( mysql_num_rows( $tquery ) > 0 ) { while( $tdados = mysql_fetch_assoc( $tquery ) ) { $topt .= '<option value="'.$tdados['ag_cod'].'">'.$tdados['t_Nome'].'</option>'; } } else $topt = '<option value="0">Nunhum terminal cadastrado</option>'; return $topt; } //aqui seria os codigo do JSON, mas eu retirei pelo fato de não ter funcionado header("Location: ocorrencia.php"); ?> ta ai pessoal comentei umas partes ai quem tiver uma solução eu agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Novembro 17, 2010 William Bruno, opa ! ^_^ este aqui: http://www.wbruno.com.br/blog/?p=12 ? então cara, o código funciona: http://www.wbruno.com.br/scripts/combo-preenche-input.php olha o jSON, de id=2: http://www.wbruno.com.br/scripts/combo-preenche-input-function.php?idCliente=2 Compartilhar este post Link para o post Compartilhar em outros sites
Dieos 0 Denunciar post Postado Novembro 17, 2010 pois é vou tentar fazer denovo a sua aplicação do zero se funcionar aki eu implemento na minha.. até Compartilhar este post Link para o post Compartilhar em outros sites
Dieos 0 Denunciar post Postado Novembro 17, 2010 Willian, fiz tudo dentro dos conformes, copiei todo o seu codigo, ele puxa só os nomes da tabela mas não preenche os textfilds olha ai index.php <html> <head> <script type="text/javascript" src="combo-preenche-input.php_arquivos/jquery-1.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("select[name='nome']").change(function(){ $("input[name='endereco']").val('Carregando...'); $("input[name='telefone']").val('Carregando...'); $.getJSON( 'combo-preenche-input-function.php', {idCliente: $(this).val()}, function(data){ $.each(data, function(i, obj){ $("input[name='endereco']").val(obj.endereco); $("input[name='telefone']").val(obj.telefone); }) }); }); }); </script> </head> <body> <form action="" method="post"> <label>Nome: <select name="nome"> <option value="">--</option> <?php include('function.php'); echo montaSelect(); ?> </select></label> <label>Endereço: <input type="text" name="endereco" value="" /></label> <label>Telefone: <input type="text" name="telefone" value="" /></label> </form> </body> </html> <?php $con = mysql_connect('127.0.0.1', 'dieos', 'Di140984'); mysql_select_db('ajax', $con); /** * função que retorna o select */ function montaSelect() { $sql = "SELECT `idCliente`, `nome` FROM `cliente` "; $query = mysql_query( $sql ); if( mysql_num_rows( $query ) > 0 ) { while( $dados = mysql_fetch_assoc( $query ) ) { $opt .= '<option value="'.$dados['idCliente'].'">'.$dados['nome'].'</option>'; } } else $opt = '<option value="0">Nenhum cliente cadastrado</option>'; return $opt; } /** * função que devolve em formato JSON os dados do cliente */ function retorna( $id=null ) { $id = (int)$id; $sql = "SELECT * FROM `cliente` "; if( $id != null ) $sql .= "WHERE `idCliente` = {$id} "; $query = mysql_query( $sql ); //$json = 'var dados = '; $json .= ' ['; if( mysql_num_rows( $query ) > 0 ) { while( $dados = mysql_fetch_assoc( $query ) ) { $json .= "{endereco: '{$dados['endereco']}', telefone: '{$dados['telefone']}'}";; } } else $json = 'endereco: não encontrado'; $json .= ']'; //$jston .= ';'; return $json; } /* só se for enviado o parâmetro, que devolve o combo */ if( isset($_GET['idCliente']) ) { echo retorna( $_GET['idCliente'] ); } ?> só não ta retornando o valor Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Novembro 17, 2010 então vai lá.... localhost/combo-preenche-input-function.php?idCliente=2 deve voltar um jSON como em: http://www.wbruno.com.br/scripts/combo-preenche-input-function.php?idCliente=2 veja oque aparece pra você. provavelmente serão erros php. Arrume. Compartilhar este post Link para o post Compartilhar em outros sites
Dieos 0 Denunciar post Postado Novembro 17, 2010 então vai lá.... localhost/combo-preenche-input-function.php?idCliente=2 deve voltar um jSON como em: http://www.wbruno.com.br/scripts/combo-preenche-input-function.php?idCliente=2 veja oque aparece pra você. provavelmente serão erros php. Arrume. apareceu isso Notice: Undefined variable: json in C:\Program Files\EasyPHP-5.3.3\www\teste\function.php on line 39 [{endereco: 'Avenida Ajax de Cloro', telefone: '9999-9996'}] alguma ideia? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Novembro 17, 2010 troca: $json .= ' ['; if( mysql_num_rows( $query ) > 0 ) por: $json = ' ['; if( mysql_num_rows( $query ) > 0 ) Compartilhar este post Link para o post Compartilhar em outros sites
Dieos 0 Denunciar post Postado Novembro 17, 2010 troca: $json .= ' ['; if( mysql_num_rows( $query ) > 0 ) por: $json = ' ['; if( mysql_num_rows( $query ) > 0 ) beleza eu tinha feito isso ela mostra so o resultado igual ao seu [{endereco: 'Rua dos Bobos, n 0', telefone: '6666-6669'}] mas a pagina principal continua mostrando somente o valor do combo, mesmo que eu escolha ela não preenche os textfield. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Novembro 17, 2010 vamos debugar o jquery agora: $("select[name='nome']").change(function(){ alert( $( this ).val() ); diga oque retornar. se não retornar nada, você provavelmente não linkou a lib jQuery corretamente. cara, é assim.. vai debugando e arrumando... Compartilhar este post Link para o post Compartilhar em outros sites
Dieos 0 Denunciar post Postado Novembro 17, 2010 vamos debugar o jquery agora: $("select[name='nome']").change(function(){ alert( $( this ).val() ); diga oque retornar. se não retornar nada, você provavelmente não linkou a lib jQuery corretamente. cara, é assim.. vai debugando e arrumando... William, esse codigo eu insiro em qual pagina? na do form ou na da função?? por que eu já tenho esse codigo dentro do <script> da pagina do form. e olha o que aparece no dreamweaver quando eu clico pra ele me mostrar os codigos jquery.js e essa outra é como ta a pagina Compartilhar este post Link para o post Compartilhar em outros sites
AnalistaSC 0 Denunciar post Postado Novembro 17, 2010 Copiei todo o exemplo usando o meu banco de dados e não estou conseguindo fazer aparecer os nomes. Compartilhar este post Link para o post Compartilhar em outros sites
Dieos 0 Denunciar post Postado Novembro 17, 2010 Willian, segue o link das minhas duas paginaa... ve se elas funcionam ai no seu server. até Clique aqui Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Novembro 17, 2010 o parser de JSON do jQuery sofreu alterações desde que fiz esse script... segue o script corrijido: function.php <?php $con = mysql_connect('localhost', 'root', '123'); mysql_select_db('test', $con); /** * função que retorna o select */ function montaSelect() { $sql = "SELECT `idCliente`, `nome` FROM `cliente` "; $query = mysql_query( $sql ); if( mysql_num_rows( $query ) > 0 ) { while( $dados = mysql_fetch_assoc( $query ) ) { $opt .= '<option value="'.$dados['idCliente'].'">'.$dados['nome'].'</option>'; } } else $opt = '<option value="0">Nenhum cliente cadastrado</option>'; return $opt; } /** * função que devolve em formato JSON os dados do cliente */ function retorna( $id ) { $id = (int)$id; $sql = "SELECT `idCliente`, `nome`, `telefone`, `endereco` FROM `cliente` WHERE `idCliente` = {$id} "; $query = mysql_query( $sql ); $arr = Array(); if( mysql_num_rows( $query ) ) { while( $dados = mysql_fetch_object( $query ) ) { $arr['endereco'] = $dados->endereco; $arr['telefone'] = $dados->telefone; } } else $arr[] = 'endereco: não encontrado'; return json_encode( $arr ); } /* só se for enviado o parâmetro, que devolve o combo */ if( isset($_GET['idCliente']) ) { echo retorna( $_GET['idCliente'] ); } index.php <html> <head> <script type="text/javascript" src="jquery-1.4.2.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("select[name='nome']").change(function(){ var endereco = $("input[name='endereco']"); var telefone = $("input[name='telefone']"); $( endereco ).val('Carregando...'); $( telefone ).val('Carregando...'); $.getJSON( 'function.php', { idCliente: $( this ).val() }, function( json ) { $( endereco ).val( json.endereco ); $( telefone ).val( json.telefone ); } ); }); }); </script> </head> <body> <form action="" method="post"> <label>Nome: <select name="nome"> <option value="">--</option> <?php include 'function.php'; echo montaSelect(); ?> </select></label> <label>Endereço: <input name="endereco" type="text" disabled="disabled" value="" /></label> <label>Telefone: <input type="text" name="telefone" value="" /></label> </form> <div id="test"></div> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites
Dieos 0 Denunciar post Postado Novembro 17, 2010 Willian, nada cara... copiei esses codigos em uma pagina nova, salvei rodei e so me retorna os dados do combo, não chega a preencher os textfield tu achas que pode ser configuração do meu easyPHP? ha e o retorno da pagina function.php ta normal se colocar o cod ele mostra os dados. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Novembro 17, 2010 troca: $("select[name='nome']").change(function(){por $("select[name='nome']").change(function(){ alert( $( this ).val() ); provavel que seja erro no teu js.. qual versão do jQuery você tá usando ? Compartilhar este post Link para o post Compartilhar em outros sites
AnalistaSC 0 Denunciar post Postado Novembro 17, 2010 Posso participar deste tópico? N Compartilhar este post Link para o post Compartilhar em outros sites
Dieos 0 Denunciar post Postado Novembro 17, 2010 Posso participar deste tópico? N pode sim toda a ajuda é bem vinda troca: $("select[name='nome']").change(function(){por $("select[name='nome']").change(function(){ alert( $( this ).val() ); provavel que seja erro no teu js.. qual versão do jQuery você tá usando ? \o/ \o/ \o/ \o/ Rodouuuuuuuuuuuuuuuuu valeu muito Willian, agora posso ir trabalhar em paz... eu baixei outra biblioteca a 1.4.3-min.js e alterei na index no cabeçalio do script. vlw mesmo agora vo estudar e implementar a minha aplicação. até a proxima duvida Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Novembro 17, 2010 Posso participar deste tópico? N pode sim, qual a dúvida? pegue o script do post #13 e estude, rode do jeito que está lá. Compartilhar este post Link para o post Compartilhar em outros sites