MalCriada 1 Denunciar post Postado Março 17, 2011 Boa noite pessoal, Estou com um problema. Tenho um sistema, na página inicial o visitante seleciona a cidade e os bairros são carregados de acordo com a cidade escolhida, porém no firefox não está funcionando. O problema é que no Firefox quando se seleciona uma cidade com caracteres especiais os bairros desta cidade não são carregados. Será que alguém pode me ajudar? Ajax que carrega os Bairros: <script language="javascript"> function pesquisar_dados(cidade) { ajax.open("GET", "city.php?cidade=" + cidade, true); ajax.onreadystatechange = handleHttpResponse; ajax.send(null); } function handleHttpResponse() { campo_select = document.forms[0].bairro; if (ajax.readyState == 4) { campo_select.options.length = 0; results = ajax.responseText.split(","); for( i = 0; i < results.length; i++ ) { string = results[i].split( "|" ); if ( string[0] != "" ){ campo_select.options[i] = new Option( string[0], string[0] ); } else { campo_select.options[i] = new Option( "Todos os Bairros" , "" ); } } } } function getHTTPObject() { if(window.XMLHttpRequest) { return new XMLHttpRequest(); } else if(window.ActiveXObject) { var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"]; for(var i = 0; i < prefixes.length; i++) { try { return new ActiveXObject(prefixes[i] + ".XMLHTTP"); } catch (e) {} } } } var ajax = getHTTPObject(); </script> conteúdo da página city.php <? include("admin/conecta.php"); function limparString($str, $enc = "UTF-8"){ $acentos = array( 'A' => '/À|Á|Â|Ã|Ä|Å/', 'a' => '/à|á|â|ã|ä|å/', 'C' => '/Ç/', 'c' => '/ç/', 'E' => '/È|É|Ê|Ë/', 'e' => '/è|é|ê|ë/', 'I' => '/Ì|Í|Î|Ï/', 'i' => '/ì|í|î|ï/', 'N' => '/Ñ/', 'n' => '/ñ/', 'O' => '/Ò|Ó|Ô|Õ|Ö/', 'o' => '/ò|ó|ô|õ|ö/', 'U' => '/Ù|Ú|Û|Ü/', 'u' => '/ù|ú|û|ü/', 'Y' => '/Ý/', 'y' => '/ý|ÿ/', 'a.' => '/ª/', 'o.' => '/º/'); return preg_replace($acentos, array_keys($acentos), htmlentities($str,ENT_NOQUOTES, $enc)); } $consulta = mysql_query("SELECT * FROM bairro WHERE cidade = '$_GET[cidade]' and bairro != '' ORDER BY bairro ASC");// selecionamos todas as subcategorias que pertencem à categoria selecionada while( $row = mysql_fetch_assoc($consulta)) { $bairro = utf8_encode($row['bairro']); if($bairro != ""){ echo limparString($bairro) . "|" . limparString($bairro) . ","; } } ?> Parte do campo Select onde carrega Cidades e os Bairros na página inicial. <tr> <td colspan="2"><span class="preto10">Cidade</span><br> <select name="cidade" size="1" class="caixa10" style="width:210px;" onFocus="this.className='onfocus'" onBlur="this.className='onblur'" onChange="pesquisar_dados( this.value )"> <option selected value="">Todas</option> <? $consulta = mysql_query("SELECT * FROM cidade ORDER BY cidade ASC"); while( $row = mysql_fetch_assoc($consulta)){?> <option value="<? echo $row['cidade'];?>"><? echo $row['cidade'];?></option> <? }?> </select> </td> </tr> <tr> <td colspan="2"><span class="preto10">Bairro</span><br> <select name="bairro" onFocus="this.className='onfocus'" onBlur="this.className='onblur'" class="caixa10" style="width:210px;"> <option value="" selected>-----------------------------------</option> </select></td> </tr> Se puderem me dar uma luz seria muito bom, pois eu já procurei no tio Google e também aqui no fórum mas não achei a solução. Compartilhar este post Link para o post Compartilhar em outros sites
Jonas Ruth 0 Denunciar post Postado Março 29, 2011 Uma solução boa para seu problema seria não utilizar o nome da cidade como chave para listar os bairros. Não sei de como você cadastra as cidades e bairros, mas se você utilizasse um código numérico para a cidade facilitaria sua vida. Os problemas com caracteres são um grande problema para nós programadores, pois estão relacionados com coisas fora do nosso controle, como por exemplo sistema operacional e browser. Sei que não te dei a solução, mas quem sabe isso pode ajudar um pouquinho. Compartilhar este post Link para o post Compartilhar em outros sites
MalCriada 1 Denunciar post Postado Março 29, 2011 Obrigada pela sugestão Jonas, O problema já foi resolvido. Moderador, pode marcar como resolvido. obrigada! Compartilhar este post Link para o post Compartilhar em outros sites
webto3 0 Denunciar post Postado Julho 26, 2011 Qual foi a solução encontrada? Tb estou com o mesmo problema. Compartilhar este post Link para o post Compartilhar em outros sites
MalCriada 1 Denunciar post Postado Julho 27, 2011 Olá, O Matheus Tavares me ajudou. Veja lá: http://forum.imasters.com.br/topic/427247-resolvido-php-mysql-resultado-da-consulta-sem-caracteres-especiais/page__p__1686916#entry1686916 No meu caso, antes da consulta sql eu coloquei isso: function retira_acentos($cidade) { $array1 = array( 'á', 'à', 'â', 'ã', 'ä', 'é', 'è', 'ê', 'ë', 'í', 'ì', 'î', 'ï', 'ó', 'ò', 'ô', 'õ', 'ö', 'ú', 'ù', 'û', 'ü', 'ç' , 'Á', 'À', 'Â', 'Ã', 'Ä', 'É', 'È', 'Ê', 'Ë', 'Í', 'Ì', 'Î', 'Ï', 'Ó', 'Ò', 'Ô', 'Õ', 'Ö', 'Ú', 'Ù', 'Û', 'Ü', 'Ç' ); $array2 = array( 'a', 'a', 'a', 'a', 'a', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'c' , 'A', 'A', 'A', 'A', 'A', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'C' ); return str_replace( $array1, $array2, $cidade ); } você substitui $cidade pelo valor que tu tá consultando. Boa sorte! Compartilhar este post Link para o post Compartilhar em outros sites
Kakashi_Hatake 267 Denunciar post Postado Julho 27, 2011 Sugiro algo mais simples: iconv <?php $string = 'àáâãäåçèéêëìíîïñòóôõöùúûüýÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ'; echo preg_replace( '/[`^~\'"]/', null, iconv( 'UTF-8', 'ASCII//TRANSLIT', $string ) ); // aaaaaaceeeeiiiinooooouuuuyAAAAAACEEEEIIIINOOOOOUUUUY ?> Compartilhar este post Link para o post Compartilhar em outros sites