alissong 1 Denunciar post Postado Abril 25, 2009 Pessoal, Estou construindo um formulário que exibe alguns dados ao digitar o código do produto. Veja o código: ajax_prod.php <html> <title>teste</title> <head> <script src="ajax.js"></script> <script> //função que completa os campos function buscarProduto(COD) { var ajax=openAjax(); var recipiente=gE('adtProduto'); var produto=gE('produto'); var valor=gE('valor'); ajax.open('GET','busca_prod.php?cod='+COD,true); function gE(ID) { return document.getElementById(ID); } ajax.onreadystatechange=function(){ if(ajax.readyState==1){ produto.value='carregando...'; valor.value='carregando...'; } if(ajax.readyState==4){ if(ajax.status==200){ r=ajax.responseText; rproduto= r.substring(0, (i = r.indexOf(','))); r = r.substring(++i); rvalor = r.substring(0, (i = r.indexOf(','))); r = r.substring(++i); //alert(rcents); produto.value=rproduto; valor.value=rvalor; removerDivs(); }//200 }//4 }//ready ajax.send(null); return false; }//função </script> </head> <body> <table width="50%" border="0"> <tr> <td align="center">Cod</td> <td><input name="cod" type="text" id="cod" size="15" onkeyup="buscarProduto(this.value)"></td> </tr> <tr> <td align="center">Quantidade</td> <td><input name="quantidade" type="text" id="quantidade" value="1" size="10"></td> </tr> <tr> <td align="center">Produto</td> <td><textarea rows="4" name="produto" id="produto" cols="45"></textarea></td> </tr> <tr> <td align="center">Valor</td> <td><input name="valor" type="text" id="valor" size="15"></td> </tr> <tr> <td align="center"> </td> <td><input type="submit" class="btn" id="btnOk" value="Adicionar" onclick="cadastroProd();"></td> </tr> </table> </body> </html>busca_prod.php <?php // Este primeiro header, corrigi o problema de acentuação dos caracteres. header('Content-Type: text/html; charset=iso-8859-1'); // Os dois headers seguintes, evitam que a página seja armazenada em cache no navegador. header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past include "conexao.php"; //recebendo o COD $cod=$_GET["cod"]; //trazendo o produto $sql = "select * from produto where cod_produto='$cod'"; $res = mysql_query($sql) or die(mysql_error()); $registros = mysql_num_rows($res); if($registros > 0){ while ($linha = mysql_fetch_array($res)){ echo "$linha[2]"; echo "$linha[4]"; } }//fecha if else { echo " <H3>Desculpe, mas não achei nada esse ano !<H3>"; }//fecha else ?>Ajax.js Ajax.js // Esta função instancia o objeto XMLHttpRequest function openAjax() { var ajax; try { ajax = new XMLHttpRequest(); } catch(ee) { try { ajax = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { ajax = new ActiveXObject("Microsoft.XMLHTTP"); } catch(E) { ajax = false; } } } return ajax; } Exibem nos campos produto e valor, somente a descrição do produto. Veja exemplo: produto = caneta esferografica valor = material plastico Alguém sabe como resolver isso. Um abraço. Alissong Compartilhar este post Link para o post Compartilhar em outros sites
~TiuTalk~ 7 Denunciar post Postado Abril 25, 2009 O erro provavelmente está aqui: echo "$linha[2]"; echo "$linha[4]"; Você pode estar usando a coluna errada... troque o 4 ali por outros números (3, 5, 8 por exemplo) e vá testando até encontrar a coluna correta do banco de dados... Ou poste aqui o código de criação da tabela :) Compartilhar este post Link para o post Compartilhar em outros sites
alissong 1 Denunciar post Postado Abril 25, 2009 TiuTalk, Veja a estruta da tabela, pois mesmos testando como sugeriu o erro continua: tabela produto Campo Tipo Nulo Padrão Comentários cod_produto int(11) Não cod_siasg varchar(40) Não nome_produto text Não unidade varchar(10) Não preco_produto decimal(10,2) Não 0.00 Alguém sabe como resolver isso. Um abraço. Alissong Compartilhar este post Link para o post Compartilhar em outros sites
alissong 1 Denunciar post Postado Abril 26, 2009 Galera, Ficou assim para ajudar alguém futuramente. ajax_prod.php <html> <title>teste</title> <head> <script src="ajax.js"></script> <script> //função que completa os campos function buscarProduto(COD) { var ajax=openAjax(); var recipiente=gE('adtProduto'); var produto=gE('produto'); var valor=gE('valor'); ajax.open('GET','busca_prod.php?cod='+COD,true); function gE(ID) { return document.getElementById(ID); } ajax.onreadystatechange=function(){ if(ajax.readyState==1){ produto.value='carregando...'; valor.value='carregando...'; } if(ajax.readyState==4){ if(ajax.status==200){ r=ajax.responseText; rproduto= r.substring(0, (i = r.indexOf('|'))); produto.value = unescape(rproduto.replace(/\+/g," ")); r = r.substring(++i); rvalor = r.substring(0, (i = r.indexOf('|'))); valor.value = unescape(rvalor.replace(/\+/g," ")); r = r.substring(++i); }//200 }//4 }//ready ajax.send(null); return false; }//função </script> </head> <body> <table width="50%" border="0"> <tr> <td align="center">Cod</td> <td><input name="cod" type="text" id="cod" size="15" onkeyup="buscarProduto(this.value)"></td> </tr> <tr> <td align="center">Quantidade</td> <td><input name="quantidade" type="text" id="quantidade" value="1" size="10"></td> </tr> <tr> <td align="center">Produto</td> <td><textarea rows="4" name="produto" id="produto" cols="45"></textarea></td> </tr> <tr> <td align="center">Valor</td> <td><input name="valor" type="text" id="valor" size="15"></td> </tr> <tr> <td align="center"> </td> <td><input type="submit" class="btn" id="btnOk" value="Adicionar" onclick="cadastroProd();"></td> </tr> </table> </body> </html>busca_produto.php <?php // Este primeiro header, corrigi o problema de acentuação dos caracteres. header('Content-Type: text/html; charset=iso-8859-1'); // Os dois headers seguintes, evitam que a página seja armazenada em cache no navegador. header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past include "conexao.php"; //recebendo o COD $cod=$_GET["cod"]; //trazendo o produto $sql = "select * from produto where cod_produto='$cod'"; $res = mysql_query($sql) or die(mysql_error()); $registros = mysql_num_rows($res); if($registros > 0){ while ($linha = mysql_fetch_array($res)){ echo "$linha[2]|"; echo "$linha[1]|"; } echo "</table>"; }//fecha if else { echo "Desculpe, código inválido."; }//fecha else ?> Um abraço. Alissong Compartilhar este post Link para o post Compartilhar em outros sites