Como deixar dinamico o Combo

Bem pessoal eu tenho esse codigo ak,…

[code]

Cadastrar Bairro
	<td>SELECIONE A CIDADE : <?php
		include "connect.php";
		$sql = "SELECT cadastro,cidade FROM cad_cidade;";
		print "<td><select name='cidade'>";

		$qry = mysql_query($sql);

		while ($v = mysql_fetch_array($qry)){

			print "<option value=$v[cadastro]>$v[cidade]</option>";
		}
		if ($_GET['funcao']=='insert'){
		$cadastro = $_POST['cadastro'];
		$bairro = $_POST['bairro'];



		}

		?>
		</select>
		</td>
SELECIONE O ESTADO :
BAIRRO :
[/code]

QUeria saber como deixo o combo de estado dinamico…ao selecionar o estado as cidades apenas desse estado aparece no menu…

flws

Você terá que efetuar outra consulta mas desta vez passará com parâmetro o estado que você escolheu no primeiro combo.

Então sua select tera uma clausula “WHERE” , ou seja:

select CIDADES where ESTADO = <estado escolhido no combo>

Simples na hora de tu montar o combo de cidade passe o código do estado que você selecionou no combo de estado.

Alguma coisa do tipo.


$sql = "SELECT cadastro, cidade FROM cad_cidade Where cd_estado = $VarivelCodigoQueVeioDoComboDeEstado;";  

Tua tabela de estado se relaciona com esta de cidade né?

Flw.

Porque na parte selecione um estado eu n implementei nenhum codigo ainda…pq quando ele selecionar SP no combo as cidades so tem q ser de SP…como vou dar o refresh sem usar o botaum?

Cara não tem como fugir do refresh se não fores usar ajax.

Sem usar ajax tu pegaria o evento “onChange” do teu combo de estado. Faria fazer uma nova consulta no banco ou mais conhecido como um submit para que os dados sejam carregados novamente com os valores a partir do teu combo de estado.

Se quiseres usar ajax não sera preciso o refresh é bem mais legal e profissional, em contra partida precisa mais estudo. Hehe.

Se quiseres usar ajax da uma pesquisada em JSON.

Flw.

Usando JS…como ficaria ?

um exemplo por favor…

Cara em php não tenho nenhum exemplo.

Só utilizei em Java.

Mas tem alguns ai se quiseres dar uma olhada.

http://forum.ievolutionweb.com/index.php?showtopic=6871

http://www.guj.com.br/posts/list/62733.java

http://www.prototypejs.org/api

http://www.json.org/

Exemplo em java

http://imasters.uol.com.br/artigo/4424/asp/carregando_uma_combo_a_partir_da_outra_utilizando_ajax/

Abraço

vou dar uma olhada ak…MAs pelo que q me parece o onChange vai no comando HTml da select…pra ele refazer a busca na 2 select neh?

Isso mesmo.

:slight_smile:

Use o evento onchange, crie uma função e uma ação filtrar mandando para a mesma página passando o código e montando a segunda combo

Combo 1 chamando a função Javascript

<select name='combo1' onChange="filtrar();" >

Javascript

function filtrar(){
	document.forms[0].hidAction.value="filtrar";
	document.forms[0].action="<? echo $PHP_SELF ?>";
	document.forms[0].submit();
}

Montando a segunda Combo no PHP

<?php  
if($hidAction== "filtrar"){
 
             include "connect.php";  
             $sql = "SELECT campo1,campo2 FROM tabela where campo = $campo;";  //campo do form da combo 1
             print "<td><select name='combo2' >";  
   
             $qry = mysql_query($sql);  
   
             while ($v = mysql_fetch_array($qry)){  
   
                 print "<option value=$v[campo1]>$v[campo2]</option>";  
             }  
}

não funcionou ainda…

<html>
<head>
	<title>Cadastrar Bairro</title>
	  <script>
	   function filtrar(){
       document.forms[0].hidAction.value="filtrar";
       document.forms[0].action="<?php echo $PHP_SELF ?>";
       document.forms[0].submit();
    }
    </script>
