Ir para conteúdo

POWERED BY:

Arquivado

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

Roberto Tercette

Problemas com acentuação em consulta PHP+Mysql

Recommended Posts

Olá, Pessoal!

 

Sou novo por aqui e estou com um grande problema.

 

Eu tenho um site que mostra os jogos de futebol de vários campeonatos. Sendo assim, tenho um banco de dados que contém uma tabela de cadastro de times e outra de cadastro de jogos.

 

No site, aparecem todos os jogos e tenho a opção de buscar por time ou por campeonato.

 

No formulário de busca por time, tenho um campo "select" programado para aparecer todos os times cadastrados no banco de dados. Aí o cara escolhe o time e clica em "Pesquisar". Tenho um script que recebe a informação no método POST, faz a consulta no banco de dados e retorna as informações.

 

O problema é o seguinte: Quando meu site e meu banco de dados estão codificados em UTF-8 e o time tem acento no nome, a consulta simplesmente não retorna nada. Talvez o banco de dados não esteja reconhecendo os caracteres da consulta ou algo assim. Infelizmente o site precisa ficar em UTF-8, pois já aconteceram muitos problemas quando estava em ISO-8859-1 (apesar que essa parte dos jogos e campeonatos funcionava direitinho).

 

Alguém tem alguma sugestão?

 

Fico muito grato desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Roberto,

 

tenta utilizar o charset de tidas as páginas HTML como "ISO-8859-1" e modifica o charset do banco de dados para 'latin1'.

 

Apaga os dados do banco e cadastra novamente, que irá funcionar! ;)

 

Abraços! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Roberto,

 

tenta utilizar o charset de tidas as páginas HTML como "ISO-8859-1" e modifica o charset do banco de dados para 'latin1'.

 

Apaga os dados do banco e cadastra novamente, que irá funcionar! ;)

 

Abraços! :D

Opa Diego!

 

Obrigado pela atenção!

 

Eu já usei essas configurações e realmente funcionam, mas essa é uma parte do site. Existem outras partes que só funcionam se o charset da página estiver em UTF-8.

 

Queria saber mesmo qual é a solução para ficar em UTF-8 e funcionar meu script.

 

Obrigado mesmo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sugiro que mantenha como UTF-8.

Tente usar utf8_encode ou utf8_decode nos dados antes de enviar para a consulta.

 

Carlos Eduardo

Opa!

 

Muito obrigado pela atenção, Matias.

 

Eu tentei usar utf8_encode nos dados que vão para consulta mysql, mas ainda assim não funcionou. Vou tentar utf8_decode e aviso se der certo.

 

Mesmo assim, se houver mais alguma solução, por favor me avise.

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em vez de colocar acentuação no banco de dados, coloque os caracteres do HTML, exemplo:

 

é = é
ç = ç

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Pessoal!

 

Já usei utf8_encode, utf8_decode, htmlentities, urlencode. Nenhuma dessas funções me ajudaram a resolver meu problema.

 

Será que realmente existe uma solução para isso?

 

Estou com um pouco de urgência com isso.

 

Obrigado pela ajuda pessoal!

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tento o que te falei? Nem isso resolve?

 

Você mudo o header para "utf-8" para usar o utf8_encode?

 

Se não deu com UTF-8 tenta mudar para iso-8859-1.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tento o que te falei? Nem isso resolve?

 

Você mudo o header para "utf-8" para usar o utf8_encode?

 

Se não deu com UTF-8 tenta mudar para iso-8859-1.

Tentei sim, mas o problema é na consulta mysql e não na exibição dos caracteres na página.

 

O header está em UTF-8, charset da página tb.

 

To ficando maluco!rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou imprimir a palavra na tela depois de usar uma dessas funções???

 

Imprima e veja... Uma das 3 tem que funcionar: utf8_decode, utf8_encode ou htmlentities...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou imprimir a palavra na tela depois de usar uma dessas funções???

 

Imprima e veja... Uma das 3 tem que funcionar: utf8_decode, utf8_encode ou htmlentities...

Olá Rick!

 

Meu problema não é com a impressão das palavras corretamente no site.

 

O cara escolhe o time em um campo select do formulario, clica em pesquisar, meu script pega a informação e faz a consulta no banco. Aí está o problema, a consulta não retorna nenhum resultado quando o time tem algum acento, como São Paulo, Atlético, etc.

 

