Ir para conteúdo
Fórum Script Brasil

pcjardim

Membros
  • Total de itens

    29
  • Registro em

  • Última visita

Tudo que pcjardim postou

  1. Estou estudando através de exemplos na intertne, estou usando exemplos de 2 combobox, aqueles que você seleciona o estado no 1º dai ele preenche o 2º com as cidades correspondentes, para dai tentar chegar onde quero. Quero que o primeiro fique como esta, porém não existiria o 2º os dados seriam preenchidos em tabela ou textfield, de preferência em textfield. Tenhos os seguintes arquivos: index.php <? /* ---------------------------------------------------------------------- Arquivo .............: AJAX + PHP Desenvolvido por ....: Júlio César Martini Matéria .............: Artigo 127 - www.imasters.com.br Criado em ..........: 14/03/2006 ---------------------------------------------------------------------- */ //CONECTA AO MYSQL require_once("conecta.php"); //PEGA OS ESTADOS $sql = " SELECT a.id_estado, a.dsc_estado, a.sigl_estado FROM estados a ORDER BY a.dsc_estado"; //EXECUTA A QUERY $sql = mysql_query($sql); $row = mysql_num_rows($sql); ?> &lt;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].listCidades.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() { //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 o estado--"; } } } //passa o código do estado escolhido var params = "estado="+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 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].listCidades.options.add(novo); } } else { //caso o XML volte vazio, printa a mensagem abaixo idOpcao.innerHTML = "--Primeiro selecione o estado--"; } } </script> <html> <head> <title>127º artigo PHP</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body bgcolor="#FFFFFF"> <h1>127º artigo: AJAX + PHP</h1> Carregando cidades sem dar refresh na página. <br><br> <form name="frmAjax"> Estado: <select name="listEstados" onChange="Dados(this.value);"> <option value="0">--Selecione o estado >></option> <? for($i=0; $i<$row; $i++) { ?> <option value="<? echo mysql_result($sql, $i, "id_estado"); ?>"> <? echo mysql_result($sql, $i, "dsc_estado"); ?></option> <? } ?> </select> <br><br> Cidade: <select name="listCidades" onChange="alert(this.value);"> <option id="opcoes" value="0">--Primeiro selecione o estado--</option> </select> </form> <? $conexao = mysql_pconnect("localhost","root","paulo") or die($msg[0]); mysql_select_db("imasters",$conexao) or die($msg[1]); // Colocando o Início da tabela ?> <table border="1"><tr> <td><div align="center"><b>ID</b></div></td> <td><div align="center"><b>Nome</b></div></td> <td><div align="center"><b>Sigla</b></div></td> </tr> <? // Fazendo uma consulta SQL e retornando os resultados em uma tabela HTML $query = "SELECT id_estado,dsc_estado,sigl_estado FROM estados ORDER BY id_estado"; $resultado = mysql_query($query,$conexao); while ($linha = mysql_fetch_array($resultado)) { ?> <tr> <td><? echo $linha['id_estado']; ?></td> <td><? echo $linha['dsc_estado']; ?></td> <td><? echo $linha['sigl_estado']; ?></td> </tr> <? } ?> </table> </body> </html>[/codebox] conecta.php [codebox]<? /* ---------------------------------------------------------------------- Arquivo .............: AJAX + PHP Desenvolvido por ....: Júlio César Martini Matéria .............: Artigo 127 - www.imasters.com.br Criado em ..........: 14/03/2006 ---------------------------------------------------------------------- */ //CONECTA AO MYSQL $conn = mysql_connect("localhost", "root", "paulo") or die("Erro na conexão com a base de dados"); //SELECIONA A BASE DE DADOS $db = mysql_select_db("imasters", $conn) or die("Erro na seleção da base de dados"); ?> cidades.php <? /****************************************************************** // ARQUIVO ...: Monta o XML das Cidades // BY ........: Júlio César Martini // DATA ......: 14/03/2006 /******************************************************************/ //CONECTA AO MYSQL require_once("conecta.php"); //RECEBE PARÃMETRO $pEstado = $_POST["estado"]; //QUERY $sql = " SELECT a.id_cidade, a.dsc_cidade FROM cidades a WHERE a.cod_estado = ".$pEstado." ORDER BY a.dsc_cidade"; //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 .= "<cidades>\n"; //PERCORRE ARRAY for($i=0; $i<$row; $i++) { $codigo = mysql_result($sql, $i, "id_cidade"); $descricao = mysql_result($sql, $i, "dsc_cidade"); $xml .= "<cidade>\n"; $xml .= "<codigo>".$codigo."</codigo>\n"; $xml .= "<descricao>".$descricao."</descricao>\n"; $xml .= "</cidade>\n"; }//FECHA FOR $xml.= "</cidades>\n"; //CABEÇALHO Header("Content-type: application/xml; charset=iso-8859-1"); }//FECHA IF (row) //PRINTA O RESULTADO echo $xml; ?> [/codebox]
  2. Não apareceu erro, simplesmente o ComboBox dos estados como esta digitado apareceu normalmente, porém o das cidades que deveria ler o banco não apareceu nada, e procurei para ver se era algum erro no código para ler o banco, porém não consegui encontrar nada...
  3. Olá! estou estudando AJAX e estou encontrando alguns problemas... tenho os seguintes arquivos: 01.php <!-- Código Fonte do Arquivo--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Cidades Dinâmicas</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> &lt;script type="text/javascript" src="01.js"></script> </head> <body style="margin:20px;"> <h2>Selecione uma Cidade</h2> <form> <select name="estados" id="estados" onChange="ajaxComboBox('01_cidades.php','cidades');"> <option selected value="nada">-- Estados --</option> <option value="AC">Acre</option> <option value="AL">Alagoas</option> <option value="AP">Amapa</option> <option value="AM">Amazonia</option> <option value="BH">Bahia</option> <option value="CE">Ceará</option> <option value="DF">Distrito Federal</option> <option value="ES">Espírito Santo</option> <option value="GO">Goiás</option> <option value="MA">Maranhão</option> <option value="muito">Mato Grosso</option> <option value="MS">Mato Grosso do Sul</option> <option value="MG">Minas Gerais</option> <option value="PA">Pará</option> <option value="PB">Paraíba</option> <option value="PR">Paraná</option> <option value="PE">Pernambuco</option> <option value="PI">Piauí</option> <option value="RJ">Rio de Janeiro</option> <option value="RN">Rio Grande do Norte</option> <option value="RS">Rio Grande do Sul</option> <option value="RO">Rondônia</option> <option value="RR">Roraima</option> <option value="SC">Santa Catarina</option> <option value="SP">São Paulo</option> <option value="SE">Sergipe</option> <option value="TO">Tocantins</option> </select> <select name="cidades" id="cidades"> <option>-- Escolha um Estado --</option> </select> </form> </body> <html> mais o arquivo: 01_cidades.php <?php header("Content-type: text/xml; charset=ISO-8859-1"); print '<?xml version="1.0" encoding="ISO-8859-1"?>'; ?> <cidades> <?php $link = mysql_pconnect("localhost", "root", "") or die("Não pude conectar: " . mysql_error()); mysql_select_db('ajax', $link) or die ('Não foi possível usar db: ' . mysql_error()) $result = mysql_query("SELECT cidades.id,cidades.nome FROM estados,cidades WHERE estados.sigla = '{$_GET['uf']}' AND estados.id = cidades.id_estado ORDER BY cidades.nome" or die("Query invalida: " . mysql_error()); while ($row = mysql_fetch_array($result, MYSQL_NUM)) { printf("<nome id=\"%d\">%s</nome>\n", $row[0],$row[1]); } mysql_close($link); ?> </cidades> e por último: 01.js // JavaScript Document var HttpReq = null; var dest_combo = null; function ajaxComboBox(url, comboBox) { dest_combo = comboBox; var indice = document.getElementById('estados').selectedIndex; var sigla = document.getElementById('estados').options[indice].getAttribute('value'); url = url + '?uf=' + sigla; if (document.getElementById) { //Verifica se o Browser suporta DHTML. if (window.XMLHttpRequest) { HttpReq = new XMLHttpRequest(); HttpReq.onreadystatechange = XMLHttpRequestChange; HttpReq.open("GET", url, true); HttpReq.send(null); } else if (window.ActiveXObject) { HttpReq = new ActiveXObject("Microsoft.XMLHTTP"); if (HttpReq) { HttpReq.onreadystatechange = XMLHttpRequestChange; HttpReq.open("GET", url, true); HttpReq.send(); } } } } function XMLHttpRequestChange() { if (HttpReq.readyState == 4 && HttpReq.status == 200) { var result = HttpReq.responseXML; var cidades = result.getElementsByTagName("nome"); document.getElementById('dest_combo').innerHTML = ""; for (var i = 0; i < cidades.length; i++) { new_opcao = create_opcao(cidades[i]); document.getElementById('dest_combo').appendChild(new_opcao); } } } function create_opcao(cidade) { var new_opcao = document.createElement("option"); var texto = document.createTextNode(cidade.childNodes[0].data); new_opcao.setAttribute("value",cidade.getAttribute("id")); new_opcao.appendChild(texto); //Adiciona o texto a OPTION. return new_opcao; // Retorna a nova OPTION. } peguei esse exemplo na página www.hospedia.com.br estou seguindo os passos, única coisa que mudei foi ao invés de usar o nome do banco "artigos" criei um "ajax" não mudei mais nada e não está dando certo, ou seja, o ComboBox das cidades não esta carregando... Alguém podeira me ajudar... o banco está criado assim: uma tabela "estados" e "cidades", estados: colunas "id", "sigla" e "nome", já a table cidades as colunas "id", id_estados" e "nome"... agradeço qualquer ajuda...
×
×
  • Criar Novo...