Ir para conteúdo

Arquivado

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

diego-md

após selecionar cidades não carrega bairros

Recommended Posts

Bom dia a todos, espero que isso interesse a vocês.

Tenho este código abaixo:

<?php

session_start();

$email = $_SESSION['email'];
$senha = $_SESSION['senha'];
$nome = $_SESSION['nome'];

if ($email == "")
  header("Location: index.php");

?>
<?php
			
include("conectar.php");	

$sql = "		  
		SELECT codcidade, nomecidade 
		FROM c_cidade		  
		ORDER BY nomecidade"; 

			  
$sql = mysql_query($sql);	   

$row = mysql_num_rows($sql); 

session_start();

$email = $_SESSION['email'];



?>
<html>
	<head>
	  <title>Carona Responsável - >>Oferecenco Carona - parte 2<<</title>
	  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
	<script>
	function Dados(valor) {
		try {
		   ajax = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch(e) {
		   try {
			  ajax = new ActiveXObject("Msxml2.XMLHTTP");
		   }
		   catch(ex) {
			  try {
				 ajax = new XMLHttpRequest();
			  }
			  catch(exc) {
				 alert("Esse browser não tem recursos para uso do Ajax");
				 ajax = null;
			  }
		   }
		}
		if(ajax) {
		   document.forms[0].bairro.options.length = 1;
		   
		   idOpcao  = document.getElementById("opcoes");
		   
		 ajax.open("POST", "cidades.php", true);
		   ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		   
		   ajax.onreadystatechange = function() {
			  if(ajax.readyState == 1) {
				 idOpcao.innerHTML = "Carregando...!";   
			  }
			  if(ajax.readyState == 4 ) {
				 if(ajax.responseXML) {
					processXML(ajax.responseXML);
				 }
				 else {
					 idOpcao.innerHTML = "--Primeiro selecione o estado--";
				 }
			  }
		   }
		   var params = "cidade="+valor;
		   ajax.send(params);
		}
	 }
	 
	 function processXML(obj){
		var dataArray   = obj.getElementsByTagName("cidade");
		
		if(dataArray.length > 0) {
		   for(var i = 0; i < dataArray.length; i++) {
			  var item = dataArray[i];
			  var codigo	=  item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
			  var descricao =  item.getElementsByTagName("descricao")[0].firstChild.nodeValue;
			  
			  idOpcao.innerHTML = "--Selecione uma das opções abaixo--";
  
			  var novo = document.createElement("option");
				  novo.setAttribute("id", "opcoes");
				  novo.value = codigo;
				  novo.text  = descricao;
				  document.forms[0].bairro.options.add(novo);
		   }
		}
		else {
		  idOpcao.innerHTML = "--Primeiro selecione o estado--";
		}	  
	 }
	 
   function Dados1(valor) {
	  try {
		 ajax = new ActiveXObject("Microsoft.XMLHTTP");
	  } 
	  catch(e) {
		 try {
			ajax = new ActiveXObject("Msxml2.XMLHTTP");
		 }
		 catch(ex) {
			try {
			   ajax = new XMLHttpRequest();
			}
			catch(exc) {
			   alert("Esse browser não tem recursos para uso do Ajax");
			   ajax = null;
			}
		 }
	  }
	  if(ajax) {
		 document.forms[0].bairro1.options.length = 1;
		 
		 idOpcao  = document.getElementById("opcoes1");
		 
	   ajax.open("POST", "cidades.php", true);
		 ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		 
		 ajax.onreadystatechange = function() {
			if(ajax.readyState == 1) {
			   idOpcao.innerHTML = "Carregando...!";   
			}
			   if(ajax.readyState == 4 ) {
			   if(ajax.responseXML1) {
				  processXML1(ajax.responseXML1);
			   }
			   else {
				   idOpcao.innerHTML = "--Primeiro selecione o estado--";
			   }
			}
		 }
		 var params = "cidade1="+valor;
		 ajax.send(params);
	  }
   }
   
   function processXML1(obj){
	  var dataArray   = obj.getElementsByTagName("cidade1");
	  
	  if(dataArray.length > 0) {
		 for(var i = 0; i < dataArray.length; i++) {
			var item = dataArray[i];
			var codigo	=  item.getElementsByTagName("codigo")[0].firstChild.nodeValue;
			var descricao =  item.getElementsByTagName("descricao")[0].firstChild.nodeValue;
			
			idOpcao.innerHTML = "--Selecione uma das opções abaixo--";
			
			var novo = document.createElement("option");
				novo.setAttribute("id", "opcoes1");
				novo.value = codigo;
				novo.text  = descricao;
				document.forms[0].bairro1.options.add(novo);
		 }
	  }
	  else {
		idOpcao.innerHTML = "--Primeiro selecione dasd--";
	  }	  
   }
	
	</script>
	</head>
	<body>
	<div align="right">
	  <?php
		echo '<b>Usuário logado:</b> <a href="consulta_usuario.php?email='.$email.'">'.$email.'</a> | <b><a href="logoff.php">Sair</a></b>';
	  ?>
	  <form name="cadastro" id="cadastro">
	  <br><br><br><br><br><br>
	   <table align="center">
		<tr>
		  <td colspan="2">
			<h1 align="center"><font face="tahoma" color="#3300FF" size="15px">Sua Rota:</font></h1><br>
		  </td>
		</tr>
		<tr>
		  <td colspan="2">
			<h1 align="center"><font face="tahoma" color="#3300FF" size="15px">Onde Estou:</font></h1><br>
		  </td>
		</tr>
		<tr>
		  <td align="right">Cidade:</td> 
		  <td>  
			<select name="cidade" onChange="Dados(this.value);">
			  <option value="0">--Selecione a cidade--</option>
					<?php 
				  for($i=0; $i<$row; $i++)
				  { 
					echo "<option value='".mysql_result($sql, $i, "codcidade")."'>";
						echo mysql_result($sql, $i, "nomecidade"). "</option>";
					  } 
				?>
			</select><br> 
		  </td>
		</tr>
		<tr>
		  <td align="right">Bairro:</td> 
		  <td>  
			<select name="bairro" onChange="alert(this.value);">
			  <option id="opcoes" value="0">--Primeiro selecione a cidade--</option>
			</select><br> 
		  </td>
		</tr>  
		 <tr>
		  <td colspan="2">
			<h1 align="center"><font face="tahoma" color="#3300FF" size="15px">Para Onde Vou:</font></h1><br>
		  </td>
		</tr>
		<tr>
		  <td align="right">Cidade:</td> 
		  <td>  
			<select name="cidade1" onChange="Dados1(this.value);">
			  <option value="0">--Selecione a cidade--</option>
					<?php 
				  for($i=0; $i<$row; $i++)
				  { 
					echo "<option value='".mysql_result($sql, $i, "codcidade")."'>";
						echo mysql_result($sql, $i, "nomecidade"). "</option>";
					  } 
				?>
			</select><br> 
		  </td>
		</tr>
		<tr>
		  <td align="right">Bairro:</td> 
		  <td>  
			<select name="bairro1" onChange="alert(this.value);">
			  <option id="opcoes1" value="0">--Primeiro selecione a cidade--</option>
			</select><br> 
		  </td>
		</tr>
		<tr>  
		  <td colspan="2" align="center"><br><br>
			<input type="button" name="continuar" value="Continuar" onclick="next();">
		  </td>
		</tr>  
	   </table>
	  </form>
	 </div> 
	</body>
</html>

Só que preciso fazer com que o segundo select da cidade funcione mas tranquei aqui...

<?php

include("conectar.php");		   

$pCidade = $_POST["cidade"];

$pCidade1 = $_POST["cidade1"];		   

$sql = " SELECT  codbairro, nomebairro FROM  c_bairro WHERE codcidade = ".$pCidade."  ORDER BY nomebairro";  

$sql1 = " SELECT  codbairro, nomebairro FROM  c_bairro WHERE codcidade = ".$pCidade1."  ORDER BY nomebairro";

$sql = mysql_query($sql);	   

$sql1 = mysql_query($sql1);

$row = mysql_num_rows($sql);	

if($row) {				
   $xml  = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
   $xml .= "<cidades>\n";			   
   
   for($i=0; $i<$row; $i++) {  
	  $codigo	= mysql_result($sql, $i, "codbairro"); 
		$descricao = mysql_result($sql, $i, "nomebairro");
	  $xml .= "<cidade>\n";	 
	  $xml .= "<codigo>".$codigo."</codigo>\n";				  
	  $xml .= "<descricao>".$descricao."</descricao>\n";		 
	  $xml .= "</cidade>\n";	
   }				 
   
   $xml.= "</cidades>\n";
   
   Header("Content-type: application/xml; charset=iso-8859-1"); 
}

echo $xml;  
?>

Alguem pode me dar uma luz??

deverie fazer mais um xml???

Desde já agradeço...

Compartilhar este post


Link para o post
Compartilhar em outros sites

meu problema é o seguinte...

se vizualizarem, tenho 4 selects com ajax funciona assim, selecionando o cidade, o bairro carrega automaticamente.

Pois bem, tenho os dois select cidades e um está funcional, o outro não acha nada na sua busca ao banco...

e após necessito que ele armazene as variáveis e salve após o usuário concluir...

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

hmm..

 

acho que ajax seria mais para o forum de Javascript/DHTML

http://forum.imasters.com.br/index.php?showforum=6

 

mas sugiro você utilizar algum framework para facilitar o processo .. por exemplo PrototypeJS

 

ficaria assim dai

 

no head:

 

</script>
<script src="prototype.js" type="text/javascript"></script>
<script type="text/JavaScript">

function MM_jumpMenu(targ,selObj,restore){ //v3.0
	var valor = $F('cidade'); //menu que seleciona cidade
	var valor2 = $F('cidade2'); //menu que seleciona cidade


new Ajax.Request('ajax_response_cidade_ref.php?referencia='+valor,
			   {   
				 onSuccess: function(transport) 
					 {	  
						   $('divbairro').innerHTML = transport.responseText; //div que esta o menu do bairro
					  } 
			 }); 
new Ajax.Request('ajax_response_cidade2_ref.php?referencia='+valor2,
			   {   
				 onSuccess: function(transport) 
					 {	  
						   $('divbairro2').innerHTML = transport.responseText; //div que esta o menu do bairro
					  } 
			 }); 
}
</script>

no body:

 

nos selects das cidades adicione

 

onchange="MM_jumpMenu()

dentro das divbairro coloque

 

<select name="bairro" disabled></select>

e crie os arquivos de resposta...

 

otros arquivos:

 

ajax_response_cidade_ref.php e ajax_response_cidade2_ref.php com o resultado que deseja retornar .. por exemplo um select com os dados dos bairros..

 

<select name="bairro">

<?php 
require_once('Connections/conn.php'); 
// só executa se tiver valor no GET de referencia
if($_GET['referencia'] != '')
{
	mysql_select_db($database_conn);
	$query_ref = "SELECT  codbairro, nomebairro FROM  c_bairro WHERE codcidade = ".$_GET['referencia']."  ORDER BY nomebairro";
	$ref = mysql_query($query_ref, $conn) or die(mysql_error());

?>

	<?php while($a = mysql_fetch_assoc($ref)) { ?>
		<option value="<?php echo($a['nomebairro']); ?>" selected><?php echo utf8_encode(($a['nomebairro'])); ?>	</option>
	<?php 
	} // fim do while
} // fim do if tem valor no GET
?>
</select>

 

quanto a quardar os dados você pode fazer como ja começou atravez de sessions.. de uma olhada no segundo link..

 

 

valww espero ter ajudado

 

Links:

 

http://www.prototypejs.org/

 

http://www.revistaphp.com.br/artigo.php?id=8

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.