Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

alissong

[Resolvido] Carregando campos no formulário com php e ajax

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.