</head>
<body>

<form action='inserirBairro.php' method='POST'>

<table border='0' align='center'>
	<tr>
<td>SELECIONE O  ESTADO :
	  <select name='combo1' onChange="filtrar();" >
	<?php

		include "connect.php";
		$sql = "SELECT estado.cod_uf,estado.nome_uf FROM ESTADO;";
		$qry = mysql_query($sql,$connect);

			while ($ve = mysql_fetch_array($qry)){
				print "<option value=$ve[cod_uf]>$ve[nome_uf]</option>";
			}
		?>

</select></td>

		<td>SELECIONE A CIDADE :
			<?php
			include "connect.php";
		if($hidAction== "filtrar"){
	 $sql = "SELECT cad_cidade.cod_uf,cad_cidade.cidade,cad_cidade.cadastro,estado.cod_uf FROM cad_cidade,estado
	 		 where campo = $_POST[combo1];";
   print "<td><select name='combo2' >";
        $qry = mysql_query($sql);

       while ($v = mysql_fetch_array($qry)){

               print "<option value=$v[cadastro]>$v[cidade]</option>";
            }
			}
  ?>
			</select>
			</td>

</tr>
			<tr>
				<td>BAIRRO : <input type='text' name='bairro'></td>
			</tr>
			<tr>
			<td><input type='Submit' value='Cadastrar Bairro'></td>
</table>
</body>
</html>

ops… no campo eu ja rokei por
cad_cidade.cod_uf = $_POST[combo1]

Não precisa repetir toda hora esse include do connect.php deixa somente no inicio da página, de um print na query e veja como esta sendo montada e jogue no seu banco dados e rode e veja o que a query retorna.
E sempre use aspas nos values dos campos para evitar problemas.

Bem com esse codigo agora…Se eu escolho o estado Clico no Submit ele retorna as cidades mais não deixa selecionado certo…

<html>
<head>
	<title>Cadastrar Bairro</title>

</head>
<body>

<form action='frmCadastrarBairro.php?var=combo1' method='POST'>

<table border='0' align='center'>
	<tr>
<td>SELECIONE O  ESTADO :
	 <td> <select name='combo1' >
		<?php

		include "connect.php";
		$sql = "SELECT estado.cod_uf,estado.nome_uf FROM ESTADO;";
		$qry = mysql_query($sql,$connect);

			while ($ve = mysql_fetch_array($qry)){
				print "<option value=$ve[cod_uf]>$ve[nome_uf]</option>";
			}


		?>

</select></td>

		<td>SELECIONE A CIDADE :</td>
			<?php
  include "connect.php";
	if (isset($_GET['var'])){
		$var = $_GET['var'];
	}
  if (isset($_POST['combo1'])){

  $sql="SELECT cad_cidade.cod_uf,cad_cidade.cidade,cad_cidade.cadastro,estado.cod_uf
  		FROM cad_cidade,estado
	 	WHERE cad_cidade.cod_uf = $_POST[combo1] and cad_cidade.cod_uf=estado.cod_uf;";
   print "<td><select name='combo2' >";
        $qry = mysql_query($sql);

       while ($v = mysql_fetch_array($qry)){

               print "<option value=$v[cadastro] selected>$v[cidade]</option>";
            }
}
  ?>
			</select>
			</td>

</tr>
			<tr>
				<td>BAIRRO : <input type='text' name='bairro'></td>
			</tr>
			<tr>
			<td><input type='Submit' value='Cadastrar Bairro'></td>
</table>
</body>
</html>

Agora precisa colocar um if na primeira combo dentro do <option value

<option value=$ve[cod_uf]  <? if( $_POST['combo1'] == $ve[cod_uf]  ) echo " selected" ?>>

Retire o selected da segunda combo se não vai jogar sempre na última cidade.

Valeu kra…

Php Super dinamico msm…hahah…eu eskço que posso colocar tag php em qualquer lugar…]
:frowning:

abraço!

funfo agora!