Ir para conteúdo

POWERED BY:

Arquivado

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

valtinho

Atualizar automaticamente um list

Recommended Posts

Boa tarde, preciso de uma ajuda.

Seguinte, tenho um form com list/Menu onde devo escolher a marca e automaticamente atualizar um outro list/Menu com os modelos.

 

Mas o quando tento realizar a operação está me dando o seguinte erro:

 

document.forms.0.listaModelos é nulo ou não é um objeto.

 

Vejam os scripts:

 

cadastroVeiculos.php

 

<!-- Chama cidades --><script src="carros.js"></script><td width="7%"> </td>    <td width="18%">Marca</td>    <td width="75%"><select name="listaMarcas" onChange="Dados(this.value);" id="listaMarcas">      <option value="0">Selecione a marca</option>      <? for($i=0; $i<$row; $i++) { ?>      <option value="<? echo mysql_result($sql, $i, "id_marca"); ?>"> <? echo mysql_result($sql, $i, "marca"); ?></option>      <? } ?>    </select>       </td>  </tr>  <tr>    <td> </td>    <td>Modelo</td>    <td><select name="listaModelos" id="listaModelos">      <option value="0">Selecione o modelo</option>        </select></td>

carros.js

 

// Script para a realização da Busca Instantanêa de cidades com Ajax// Função para iniciar o Ajax no browser do cliente   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].listaModelos.options.length = 1;	     		 idOpcao  = document.getElementById("opcoes");		 	     ajax.open("POST", "modelos.php", 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 = "Aguarde, 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 = "Selecione uma Marca";			   }            }         }		 //passa o código do estado escolhido	     var params = "id_modelo="+valor;         ajax.send(params);      }   }      function processXML(obj){      //pega a tag cidade      var dataArray   = obj.getElementsByTagName("cidade");      	  //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 um Modelo";						//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].listaModelos.options.add(novo);		 }	  }	  else {	    //caso o XML volte vazio, printa a mensagem abaixo		idOpcao.innerHTML = "Estou Vazio nesse momento";	  }	     }

e modelos.php

 

<?/*----------------------------------------------------------------------Arquivo .............: Monta XML dos modelos                                   Desenvolvido por ....: Valter Ferreira Martins                           Criado em  ..........: Abril/2007                                     ----------------------------------------------------------------------*///Faz conexão com o Banco                   require_once("conexao.php");           //Recebe parâmetro                    $id_modelo = $_POST["id_modelo"];           //realiza a consulta  $sql = "SELECT * FROM tbl_modelos where id_marca  ".$id_modelo." ";          //Executa a consulta              $sql = mysql_query($sql);       $row = mysql_num_rows($sql);    //Verifica se a consulta possui resultadoif($row) {                   //xml   $xml  = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";   $xml .= "<modelo>\n";                     //Percorre o Array             for($i=0; $i<$row; $i++) {        $codigo    = mysql_result($sql, $i, "id_modelo"); 	  $descricao = mysql_result($sql, $i, "nome");      $xml .= "<cidade>\n";           $xml .= "<codigo>".$codigo."</codigo>\n";                        $xml .= "<descricao>".$descricao."</descricao>\n";               $xml .= "</cidade>\n";       }//Fecha for                     $xml.= "</modelo>\n";      //cabeçalho   Header("Content-type: application/xml; charset=iso-8859-1"); }//fecha if (row)                                               //Printa o resultadoecho $xml;            ?>

Alguém pode me dar um luz? tenho um script similar funcionando com Estados e Cidades, mas esse tá dando esse erro.

valeu e fiquem na paz.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não estava fazendo a comparação correta, vejam como estava:

 

//realiza a consulta$sql = "SELECT * FROM tbl_modelos where id_marca ".$id_modelo." ";

e vejam como deveria ser:

 

$sql = "SELECT * FROM tbl_modelos where id_marca = ".$id_modelo." ";

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.