Ir para conteúdo
Fórum Script Brasil
  • 0

Como alterar formulário com AJAX


cha

Pergunta

boa noite.. estou com um problema porque uso o PHP.

é o seguinte.. eu tenho 3 select <option> onde o cliente escolhe produto, situação, cidade.

eu consegui fazer com que quando você escolhe produto, a situação e a cidade mostra como opçao para ser selecionada só as cidade e situaçoes que tem com aquele produto. ate ai tudo ok. só que queria saber se tem como eu fazer isso sem precisar atualizar a pagina. estou usando o sguinte codigo; (vo postar só o da cidade como exemplo)

<?
// Isto esta no começo da pagina, puxa a condiçao para ser usada no WHERE dos select <option>

   $sql = "select consulta from tb_teste";
   $result = mysql_query($sql);
   $linha = mysql_num_rows($result);
   $reg = mysql_fetch_row($result);
   $teste = $reg[0];
//$teste contem por exemplo cod_produto = 2

$sql = "select cidade from tb_contrato where $teste ORDER by cidade ASC";  // $teste vem do BD. nele contem a condiçao, como vm do BD, alem de ter que atualiar a pagina, tem que ser 2 vezes.

   $result = mysql_query($sql);
   $linha = mysql_num_rows($result);
   echo "<option></option>";
   echo "<option>Limpar</option>";
   for ($i=0;$i<$linha;$i++)
   {
   $reg = mysql_fetch_row($result);
   if ($reg[0] != $igual2)      // empede que me de resultados repetidos
   {
   echo "<option>$reg[0]</option>";   //mostra resultado
   }
   $igual2 = $reg[0];          
   }
   ?>

tem como eu fazer com que ao selecionar o produto ele roda esse codigos na hora.

não sei nada de ajax. mas to precisando muito. se alguém poder ajudar agradeço.

obrigado

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

E ai beleza!

Usa JQuery, segue o link para estudo http://jquerybrasil.com/help.html

Qualquer duvida, posta ai.

Mas vale a pena aprender este novo conceito.

boa noite.. estou com um problema porque uso o PHP.

é o seguinte.. eu tenho 3 select <option> onde o cliente escolhe produto, situação, cidade.

eu consegui fazer com que quando você escolhe produto, a situação e a cidade mostra como opçao para ser selecionada só as cidade e situaçoes que tem com aquele produto. ate ai tudo ok. só que queria saber se tem como eu fazer isso sem precisar atualizar a pagina. estou usando o sguinte codigo; (vo postar só o da cidade como exemplo)

<?

// Isto esta no começo da pagina, puxa a condiçao para ser usada no WHERE dos select <option>

$sql = "select consulta from tb_teste";

$result = mysql_query($sql);

$linha = mysql_num_rows($result);

$reg = mysql_fetch_row($result);

$teste = $reg[0];

//$teste contem por exemplo cod_produto = 2

$sql = "select cidade from tb_contrato where $teste ORDER by cidade ASC"; // $teste vem do BD. nele contem a condiçao, como vm do BD, alem de ter que atualiar a pagina, tem que ser 2 vezes.

$result = mysql_query($sql);

$linha = mysql_num_rows($result);

echo "<option></option>";

echo "<option>Limpar</option>";

for ($i=0;$i<$linha;$i++)

{

$reg = mysql_fetch_row($result);

if ($reg[0] != $igual2) // empede que me de resultados repetidos

{

echo "<option>$reg[0]</option>"; //mostra resultado

}

$igual2 = $reg[0];

}

?>

tem como eu fazer com que ao selecionar o produto ele roda esse codigos na hora.

não sei nada de ajax. mas to precisando muito. se alguém poder ajudar agradeço.

obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

jonathan,

Sim, tipo eu fiz no PHP. ta rodando e tal, mas ele demora 2 refresh de pagina para rodar. no 1ª ele executa a 1ª consulta (produto) ae eu tenho que dar refresh de novo para ele rodar o select cidade conforme o (produto)

tu tens o codigo ajax, para fazer ele rodar ao mesmo tempo?

to procurando exemplos na net, mas nenhum se parece com o meu.

Link para o comentário
Compartilhar em outros sites

  • 0

Posso lhe mostrar "mais ou menos" como seria o código

Esse é só um exemplo

Depois você adapta para funcionar corretamente

Pagina1.php

<html>
<head>
<title>Minha Página</title>
<script type="text/javascript">
function VerificaPais() {
xmlhttp = new XMLHttpRequest()
xmlhttp.open("GET", "ajax.asp?pais=" + document.form1.pais.value, true)
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4) {
// Já recebeu as informações da página
retorno = xmlhttp.responseText
div_estado = document.getElementById("div_estado")
div_estado.innerHTML = retorno
}
}
}
</script>
</head>
<body>
<form name='form1'>
<select name='pais' onchange="VerificaPais()">
<option value="Brasil">Brasil</option>
<option value="EUA">Estados Unidos</option>
</select>
<div id="div_estado">
</div>
</form>
</body>
</html>
ajax.asp
<%
pais = request.querystring("pais")
response.write("<select name='estado'>")
if (pais="Brasil") then
response.write("<option value='SP'>são Paulo</option>")
response.write("<option value='outro'>Outro</option>")
elseif (pais="EUA") then
response.write("<option value='Estado1'>Estado 1</option>")
response.write("<option value='Estado2'>Estado 2</option>")
end if
response.write("</select>")
%>

