Ir para conteúdo
Fórum Script Brasil
  • 0

PHP Não agrupa mensagens por mê e ano


Añd®é™

Pergunta

Muito boa noite a todos!

Estou com um problema na exibição das mensagens de meu livro de visitas, ou seja o php esta causando um erro serio no bd.

A principio ele funciona perfeitamente, mais passado o primeiro mes ele começou a agruparar a mensagens de forma errada, ou seja apenas pelo valor do dia

TIPO:

02/01/2010 1° mensagem

02/02/2010 2° mensagem

02/03/2010 3° mensagem

03/01/2010 4° mensagem

03/02/2010 5° mensagem

No bd eu tentei mudar o campo data (QUE ESTA EM VARCHAR) para DATE e depois para DATELINE e o resultado foi uma correção nas ordens das postagens, ou seja a mensagem que era postada e se agrupava seguindo a ordem dos trinta dias do mes, passou a ser encaminhada para o local correto, mais com um erro de interpretação, onde alguns valores de texto somem, e os valores numéricos assumem o valor zero, se transformando ainda em exibição estilo americano.

EX:

0000/00/00

Se alguém souber o que fazer posta ai, já analizei o manual do MySQL ele até atenua esse erro, mais ressalta que o problema acontece quando um valor não é reconhecido pelo bd, tornando assim os valores zero, isso para o caso de DATE e DATELINE, para VARCHAR não ressaltam nada a respeito de interpretação de valores de data.

Já tentei no forum do MySQL e lá ninguém conseguem me dar uma solução que realmente resolva o meu problema.

Vou postar os codigos que eu acho que estejam interfirindo nessa exibição para que tenham uma noção primaria da coisa

Esse é o codigo de exibição das mensagens

<?
include ("conectar.php");
$seleciona = mysql_query("SELECT * FROM `mural` `utf8` ORDER BY `data` DESC LIMIT 0, 10") or die(mysql_error());
//acima nós selecionamos a tabela
while ($dados = mysql_fetch_array($seleciona)){
$variavel01 = $l["data"];
$variavel02 = date('d/m/Y', strtotime($variavel01));
$nome = $dados["nome"];
$email = $dados["email"];
$mensagem = nl2br($dados["mensagem"]);
$data = $dados["data"];
echo"<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" width=\"964\" id=\"AutoNumber1\">
<tr>
<td bgcolor=\"#C0C0C0\">$data</td>
</tr>
<tr>
<td><b>Nome:</b> $nome<BR> <b>E-mail:</b> <a href=\"mailto:$email\">
$email</a>
<p><b>Mensagem:</b><br>$mensagem</br></p></td>
</tr>
</table><BR>";
}
?>
E esse é o codigo de verificação
<?

date_default_timezone_set('America/Sao_Paulo');

include ("conectar.php");

$ip = $_SERVER['REMOTE_ADDR'];



//inclui o nosso arquivo de conexão com o bd



$nome = $_POST['nome'];

$email = $_POST['email'];



$mensagem = $_POST['mensagem'];



//acima resgatamos as variáveis previamente enviadas pelo formulário



$hora = date("H:i");

$data = date("d/m/Y");

$datehora = "A mensagem foi postada em $data às $hora";



/*acima fazemos uma variável que receberá as horas, minutos, dia, mês e ano em que a mensagem foi postada*/



if (strlen($nome) < 4)

echo '<p align="center">Escreva seu nome!<BR><a href="java script:history.back(1);">voltar</a></p>';

elseif (strlen($email) <= 4)

echo '<p align="center">E-mail inválido!<BR><a href="java script:history.back(1);">voltar</a></p>';

elseif (strlen($mensagem) <= 4)

echo '<p align="center">Sua mensagem deve conter mais de 4 caracteres!<BR><a href="java script:history.back(1);">voltar</a></p>';

else{

mysql_query("INSERT INTO mural ( nome , email , mensagem , data , ip) VALUES ( '$nome' , '$email' , '$mensagem' , '$datehora' , '$ip' ) ") or die(mysql_error());

echo '<p align="center"><b><font

      size=6><font color="#FF0000">Sua mensagem foi enviada com sucesso!</font></font

      size=6></b></p>';

}

/*depois da rotina de confirmação do preenchimento dos campos, inserimos os valores deles dentro da nossa tabela*/



?>

Editado por Añd®é™
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Cria uma nova coluna no BD e copia a data no formato varchar para ela (vou chamar essa coluna de data2), muda o tipo de campo da coluna onde você está guardando atualmente as datas (vou chamar essa coluna de data1), após isso crie um script para varrer toda a tabela, pegar o valor da data no formato que você salvou (dd/mm/yyyy, ou seja os valores de data2), transformar para o formato date (yyyy-mm-dd) e atualize a coluna data1. Ai você pode apagar a coluna data2 e pronto. Só lembre-se de estudar os tipos de campos, já que não existem campos para data apenas de enfeite, para formatar a saída da data você pode usar o date_format do próprio MySQL.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...