[Script]Video aula - Combo Dinâmico com PHP e Ajax

Seção para postar os scripts das video aulas, e dos membros do forum

[Script]Video aula - Combo Dinâmico com PHP e Ajax

Mensagempor davidchc » Sáb Mai 23, 2009 5:07 pm

Os arquivos da video aula Combo Dinâmico com PHP e Ajax.

index.php
Código: Selecionar tudo
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
      
      $(document).ready(function(){
         
         $("select[name=estado]").change(function(){
            $("select[name=cidade]").html('<option value="0">Carregando...</option>');
            
            $.post("cidades.php",
                  {estado:$(this).val()},
                  function(valor){
                     $("select[name=cidade]").html(valor);
                  }
                  )
            
         })
      })
      
</script>
</head>

<body>
<form action="" method="post">
   <select name="estado">
       <option value="0">Escolha um Estado</option>
        <?php
         mysql_connect("localhost", "root", "");
         mysql_select_db("mxmasters");
         
         $sql = "SELECT * FROM tb_estados ORDER BY nome ASC";
         $qr = mysql_query($sql) or die(mysql_error());
         while($ln = mysql_fetch_assoc($qr)){
            echo '<option value="'.$ln['id'].'">'.$ln['nome'].'</option>';
         }
      ?>
       
    </select>
   
    <select name="cidade">
       <option value="0" disabled="disabled">Escolha um Estado Primeiro</option>
    </select>
</form>
</body>
</html>


cidades.php

Código: Selecionar tudo
<?php

mysql_connect("localhost", "root", "");
mysql_select_db("mxmasters");

$estado = $_POST['estado'];

$sql = "SELECT * FROM tb_cidades WHERE estado = '$estado' ORDER BY nome ASC";
$qr = mysql_query($sql) or die(mysql_error());

if(mysql_num_rows($qr) == 0){
   echo  '<option value="0">'.htmlentities('Não cidades nesse estado').'</option>';
   
}else{
   while($ln = mysql_fetch_assoc($qr)){
      echo '<option value="'.$ln['id'].'">'.$ln['nome'].'</option>';
   }
}

?>


Obs.: O jquery está sendo ensinado a baixar na video aula, e tbm o arquivo sql com os estados e cidades.
Avatar de usuário
davidchc
Veterano
 
Mensagens: 3135
Data de registro: Qua Ago 06, 2008 2:11 pm

Re: [Script]Video aula - Combo Dinâmico com PHP e Ajax

Mensagempor Lugo » Sex Mai 29, 2009 11:43 am

Valeu David, devo ter pecado em alguma parte, refiz o codigo duas vezes, e falhava na mesma parte, mais agora deu certo, muito bom, vai ser muito util, era o que o site precisava, obrigado.
Lugo
Novo membro
 
Mensagens: 23
Data de registro: Sex Mai 01, 2009 1:29 pm

Re: [Script]Video aula - Combo Dinâmico com PHP e Ajax

Mensagempor Deives » Qui Jun 04, 2009 10:21 am

Eai David, muito bom, mas só uma dúvida, o combo está funcionando normal mas quando envio o formulário o campo cidade está vindo vazio, o que pode ser?
Avatar de usuário
Deives
Membro Sênior
 
Mensagens: 76
Data de registro: Qui Ago 28, 2008 1:40 pm

Re: [Script]Video aula - Combo Dinâmico com PHP e Ajax

Mensagempor davidchc » Qui Jun 04, 2009 12:37 pm

Veja se vc tá recuperando corretamente o valores:

<?php
$estado = $_POST['estado'];
$cidade = $_POST['cidade'];
?>

Nesse caso eu envio só o id, se for formulário de contato, vc em vez de usar o ID vc pode usar o campo uf para fazer o relacionamento, e no campo de cidade vc coloca o nome da cidade em vez do id.
Avatar de usuário
davidchc
Veterano
 
Mensagens: 3135
Data de registro: Qua Ago 06, 2008 2:11 pm

Re: [Script]Video aula - Combo Dinâmico com PHP e Ajax

Mensagempor Deives » Sex Jun 05, 2009 11:27 am

Então, o problema era só o nome do campo da tabela cidades, alterei e esquici de mudar no código na hora de alimentar o combo...

valeu pela ajuda!
Abs.
Avatar de usuário
Deives
Membro Sênior
 
Mensagens: 76
Data de registro: Qui Ago 28, 2008 1:40 pm

Re: [Script]Video aula - Combo Dinâmico com PHP e Ajax