Obs.:

Fiz o código em ASP porque não entendo muito de PHP

Qualquer coisa posta aí !

Link para o comentário
Compartilhar em outros sites

  • 0

JQuery vai te ajudar nisso, e é super simples trabalhar com ele.

Tenta ai, estuda o site que passei, qualquer duvida podemos te ajudar, no começo pode ser dificil, mas depois e simples.

4 linhas de codigo você faz o que precisa.

Veja este exemplo com JQuery

$.get("consultaDados.php", {variavel:value que deve passar, strncache:Math.ceil(Math.random()*100000)}, 
        function(dados){ 
            if (dados == "PROB"){
                alert("PROBLEMA NA CONSULTA.");
            }else{
                //Passa Select preenchido
                $('div#selectNome').html(dados);
                
            }
        
        }
);

Link para o comentário
Compartilhar em outros sites

  • 0
Posso lhe mostrar "mais ou menos" como seria o código

Esse é só um exemplo

Depois você adapta para funcionar corretamente

Pagina1.php

<html>
<head>
<title>Minha Página</title>
&lt;script type="text/javascript">
function VerificaPais() {
xmlhttp = new XMLHttpRequest()
xmlhttp.open("GET", "ajax.asp?pais=" + document.form1.pais.value, true)
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4) {
// Já recebeu as informações da página
retorno = xmlhttp.responseText
div_estado = document.getElementById("div_estado")
div_estado.innerHTML = retorno
}
}
}
</script>
</head>
<body>
<form name='form1'>
<select name='pais' onchange="VerificaPais()">
<option value="Brasil">Brasil</option>
<option value="EUA">Estados Unidos</option>
</select>
<div id="div_estado">
</div>
</form>
</body>
</html>
ajax.asp
<%
pais = request.querystring("pais")
response.write("<select name='estado'>")
if (pais="Brasil") then
response.write("<option value='SP'>são Paulo</option>")
response.write("<option value='outro'>Outro</option>")
elseif (pais="EUA") then
response.write("<option value='Estado1'>Estado 1</option>")
response.write("<option value='Estado2'>Estado 2</option>")
end if
response.write("</select>")
%>

Obs.:

Fiz o código em ASP porque não entendo muito de PHP

Qualquer coisa posta aí !

jonathan. não ta aparecendo o select do estado.. aparece só para selecionar o pais aqui. =(

mas axo que se der certo seu codigo eu consigo adaptar para o meu em .php

porque sera q aqui n ta aparecendo os estados?

Link para o comentário
Compartilhar em outros sites

  • 0

TENHO SELECT DO PRODUTO

<select name="produto" STYLE="font-family : monospace; font-size : 8pt">

   <?
   $sql = "select produto from tb_produto";
   echo "<option></option>";
   echo "<option>Limpar</option>";
   $result = mysql_query($sql);
   $linha = mysql_num_rows($result);
   for ($i=0;$i<$linha;$i++)
   {
   $reg = mysql_fetch_row($result);

   echo "<option>$reg[0]</option>";
   }
   ?>
   </select></FONT></td>
DA CIDADE:
<td><select name="cidade" STYLE="font-family : monospace; font-size : 8pt">
   <?
   $sql = "select cidade from tb_cidade ORDER by cidade ASC";
   $result = mysql_query($sql);
   $linha = mysql_num_rows($result);
   echo "<option></option>";
   echo "<option>Limpar</option>";
   for ($i=0;$i<$linha;$i++)
   {
   $reg = mysql_fetch_row($result);

   echo "<option>$reg[0]</option>";
   }
   ?>
   </select></FONT><td>
*Se eu criar condiçao fixa no WHERE de cada 1, EX:
<td><select name="cidade" STYLE="font-family : monospace; font-size : 8pt">
   <?
   $sql = "select cidade from tb_contrato WHERE produto = "CAMISETA" ORDER by cidade ASC";
   $result = mysql_query($sql);
   $linha = mysql_num_rows($result);
   echo "<option></option>";
   echo "<option>Limpar</option>";
   for ($i=0;$i<$linha;$i++)
   {
   $reg = mysql_fetch_row($result);

   echo "<option>$reg[0]</option>";
   }
   ?>
   </select></FONT><td>

// DESSE JEITO FUNCIONA, ELE ME DA SÒ AS CIDADE QUE TEM CONTRATO COM CAMISETA, só que como o produto n é fixo, eu criei um campo e uma tabela chamada $consulta. onde eu faço um INSERT de (produto = $produto), ai na hora de fazer select na cidade, eu uso assim :

$sql = "select cidade from tb_contrato WHERE '$CONSULTA' ORDER by cidade ASC";

//$consulta contem no caso produto = "camiseta"

só que como o PHP roda no servidor e não direto no pc do usuario, isso me faz perder 1 refresh, ou seja, 1 para inserir outro para ler o select. eu teria que apertar duas vezes no meu SUBMIT BUTON. era isso que eu queria passar para o AJAX; umas forma de atualizar esse : $sql = "select cidade from tb_contrato WHERE produto = "CAMISETA" ORDER by cidade ASC";

na hora que selecionar o produto.

entende?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...