Ir para conteúdo

Arquivado

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

Gilsoney

[Resolvido] Problema de codificação ao exibir consulta PHP

Recommended Posts

Prezados, antes de tudo, gostaria de informar que já rodei o google em busca de uma solução, encontrei várias mas nenhuma serviu.

Estou tentando exibir o retorno de uma consulta em uma página php, porém ao selecionar registros na tabela, eles aparecem assim:

O retorno da consulta seria: época do açai ôpa 1º

�poca do a�ai �pa 1�

Meus arquivos .php foram codificados em utf-8 sem BOM no notpad++, o banco de dados e as tabelas estão em utf8_unicode_ci, já inseri <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" > no HTML, header('Content-Type: text/html; charset=UTF-8'); no PHP e no arquivo de conexão com o bd mas n adiantou. No banco de dados ele grava certo através de um formulário JavaScript, porém na hora de exibir em um formulário ele aparece com erro de acento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A consulta retorna value=' utf8_encode($valor); '> em um formulário javascript. Ela está exibindo retornando: utf8_encode(�poca do a�ai �pa 1�); 

Estou fazendo errado?

Em 26/04/2018 at 14:03, Massaki disse:

Tente usar


utf8_encode($variavel)

 

A consulta retorna value=' utf8_encode($valor); '> em um formulário javascript. Ela está exibindo retornando: utf8_encode(�poca do a�ai �pa 1�); 

Estou fazendo errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essas informações estão sendo retornadas via javascript para o HTML?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na variável que retorna o valor do banco no PHP utilize o echo antes da função. 

Por exemplo ao tentar imprimir um índice nome de um array $data['nome'], utiliza-se o código

echo utf8_encode($data['nome']);

Porém, em um projeto que estou estudando atualmente, isso ficou muito chato de fazer. Todo campo que os caracteres especiais bugarem precisa adicionar tal função.

Detalhe, a configuração do banco e a página html estão em UTF-8 aqui também.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 02/05/2018 at 16:23, Gabriel Heming disse:

Essas informações estão sendo retornadas via javascript para o HTML?

Estão sendo retornadas em uma página php, dentro de um formulário javascript. Veja o código:

<?php
try {
	$pdo = new PDO( 'mysql:host=localhost;dbname=meubanco' , 'usuario' , 'senha' );	
	$pdo->setAttribute( PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION );	
	$stm = $pdo->prepare( "SELECT * FROM `abc` " );	
	$stm->bindParam( ':id' , $usuario , PDO::PARAM_STR );	 
	if ( $stm->execute() ) {		
		foreach ( $stm->fetchAll( PDO::FETCH_OBJ ) as $usuario ) {			
		echo " <table width='auto'  cellspacing='1' cellpadding='0' bgcolor='white' layout='fixed' border='1'>
  <tr>
  <td width='auto'><font color='blue' size='2'><center><b>DI</td>
     <td width='auto' ><font color='blue' size='2'><center><b>VALOR</td>	  
  </tr>
  <center>
  <tr>
  <form name='cli'  action='confirmar.php' method='post'>
    <td><center><input type='text' id='apelido' name='apelido' ReadOnly size='1' style='text-align:center' value='$usuario->id'></td>
    <td><center><input type='text' id='valor' name='valor' ReadOnly size='20' style='text-align:center' value='$usuario->valor'></td>
  </form>
  </tr> 
</table>
</fieldset>";					
	} 
		}		
} catch ( PDOException $e ) {
	var_dump( $e->getMessage() );	
} 
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 07/05/2018 at 01:35, itamazor disse:

Na variável que retorna o valor do banco no PHP utilize o echo antes da função. 

Por exemplo ao tentar imprimir um índice nome de um array $data['nome'], utiliza-se o código


echo utf8_encode($data['nome']);

Porém, em um projeto que estou estudando atualmente, isso ficou muito chato de fazer. Todo campo que os caracteres especiais bugarem precisa adicionar tal função.

Detalhe, a configuração do banco e a página html estão em UTF-8 aqui também.

Valeu cara, resolveu! Mas é bem chato ter que fazer isso para todas as variáveis que a gente for exibir, será que não tem uma forma automática de exibir sem precisar fazer isso para cada variável? Outra dúvida, como vou exibir isso dentro de um formulário que está dentro de um echo? Por exemplo: 

echo " <table width='auto'  cellspacing='1' cellpadding='0' bgcolor='white' layout='fixed' border='1'>
   <tr>
   <td width='auto'><font color='blue' size='2'><center><b>DI</td>
     <td width='auto' ><font color='blue' size='2'><center><b>VALOR</td>    
   </tr>
  <center>
  <tr>
  <form name='cli'  action='confirmar.php' method='post'>
    <td><center><input type='text' id='apelido' name='apelido' ReadOnly size='1' style='text-align:center' value='$usuario->id'></td>
    <td><center><input type='text' id='valor' name='valor' ReadOnly size='20' style='text-align:center' value='$usuario->valor'></td>  
	</form>
  </tr>
</table>";	

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
15 minutos atrás, Gilsoney disse:

Valeu cara, resolveu! Mas é bem chato ter que fazer isso para todas as variáveis que a gente for exibir, será que não tem uma forma automática de exibir sem precisar fazer isso para cada variável? Outra dúvida, como vou exibir isso dentro de um formulário que está dentro de um echo? Por exemplo: 