Mensagempor danilobe » Seg Jul 06, 2009 8:35 am

Amigo tenho uma duvida eu tenho 3 combos o 1 de categorias, 1 de marca e 1 de nome do produto.

O 1º eu seleciono a categoria para preencher a marca e quando eu clico sobre a marca para mostrar os nomes dos produtos o mesmo não esta cendo preenchido gostaria de um esclarecimento ou seja de uma ajuda para resolver o problema. Segue abaixo o código:

<form name="form" action="" method="post">
<select name="categoria" class="input">
<option value="0">Categoria...</option>
<?
$sql="select * from categorias order by cat_nome asc";
$rs = mysql_query($sql);

while($linha = mysql_fetch_array($rs))
{
?>
<option value="<?=$linha["cat_cod"];?>"><?=$linha["cat_nome"];?></option>';
<?
}
?>
</select>
</div>
<div id="div-form1"></div>
<select name="marca" class="input" >
<option value="0" >Marca...</option>
</select>
</div>
<div id="div-form2"></div>
<select name="nome" class="input">
<option value="0" >Nome...</option>
</select>
</div>
</form>

nome.php// página contendo o sql q retorna o nome do produto
<?
ob_start();
include("admin/conexao.php");

$marca = $_POST["marca"];

$sql="select distinct p.prod_nome from categorias c , marcas m, produtos p
where p.cat_cod = c.cat_cod
and
p.marc_cod= m.marc_cod
and
m.marc_cod ='$marca' order by p.prod_nome asc ";
$rs = mysql_query($sql);

if(mysql_num_rows($rs)==0)
{
echo '<option value="0">'.htmlentities('Nome...').'</option>';

}
else{
while($linha=mysql_fetch_array($rs))
{
echo '<option value="0">Nome...</option>';
echo '<option value="'.$linha['prod_cod'].'">'.$linha['prod_nome'].'</option>';
}
}

?>
danilobe
Novo membro
 
Mensagens: 1
Data de registro: Sex Jul 03, 2009 5:07 pm

Re: [Script]Video aula - Combo Dinâmico com PHP e Ajax

Mensagempor davidchc » Seg Jul 06, 2009 10:12 am

Então vc tem 3 tabelas, com essa 3 opções, então vc terá dois arquivos de busca. Uma para buscar a marca e outro para busca o nome.


Código: Selecionar tudo
marca.php
//aqui estou dizendo q estou enviando o id pela variavel categoria, q foi definido jquery
$categoria = $_POST['categoria'];

$sql = "SELECT id_marca, id_categoria, nome_da_marca
           FROM marca
           WHERE id_categoria = '$categoria'" ;
