Ir para conteúdo

POWERED BY:

Arquivado

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

Artistic Web

Combo Dinâmico com php e ajax

Recommended Posts

Galera, já to a 3 dias fuçando, houveram progressos mas não tá funcionando ainda, a idéia é fazer com que sejam atualizados 2 combos a partir de 1, o código que to usando é o seguinte:

 

index.php

<script language="JavaScript">   function Dados(valor) {	  //verifica se o browser tem suporte a ajax	  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;			}		 }	  }	  //se tiver suporte ajax	  if(ajax) {		 //deixa apenas o elemento 1 no option, os outros são excluídos		 document.forms[0].modelos.options.length = 1;		 		 idOpcao  = document.getElementById("opcoes");		 marca = document.getElementById("marcas").value;		 ajax.open("GET", "modelos.php?idmarca=" + marca, true);		 ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");		 		 ajax.onreadystatechange = function() {			//enquanto estiver processando...emite a msg de carregando			if(ajax.readyState == 1) {			   idOpcao.innerHTML = "Carregando...";   			}			//após ser processado - chama função processXML que vai varrer os dados			if(ajax.readyState == 4 ) {			   if(ajax.responseXML) {				  processXML(ajax.responseXML);			   }			   else {				   //caso não seja um arquivo XML emite a mensagem abaixo				   idOpcao.innerHTML = "Primeiro selecione a marca";			   }			}		 }		 //passa o código do estado escolhido		 var params = "marca="+valor;		 ajax.send(params);	  }   }      function processXML(obj){	  //pega a tag cidade	  var dataArray   = obj.getElementsByTagName("modelo");	  	  //total de elementos contidos na tag cidade	  if(dataArray.length > 0) {		 //percorre o arquivo XML paara extrair os dados		 for(var i = 0; i < dataArray.length; i++) {			var item = dataArray[i];			//contéudo dos campos no arquivo XML			var codigo	=  item.getElementsByTagName("codigo")[0].firstChild.nodeValue;			var descricao =  item.getElementsByTagName("descricao")[0].firstChild.nodeValue;						idOpcao.innerHTML = "Selecione uma das opções abaixo";						//cria um novo option dinamicamente  			var novo = document.createElement("option");				//atribui um ID a esse elemento				novo.setAttribute("id", "opcoes");				//atribui um valor				novo.value = codigo;				//atribui um texto				novo.text  = descricao;				//finalmente adiciona o novo elemento				document.forms[0].modelos.options.add(novo);		 }	  }	  else {		//caso o XML volte vazio, printa a mensagem abaixo		idOpcao.innerHTML = "Nenhum resultado encontrado";	  }	     }</script><script language="JavaScript">   function Dados2(valor) {	  //verifica se o browser tem suporte a ajax	  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;			}		 }	  }	  //se tiver suporte ajax	  if(ajax) {		 //deixa apenas o elemento 1 no option, os outros são excluídos		 document.forms[0].marcas.options.length = 1;		 		 idOpcao  = document.getElementById("opcoes2");		 categoria = document.getElementById("categorias").value;		 ajax.open("POST", "marcas.php?idcategoria=" + categoria, true);		 ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");		 		 ajax.onreadystatechange = function() {			//enquanto estiver processando...emite a msg de carregando			if(ajax.readyState == 1) {			   idOpcao.innerHTML = "Carregando...";   			}			//após ser processado - chama função processXML que vai varrer os dados			if(ajax.readyState == 4 ) {			   if(ajax.responseXML) {				  processXML(ajax.responseXML);			   }			   else {				   //caso não seja um arquivo XML emite a mensagem abaixo				   idOpcao.innerHTML = "Primeiro selecione a Categoria";			   }			}		 }		 //passa o código do estado escolhido		 var params = "categoria="+valor;		 ajax.send(params);	  }   }      function processXML(obj){	  //pega a tag cidade	  var dataArray   = obj.getElementsByTagName("marca");	  	  //total de elementos contidos na tag cidade	  if(dataArray.length > 0) {		 //percorre o arquivo XML paara extrair os dados		 for(var i = 0; i < dataArray.length; i++) {			var item = dataArray[i];			//contéudo dos campos no arquivo XML			var codigo	=  item.getElementsByTagName("codigo")[0].firstChild.nodeValue;			var descricao =  item.getElementsByTagName("descricao")[0].firstChild.nodeValue;						idOpcao.innerHTML = "Selecione uma das opções abaixo";						//cria um novo option dinamicamente  			var novo = document.createElement("option");				//atribui um ID a esse elemento				novo.setAttribute("id", "opcoes2");				//atribui um valor				novo.value = codigo;				//atribui um texto				novo.text  = descricao;				//finalmente adiciona o novo elemento				document.forms[0].marcas.options.add(novo);		 }	  }	  else {		//caso o XML volte vazio, printa a mensagem abaixo		idOpcao.innerHTML = "Nenhum resultado encontrado";	  }	     }</script><tr>							  <td align="left"><div align="right" class="style3">								  <label class="style4" id="labeld">Categoria: </label>															</div></td>							  <td colspan="2" align="left" bgcolor="#FFFFFF"><select name="categorias" id="categorias" onChange="Dados2(this.value);">			<option value="0">Selecione Categoria</option>			<? for($i=0; $i<$row; $i++) { ?>			   <option value="<? echo mysql_result($sql, $i, "id_categoria"); ?>">			   <? echo mysql_result($sql, $i, "categoria"); ?></option>			<? } ?>		 </select></td>							</tr>							<tr>							  <td align="left"><div align="right" class="style3">								  <label class="style4" id="labeld">Marca: </label>							  </div></td>							  <td colspan="2" align="left" bgcolor="#FFFFFF"><select name="marcas" id="marcas" onChange="Dados(this.value);">								<option id="opcoes2" value="0">Primeiro selecione a categoria</option>							  </select></td>							</tr>							<tr>							  <td align="left"><div align="right" class="style4">Modelo:</div></td>							  <td colspan="2" align="left" bgcolor="#FFFFFF"><select name="modelos" id="modelos" onchange="document.value=this.text;">								<option id="opcoes" value="0">Primeiro selecione a marca</option>							  </select></td>							</tr>

 

marcas.php

<?/******************************************************************// ARQUIVO ...: Monta o XML das Cidades // BY ........: Júlio César Martini	 // DATA ......: 14/03/2006			  /******************************************************************///CONECTA AO MYSQL					 require_once("../ecrm/include/autenticacao.php");require_once("../ecrm/include/mysql.php");		   Connect($user, $passwd, $host);SelectDB($db);//RECEBE PARÃMETRO					 $categoria = isset($_GET["idcategoria"]) ? $_GET["idcategoria"] : 0;		 //QUERY  $sql = "SELECT marcas.id_marca, marcas.marca, marcas.idcategoria FROM marcas WHERE idcategoria='$categoria'";		  //EXECUTA A QUERY			   $sql = mysql_query($sql);	   $row = mysql_num_rows($sql);	//VERIFICA SE VOLTOU ALGO if($row) {				   //XML   $xml  = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";   $xml .= "<marcas>\n";			         //PERCORRE ARRAY			   for($i=0; $i<$row; $i++) {  	  $codigo	= mysql_result($sql, $i, "id_marca"); 	  $descricao = mysql_result($sql, $i, "marca");	  $categoria = mysql_result($sql, $i, "idcategoria");	  $xml .= "<marca>\n";	 	  $xml .= "<codigo>".$codigo."</codigo>\n";				  	  $xml .= "<descricao>".$descricao."</descricao>\n";	  $xml .= "<categoria>".$idcategoria."</categoria>\n";		  	  $xml .= "</marca>\n";	   }//FECHA FOR				       $xml.= "</marcas>\n";      //CABEÇALHO   Header("Content-type: application/xml; charset=iso-8859-1"); }//FECHA IF (row)											   //PRINTA O RESULTADO  echo $xml;			?>

 

modelos.php

<?/******************************************************************// ARQUIVO ...: Monta o XML das Cidades // BY ........: Júlio César Martini	 // DATA ......: 14/03/2006			  /******************************************************************///CONECTA AO MYSQL					 require_once("../ecrm/include/autenticacao.php");require_once("../ecrm/include/mysql.php");		   Connect($user, $passwd, $host);SelectDB($db);//RECEBE PARÃMETRO					 $marca = isset($_GET["idmarca"]) ? $_GET["idmarca"] : 0;		  //QUERY  $sql = "SELECT modelos.id_modelo, modelos.modelo, modelos.idmarca FROM modelos WHERE idmarca='$marca'";		   //EXECUTA A QUERY			   $sql = mysql_query($sql);	   $row = mysql_num_rows($sql);	//VERIFICA SE VOLTOU ALGO if($row) {				   //XML   $xml  = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";   $xml .= "<modelos>\n";			         //PERCORRE ARRAY			   for($i=0; $i<$row; $i++) {  	  $codigo	= mysql_result($sql, $i, "id_modelo"); 	  $descricao = mysql_result($sql, $i, "modelo");	  $idmarca = mysql_result($sql, $i, "idmarca");	  $xml .= "<modelo>\n";	 	  $xml .= "<codigo>".$codigo."</codigo>\n";				  	  $xml .= "<descricao>".$descricao."</descricao>\n";	  $xml .= "<marca>".$idmarca."</marca>\n"; 	  $xml .= "<categoria>".$idcategoria."</categoria>\n";			  $xml .= "</modelo>\n";	   }//FECHA FOR				       $xml.= "</modelos>\n";      //CABEÇALHO   Header("Content-type: application/xml; charset=iso-8859-1"); }//FECHA IF (row)											   //PRINTA O RESULTADO  echo $xml;			?>

 

o que acontece é que as marcas carregam, mas quando seleciono a mesma, os veículos da marca não são carregados.

 

Alguém poderia me ajudar?

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.