echo " <table width='auto'  cellspacing='1' cellpadding='0' bgcolor='white' layout='fixed' border='1'>
   <tr>
   <td width='auto'><font color='blue' size='2'><center><b>DI</td>
     <td width='auto' ><font color='blue' size='2'><center><b>VALOR</td>    
   </tr>
  <center>
  <tr>
  <form name='cli'  action='confirmar.php' method='post'>
    <td><center><input type='text' id='apelido' name='apelido' ReadOnly size='1' style='text-align:center' value='$usuario->id'></td>
    <td><center><input type='text' id='valor' name='valor' ReadOnly size='20' style='text-align:center' value='$usuario->valor'></td>  
	</form>
  </tr>
</table>";	

 

Como eu daria um echo dentro de outro echo?

Compartilhar este post


Link para o post
Compartilhar em outros sites
38 minutos atrás, Gilsoney disse:

Como eu daria um echo dentro de outro echo?

Eu descobri, fiz assim:

$exibir = utf8_encode($usuario->valor);

No formulário ficou assim:

value='$valor'

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, desculpa a demora.

Consegui resolver aqui de uma vez por todas.

 

O banco de dados tem que estar em UTF-8 general ci, o html também, mas... adivinha a pegadinha

 

Lembra que estamos fazendo consultas ao banco de dados, no PDO tem que ter outro parâmetro, além das informações de conexão:

 

$options = [ PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'];

$pdo = new PDO( 'mysql:host=localhost;dbname=meubanco' , 'usuario' , 'senha', $options );

 

Esse (set names utf8) tem que passar como quarto parâmetro, agora basta tirar todos utf8_encode e decode que o código vai funcionar normalmente.

 

A outra dúvida: aconselho tirar todas as tags de dentro do echo, quando chegar na parte que executa o php, você insere o php assim:

value="<?php utf8_encode($variaveltal['teste']); ?>"

Se for apenas para imprimir alguma informação, pode utilizar <?=$variaveltal['nome']?> sem ponto e virgula e sem o nome php no início, que ele imprime normal.

 

Espero ter ajudado.

 

Vida longa e próspera! =]

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 29/05/2018 at 19:33, itamazor disse:

Opa, desculpa a demora.

Consegui resolver aqui de uma vez por todas.

 

O banco de dados tem que estar em UTF-8 general ci, o html também, mas... adivinha a pegadinha

 

Lembra que estamos fazendo consultas ao banco de dados, no PDO tem que ter outro parâmetro, além das informações de conexão:

 

$options = [ PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'];

$pdo = new PDO( 'mysql:host=localhost;dbname=meubanco' , 'usuario' , 'senha', $options );

 

Esse (set names utf8) tem que passar como quarto parâmetro, agora basta tirar todos utf8_encode e decode que o código vai funcionar normalmente.

 

A outra dúvida: aconselho tirar todas as tags de dentro do echo, quando chegar na parte que executa o php, você insere o php assim:

value="<?php utf8_encode($variaveltal['teste']); ?>"

Se for apenas para imprimir alguma informação, pode utilizar <?=$variaveltal['nome']?> sem ponto e virgula e sem o nome php no início, que ele imprime normal.

 

Espero ter ajudado.

 

Vida longa e próspera! =]

Obrigado pela resposta amigão, quando eu tiver um tempo vou testar. Mas a solução anterior se adequou bem ao meu problema. Obrigado a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por juliosonic
      Boa noite..
      Estou desenvolvendo um site de https://www.maithunatantra.com.br/ e estou com um duvida sobre o menu de navegação da versão mobile.
      O menu que tem o dropdown "Terapeutas" e "Terapias" quando clico em cima ele expande como deve ser, mas quando clico denovo para recolher os submenus
      nao acontece nada.. segue o trecho do codigo do menu..
      <div class="collapse navbar-collapse" id="navbarsExample09">             <ul class="navbar-nav ml-auto">               <li class="nav-item  active"><a class="nav-link" href="index.html">Home</a></li>               <li class="nav-item  active"><a class="nav-link" href="about-us.html">Quem Somos</a></li>               <li class="nav-item dropdown1">                     <a class="nav-link dropdown-toggle" data-toggle="dropdown1" href="#">Terapeutas</a>                     <ul class="dropdown-menu">                         <li><a class="dropdown-item" href="terapeuta-julio-cezar.html">Julio Cezar</a></li>                         <li><a class="dropdown-item" href="terapeuta-pamela-priscila.html">Pamela Priscila</a></li>                     </ul>                                    </li>               <li class="nav-item dropdown">                     <a class="nav-link dropdown-toggle" data-toggle="dropdown1" href="#">Terapias</a>                     <ul class="dropdown-menu" aria-labelledby="dropdown01">                         <li><a class="dropdown-item" href="o-que-e-reiki.html">O que é Reiki</a></li>                         <li><a class="dropdown-item" href="beneficios-reiki.html">Benefícios do Reiki</a></li>                         <li><a class="dropdown-item" href="principios-reiki.html">Princípios do Reiki</a></li>                         <li><a class="dropdown-item" href="animais-reiki.html">Reiki em Animais</a></li>                         <li><a class="dropdown-item" href="animais-reiki.html">Estudos Sobre Reiki</a></li>                         <li><a class="dropdown-item" href="terapia-massagem-tantrica.html">Terapia Tântrica</a></li>                     </ul>               </li>               <li class="nav-item  active"><a class="nav-link" href="blog.html">Blog</a></li>                <li class="nav-item"><a class="nav-link" href="contato.html">Contato</a></li>             </ul>         </div>  
      Massagem Tantrica em Curitiba
      Tantra Curitiba
      Massagem Tântrica
      Tantra
      Julio Darshan

      Obrigado
      Att
      Julio Cezar
       
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.