Ir para conteúdo

POWERED BY:

Arquivado

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

Antonella

Agenda puxando ate a data

Recommended Posts

Ola galerinha, gostaria de uma ajudinha, fiz um sistema de agenda e gostaria de saber como faço para ela mostrar apenas data ate o dia por exemplo:

 

11/06/2009 que e hoje, os eventos do dia 10/06/2009 para traz ele nao mostra.

 

Alquem pode me ajudar???

 

veja como fiz para aparecer so que esta mostrando tudo:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Untitled Document</title>

 

<style type="text/css">

a { text-decoration: none; }

a.classe1:hover { text-decoration: underline; color: #006600; }

 

a.classe1 { color: #006600; }

 

a.classe2 { text-decoration: underline overline; }

a.classe2:hover {text-decoration: underline; color: #006600; }

 

.style11, .style13 { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; color: #006600; }

.style13 { font-weight: bold; }

.style14 {

font-size: 10px;

color: #000000;

}

.style15 {color: #000000}

</style>

 

</head>

 

<body>

<?php

$link = mysql_connect("localhost", "sitecli_portal", "123123");

mysql_select_db("sitecli_portal", $link);

$result = mysql_query("SELECT * FROM agenda order by data asc limit 0, 5", $link);

$linhas = mysql_num_rows($result);

?>

<?php

while ($vetor=mysql_fetch_array($result)) { ?>

<table width="100%" border="0">

<tr>

<td class="style13"><span class="style14">- <a href="mostraragenda.php?exibir=<?php echo $vetor[0] ?>" class="classe1"><?php echo $vetor[1] ?></a></span></td>

</tr>

<tr>

<td class="style5 style11">

<span class="style15">

<? $dia = $vetor['5']; $mes = $vetor['6']; $ano = $vetor['ano']; echo "$dia/$mes/$ano"; ?>

</span> </td>

</tr>

</table>

<?php } ?>

</body>

</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta voce criar um SQL que te retorne o resultado esperado: o que voce esta usando nao filtra por data, apenas ordena: "SELECT * FROM agenda order by data asc limit 0, 5"

 

Forum de SQL: http://forum.imasters.com.br/index.php?showforum=179

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antonella eu nunk precisei faze isso mas acredito q da certo .... faça o seguinte

 

SELECT * FROM agenda order by data asc limit 0, 5", $link

 

adicione o seguinte

 

SELECT * FROM agenda WHERE data >= '$hj' ORDER BY data asc limit 0, 5"

 

onde a variavel $hj seria a funçao date(); pra funciona direitinho eu axo q o date(); tem que estar da mesma forma q é cadastrado no banco

tipo se no banco é cadastrado

 

12/06/09 o date teria q ser da mesma forma date("d/m/y"); ai você usa >= (maior ou igual) pra exibi os de hj e os q tem pela frente , acredito q funcione , testa ai e da uma resp, abrçs :) :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que só funciona se a data estiver guardada no formato date(AAAA-MM-DD).

 

Carlos Eduardo

intao cara , eu dei uma testada aki com registros de uma tabela q eu tenhu , colokando a data da tabela do mesmo formato tipo

no banco eu cadastrei date("d/m/y");

chamando o dia de hj da mesma forma

e a principio pego normal , bom sei la ,axo q dessa forma , estando no mesmo formato pega sim , so esperar o script ser testado pra ve se pego ou nao,.... flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim... Se estiver d/m/y, a tabela do mysql deve estar como varchar, certo? Então a data ficaria como uma string... O que vai ocorrer...

 

Imagina um evento no dia 2/01/09 no banco... E hoje é dia 11/01/09.. Se você puxar com SELECT * FROM agenda WHERE data >= '$hj' ORDER BY data asc limit 0, 5", ele vai entender que dia 2/01/09 é MAIOR que o dia 11/01/09 e aí vai dar um erro, porque 2 é maior que 1...

 

Entendeu mais ou menos? Fiz alguns testes um dia destes e vi que realmente acontece como eu estou te falando... Por isto digo... O ideal é usar o campo como DATE no mysql e gravar com AAAA-MM-DD (date("Y-m-d")).

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim... Se estiver d/m/y, a tabela do mysql deve estar como varchar, certo? Então a data ficaria como uma string... O que vai ocorrer...

 

Imagina um evento no dia 2/01/09 no banco... E hoje é dia 11/01/09.. Se você puxar com SELECT * FROM agenda WHERE data >= '$hj' ORDER BY data asc limit 0, 5", ele vai entender que dia 2/01/09 é MAIOR que o dia 11/01/09 e aí vai dar um erro, porque 2 é maior que 1...

 

Entendeu mais ou menos? Fiz alguns testes um dia destes e vi que realmente acontece como eu estou te falando... Por isto digo... O ideal é usar o campo como DATE no mysql e gravar com AAAA-MM-DD (date("Y-m-d")).

 

Carlos Eduardo

intendi oq você disse , mas eu sempre gravei no db como varchar(nao sei se e errado mas nunca deu problema) , bom.... acredito q para o caso da amiga ali em cima tem que ver como ela cadastro no banco ,e se necessario alterar o cadastro do campo "data" da forma que você explicou , mas continuo axando que se você chamar date(); da mesma forma que esta no banco (independente sendo date ou varchar) vai resolver o problema dela =], abrss flww

Compartilhar este post


Link para o post
Compartilhar em outros sites

Até vai... Mas se você fizer o SELECT com o ORDER BY pela data, ele vai dar aquele erro que eu disse. Além de que você perde a possibilidade de chamar com datas BETWEEN.

 

Espero ter ajudado

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sempre utilizem DATE ou DATETIME no MySQL para guardar datas pessoal.

As vezes isso economiza linhas de código e muito tempo.

Alem de que se você quiser passar para o padrão brasileiro, basta usar um date_format na propria consulta.

 

As vantagens são muitas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

e foi oq eu tinha dito no primero post , eu nunk usei , n saberia se ia funfa ou nao , foi a unica coisa q consegui pensa assim de primera ^_^ ainda so meio noob em php , mexo so 1 ano e pokim

mas ta beleza eu intendi oq você disse, mas... qual seria a solucao correta intao para o script da antonella? http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ela pode passar a coluna que contem as datas para o formato DATE.

Assim, as datas deverão ser gravadas no seguinte formato: YYYY-MM-DD

 

Na hora da consulta, basta fazer uma filtragem.

 

SELECT * FROM `eventos` WHERE `data` >= YYYY-MM-DD

 

Caso ela precise converter a data que esta no banco para o padrão brasileiro, basta fazer isso:

 

$dataEUA = '2009-08-22';
$dt = explode('-', $dataEUA);
$dataBR = $dt[2] .'/'. $dt[1] .'/'. $dt[0];

echo $dataBR;
//Irá retornar: 22/08/2009

Se for sempre assim, da até para fazer uma funçãozinha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

fiz assim e deu erro:

 

<?php

$link = mysql_connect("localhost", "sitecli_portal", "123123");

mysql_select_db("sitecli_portal", $link);

$result = mysql_query("SELECT * FROM `agenda` WHERE `data` >= YYYY-MM-DD", $link);

$linhas = mysql_num_rows($result);

?>

<?php

function converterData($data) {

$data = implode(preg_match("~\/~", $data) == 0 ? "." : "-", array_reverse(explode(preg_match("~\/~", $data) == 0 ? "-" : "/", $data)));

return $data;

}

?>

<?php

while ($vetor=mysql_fetch_array($result)) { ?>

<table width="100%" border="0">

<tr>

<td class="style13"><span class="style14">- <a href="mostraragenda.php?exibir=<?php echo $vetor[0] ?>" class="classe1"><?php echo $vetor[1] ?></a></span></td>

</tr>

<tr>

<td class="style5 style11">

<span class="style15">

<?php echo "$data"; ?>

</span> </td>

</tr>

</table>

<?php } ?>

o erro foi:

 

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/sitecli/public_html/inicio/agendainicio.php on line 32

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/sitecli/public_html/inicio/agendainicio.php on line 41

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro está na query.

 

Troque isto

$result = mysql_query("SELECT * FROM `agenda` WHERE `data` >= YYYY-MM-DD", $link);

Por isto

 

$result = mysql_query("SELECT * FROM agenda WHERE data >= '".date("Y-m-d")."' ", $link) or die(mysql_error());

Deve funcionar

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola, funciono ok, agora to com um probleminha na hora de converter a data para BR, veja como fiz e o que estou fazendo de errado:

 

<?php

$link = mysql_connect("localhost", "sitecli_portal", "123123");

mysql_select_db("sitecli_portal", $link);

$result = mysql_query("SELECT * FROM agenda WHERE data >= '".date("Y-m-d")."' order by data asc ", $link) or die(mysql_error());

$linhas = mysql_num_rows($result);

?>

<?php

function converterData($data) {

$data = implode(preg_match("~\/~", $data) == 0 ? "." : "-", array_reverse(explode(preg_match("~\/~", $data) == 0 ? "-" : "/", $data)));

return $data;

}

?>

<?php

while ($vetor=mysql_fetch_array($result)) {

$data = converterData($vetor[8]);

?>

<table width="100%" border="0">

<tr>

<td class="style13"><span class="style14">- <a href="mostraragenda.php?exibir=<?php echo $vetor[0] ?>" class="classe1"><?php echo $vetor[1] ?></a></span></td>

</tr>

<tr>

<td class="style5 style11">

<span class="style15">

<?php echo $vetor[8] ?>

</span> </td>

</tr>

</table>

<?php } ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou postar o jeito errado de fazer e te dizer o jeito correto.

 

Jeito errado

function inverte_data($data){
	 $date = implode('/',array_reverse(explode('-',$data)));
	 return $date;
}

O jeito correto é usando date_format no próprio SELECT, mas aí não sei bem como fazer... Dá uma procurada no Google e no manual do Mysql que você vai ver.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

A sintaxe do date_format é essa:

 

SELECT DATE_FORMAT(colunaData,'%d/%m/%Y') FROM `tabela`

 

Irá retornar DD/MM/YYYY.

A sintaxe é bem parecida com a função date() do PHP. Só procurar no google que tu acha.

Mas o uso é basicamente este.

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.