$qr = mysql_query($sql);
if(mysql_num_rows($qr)  == 0){
         echo '<option value="0">Sem Marca</option>';
}
while($linha=mysql_fetch_array($qr){
echo '<option value="0">Nome...</option>';
echo '<option value="'.$linha['id_marca'].'">'.$linha['nome_da_marca'].'</option>';

}


Depois vc vai fazer o mesma coisa no produto. Lembrando q vc terá q usar o codigo do jquery 2 vez, o primeiro pega da categoria, e atribui a marca. O 2 pega a marca e atribui ao produtos. Modifique o nome do select, o arquivo e o variavel q será mandada
Avatar de usuário
davidchc
Veterano
 
Mensagens: 3135
Data de registro: Qua Ago 06, 2008 2:11 pm

Re: [Script]Video aula - Combo Dinâmico com PHP e Ajax

Mensagempor douglasdoman » Ter Set 29, 2009 12:41 pm

e ae mestre david, voltei,
acho q a sua aula me ajudou bastante,
só que ainda ando na duvida, quero fazer igual a isso aqui, da uma olhadinha
http://www.mercadolibre.cl/jm/syi4
http://blog.undermedia.com.ec/code/categorias/index.php <---------------------SI É ASSIM MELHOR
sei que as imagens pode ser uma box, assim que a imagem esquecemos, vamos soh no sistema, se ñ tiver conta, tem q se inscrever ou dancei rsrsrs.
ai vc da uma olhadinha, valeu e obrigado.
douglasdoman
Novo membro
 
Mensagens: 9
Data de registro: Qui Jul 23, 2009 10:18 pm

Re: [Script]Video aula - Combo Dinâmico com PHP e Ajax

Mensagempor davidchc » Sáb Out 03, 2009 7:12 pm

Consegui ver sim, tem como fazer, vc vai fazer a mesma coisa, vou dá um exemplo vc pegando 3 select

Código: Selecionar tudo
  $(document).ready(function(){
         //primeiro vamos esconder o select opcao2 e opcao3
      
       $("select[name=opcao2], select[name=opcao3]").hide();
             
       /**
       *  pegar o valor da opcao1 e enviar para opcao2
       */
      
       //A função será chamada quando a pessoa escolher uma opção
       $("select[name=opcao1]").change(function(){
         //agora iremos aparecer a opcao2
         $("select[name=opcao2]").fadeIn('slow');
         //vai atribuir ao select opcao2 um conteudo html dizendo q está carregando
            $("select[name=opcao2]").html('<option value="0">Carregando...</option>');
           
         /**
         * Agora iremos enviar o valor da opção selecionada para um arquivo, nesse caso
         * opcao2.php
         */
            $.post("opcao2.php", //indica o nome do arrquivo
                  {id : $(this).val() //indica o nome da variavel, q será id e o valor q será enviado
              },
                  function(valor){//aqui é função de retorno, nesse caso retorna o resultado da pesquisa
                     $("select[nameopcao2]").html(valor);
                  }
            )
         })
      
       /**
       * Pega da opcao2 e atribui a opcao3
       */
      
        //A função será chamada quando a pessoa escolher uma opção
       $("select[name=opcao2]").change(function(){
         //agora iremos aparecer a opcao3
         $("select[name=opcao3]").fadeIn('slow');
         //vai atribuir ao select opcao2 um conteudo html dizendo q está carregando
            $("select[name=opcao3]").html('<option value="0">Carregando...</option>');
           
         /**
         * Agora iremos enviar o valor da opção selecionada para um arquivo, nesse caso
         * opcao2.php
         */
            $.post("opcao3.php", //indica o nome do arrquivo
                  {id : $(this).val() //indica o nome da variavel, q será id e o valor q será enviado
              },
                  function(valor){//aqui é função de retorno, nesse caso retorna o resultado da pesquisa
                     $("select[nameopcao3]").html(valor);
                  }
            )
         })
      
      
      })


HTML

Código: Selecionar tudo
OPÇÃO 1
<select name="opcao1">
<option value="1">Valor1</option>
<option value="2">Valor2</option>
<option value="3">Valor3</option>
</select>

OPÇÃO 2
<select name="opcao2">
</select>

OPÇÃO 3
<select name="opcao3">
</select>


Assim vc pode fazer quantos vc quiser, o que vai te restringir se vc tive fazendo com tabelas, o relacionamento qual o valor irá retornar. Vc terá q enviar um valor da opção para fazer a pesquisa, e retornar essa pesquisa em um select. Como falei, isso é ilimitado, vc pode fazer quantos vc quiser
Avatar de usuário
davidchc
Veterano
 
Mensagens: 3135
Data de registro: Qua Ago 06, 2008 2:11 pm

Re: [Script]Video aula - Combo Dinâmico com PHP e Ajax

Mensagempor ueber » Dom Out 04, 2009 9:19 pm

refiz o combo funcionou, mas não passa o valor via post.

<head>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("select[name=marca]").change(function(){
$("select[name=tipoprod]").html('<option value="0">Carregando...</option>');

$.post("aplicaprod.php",
{marca:$("select[name=marca]]")},
function(valor){
$("select[name=aplicaprod]").html(valor);
})
})
})
</head>

<body>
</script>
<form action="" method="post">
<select name="marca" id="marca" >
<option value="0">Escolha uma Marca</option>
<?php
include ("conexao.php");

$sql = "SELECT * FROM controlepiguin ORDER BY tipoprod ASC";
$qr = mysql_query($sql) or die(mysql_error());
while($ln = mysql_fetch_assoc($qr)){
echo '<option value="'.$ln['id'].'">'.$ln['tipoprod'].'</option>';
}
?>
</select>
<select name="aplicaprod" in="aplicaprod">
<option value="0" disabled="disabled">Escolha uma Marca Primeiro</option>

</select>
</form>


<?php

include ("conexao.php");

$marca=$_POST["marca"];

$sql = "SELECT * FROM controlepiguin WHERE tipoprod='$marca' ORDER BY aplicaprod ASC";
$qr = mysql_query($sql) or die(mysql_error());

while($ln = mysql_fetch_assoc($qr)){
echo '<option value="'.$ln['id'].'">'.$ln['aplicaprod'].'</option>';
}

?>
ueber
Novo membro
 
Mensagens: 1
Data de registro: Dom Out 04, 2009 9:05 pm

Próximo

Retornar para Banco de Scripts (PHP)

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes