Ir para conteúdo

Arquivado

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

daniele bianca

exibir conteudo do mysql em loop

Recommended Posts

CL4nG, ainda to tentando entender qual é o problema. eu fiz como você falou mas continua com o problema.

acho q ou é pq existe um tamanho limite do log ou por causa de algum caractere q ta nele (q eu ainda nao consegui encontrar qual). acho q nao seja o tamanho limite de log, mas nao consegui pensar noutras hipoteses pra dar errado.

 

os logs apresentam todos os tipos de caractres @#$%&!:

 

dei print_r em $string, mas nao apareceu organizado como deveria. aparece o xml certo no codigo fonte mas na pagina aparece apenas o conteudo mas todo misturado, sem classificar no foreach.

 

podem me dar uma luz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema ta na codificação e eu ainda nao consegui resolver.

o q eu entendi é q simplexml_load_string não consegue interpretar a string onde tá o xml, por conter caracteres especiais. passei o conteúdo do xml com htmlentities e o problema continua.

 

se eu der print_r em $string aparece o xml, mas so o xml no codigo fonte. mas se eu fizer isso em $xml (q é onde ta o simplexml_load_string) ou depois disso nao aparece mais nada.

<?php
$string = "<?xml version='1.0' encoding='UTF-8' ?>
<logs>
".$resultado."
</logs>"; // ate aqui se eu der print_r aparece

$xml = simplexml_load_string($string); // se eu fizer isso aqui ja nao mostra nada

$xml = get_object_vars($xml);
$logs = $xml['log'];

...... //o resto ta igual
?>

os logs possuem todos apenas palavras com acentuações, aspas unicas e duplas, parenteses, #, &, %, ~... essas coisas (desculpa nao poder mostrar os logs mesmo mas contem dados da empresa e nao é autorizado).

 

quando sao logs mais simples ("sem muitos caracters especiais", apenas o basico) ele mostra. quando tem alguns "mais especiais", da o problema (ainda nao consegui identificar quais sao exatamente). pode nao ser exatamente por isso mas pelo menos é o q da a entender.

 

me ajudem!!! muuuuito obrigado mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque a função htmlentities por htmlspecialchars. Lembrando que isso tem que ser feito antes de salvar os dados no banco de dados e não após a busca.

Veja:

$eu_log = htmlspecialchars("entrou no sistema\"!@#$%*()_+°ºª´º<>:?}");
$voce_log = htmlspecialchars("entrou no sistema<br><p><img>\"!@#$%*()_+°ºª´º<>:?}");

$eu = "<log><eu></eu><hora>21:50</hora><log>".$eu_log."</log></log>";
$voce = "<log><voce></voce><hora>21:50</hora><log>".$voce_log."</log></log>";

$resultado = "";
for ($i = 0; $i < 5; $i++)
{
	$resultado .= $eu;
	$resultado .= $voce;
}

$string = "<?xml version='1.0' encoding='UTF-8' ?><logs>".$resultado."</logs>";


$xml = simplexml_load_string($string);
$xml = get_object_vars($xml);
$logs = $xml['log'];

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.