Quando escolho times sem acentuação, a consulta retorna o resultado correto.

 

Talvez seja o banco de dados que não está reconhecendo os acentos. Ele está configurado em UTF-8, assim como o site.

 

Obrigado pela atenção!

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Roberto,

 

talvez as páginas que não estejam funcionando, sejam exatamente as páginas que estão utilizando o caracteres HTML no lugar da letras com acentos ou caracteres especiais.

 

Qualquer coisa, posta aqui alguma parte do HTML pra gente dar uma olhada.

 

Abraços! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Roberto,

 

talvez as páginas que não estejam funcionando, sejam exatamente as páginas que estão utilizando o caracteres HTML no lugar da letras com acentos ou caracteres especiais.

 

Qualquer coisa, posta aqui alguma parte do HTML pra gente dar uma olhada.

 

Abraços! :D

Diego,

 

Expecificamente vou te passar o formulário de escolha de times e o código que recebe essa informação.

 

esse é o formulário:

 

<div class="busca_direita">
		<table>
		<form method="post" action="<?php echo($vars['url']); ?>pg/torcidas/busca_jogo_time.php" name="busca_jogo_time">
		<tr>
			<td><h4>Por Time:</h4></td>
		</tr>
		<tr>
			<td>
			<select name="time" id="time">
			<?php 
			
			$campeonato = mysql_query("SELECT * FROM kt_times order by nome_time ASC"); 


			//Fazendo o looping para exibiçăo de todos registros que contiverem em nomedatabela
			while ($dados = mysql_fetch_array($campeonato)) {
			echo("<option value='".$dados['nome_time']."'>");
			echo ($dados['nome_time']);
			echo("</option>"); 	
			}

			
			?>
			</select>
			</td>
		</tr>
		<tr>
			<td><input type="submit" name="submit" value="Procurar" /></td>
		</tr>
		</form>
	</table>
	</div>

Agora esse é o script que pega essa informação e retorna o resultado:

 

<?php
$time = $_POST['time'];
			
$data = date("Y-m-d");
							
$jogo = mysql_query("select * from kt_jogos where time_casa = '$time' or time_fora = '$time' having data>='$data' order by data ASC ");
										
while ($dados = mysql_fetch_array($jogo)) {
	
?>

Valeu pela atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal!

 

Desculpe por ficar tanto tempo sem dar uma satisfação. É que na escolha de prioridades de desenvolvimento, a acentuação ficou por último.

 

Tirei todos os acentos das tabelas que estavam dando problema. Agora preciso colocá-los novamente.

 

Coloquei e aparece um "quadrado" ao invés do acento.

 

Testei o uso de htmlentities() e realmente resolve o problema da acentuação, mas aí apresenta problemas no funcionamento do site, não executando algumas consultas.

 

Não sei o que fazer, realmente preciso de uma ajuda.

 

Um abraço a todos e obrigado pela paciência!

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que na escolha de prioridades de desenvolvimento, a acentuação ficou por último.

Não foi uma boa escolha... Isto deveria ter sido arrumado desde o início. Agora PROVAVELMENTE vai ter que fazer gambiarra pra arrumar.

 

Qual charset e collation você usa no BD? Qual o charset das suas páginas? Qual editor você usa para criar suas páginas?

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá

 

Tente usar antes dos códigos:

 

<?php header("Content-Type: text/html; charset=ISO-8859-1",true); ?>

 

e Salve em utf-8 e poste o resultado ok

 

Não esqueça de colocar conforme acima, deve se colocar antes do inicio da pagina

 

<? ok

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal não sei se esse tópico já foi dado como resolvido, porque as respostas acima respondem o problema de nosso amigo, mas como muitos ainda querem saber de como se faz pra página retornar uma consulta do banco de dados com acentos, vou repetir o foi dito assim mesmo.

 

no início da página deve-se colocar:

 

<?php header("Content-Type: text/html; charset=utf8",true); ?>

 

e no banco na hora de inserir os valores que serão consultados deve ser feito o insert da seguinte maneira:

 

insert into table_nome values(null,'página','leitura de acentos do banco via brownser');

 

Por padrão o banco de dados mysql já possui os caracteres setados em utf8.

 

mais se o seu banco estiver setado diferente, sete-o para:

 

alter table table_nome default character set utf8;

 

Se não responder a dúvida do colega pelo menos reponderá a de outros estudiosos.

 

Simples assim.

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.