Tri des dates

Signaler
Messages postés
67
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
3 avril 2006
-
Messages postés
67
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
3 avril 2006
-
bonjour,

je doi faire un agenda, et pour l'instant dans ma page,
j'ai la date d'aujourd'hui et la liste des dates que je recupère dans un champs d'une base access, je voudrai que cet date soit trié en ordre croissant des heures
pour cela -soit la manip se fait dans access (je connais pas trop)
-soit je peux par php

pour info, voila mon code:
<html>
<head><title>agenda</title>
</head>


<?php
include ("connexion.php");
echo ("<center>");
setlocale(LC_TIME, "fr"); // passe en français facilement
$date=strftime("%A %d %B %Y");
echo $date;


echo ("</center>");
echo ("
");
echo ("
");
echo ("
");

$date= odbc_exec( $cnx, "select * from agenda" );
while( odbc_fetch_row( $date ) ) //tant que c pas la fin de la table
{
echo("\");
echo(\"----
\");
echo(\"");
echo odbc_result( $date,2 )."
";
echo(", \");
echo(\"");
echo odbc_result( $date,3 )."
";
echo(", \");
echo(\"\");
echo("
");
echo("
");
}
?>

</html>

et voila ce qu'il s'affiche:


<CENTER>mercredi 09 mars 2005</CENTER>

2005-03-09 13:20:50,
c'est mon premier texte

2005-03-09 11:20:45,
c'est mon deuxieme message

2005-03-10 12:45:42,
c'est mon troisieme message

et voila ce que je veux afficher:

mercredi 09 mars 2005
11:20:45 c'est mon premier message
13:20:50 c'est mon deuxieme message
jeudi 10 mars 2005
12:45:42 c'est mon troisieme message

merci de votre aide svp...

6 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
Hello,



tien, un petit exemple :



<?php

$date = array (strftime("%A %d %B %Y"),strftime("%A %d %B %Y", mktime (0, 0, 0, 3, 0, 2000)));

foreach ($date as $v)

echo $v, '
';

sort($date);

foreach ($date as $v)

echo $v, '
';

?>



1 - pour afficher tes donnees correctement, tu doisje pense utiliser un truc du genre :

echo
strftime("%A %d %B %Y",odbc_result( $date,2 ))
, '
';

2 - mets ces donnees dans un tableau, et trie le tableau, tout simplement, avant de tout afficher.

Genre :

$date_tab[]=
strftime("%A %d %B %Y",odbc_result( $date,2 ));


$date_tab[]=
strftime("%A %d %B %Y",odbc_result( $date,3 ));

sort ($date_tab);

foreach ($date_tab as $date_aff)

echo $date_aff, '
';
Messages postés
67
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
3 avril 2006

salut malalam,

j'ai essayé mais ça marche pas, il me met :

jeudi 01 janvier 1970
jeudi 01 janvier 1970

et plein de warning.

il ne prend pas les valeurs de la base,

merci quand meme!!!!
c'est gentil!!!
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
Doit y avoir une erreur avec les odbc_

Mets tes dates dans une variable, et :


$date_tab[]=
strftime("%A %d %B %Y", $ta_variabe_date );

Ca marche, je l'ai teste.
Messages postés
67
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
3 avril 2006

salut malalam,
j'ai essayé, je ne trouve pas, je vais devenir folle si ça continue, je ne vois pas d'où vien le probleme.

maintenant j'ai:


<CENTER>jeudi 10 mars 2005</CENTER>

jeudi 01 janvier 1970

2005-03-10 00:00:00,
11:30,
c'est mon deuxieme message


2005-03-11 00:00:00,
09:30,
c'est mon troisieme message

pour ce code:

<html>
<head>
<title>agenda</title>
</head>




<?php
include ("connexion.php");
echo ("<center>");
setlocale(LC_TIME, "fr"); // passe en français facilement
$date=strftime("%A %d %B %Y");
echo $date;


echo ("</center>");
echo ("
");
echo ("
");
echo ("
");

$datebd= odbc_exec( $cnx, "select * from agenda" );

echo strftime("%A %d %B %Y",odbc_result( $datebd,1 )), '
';


while( odbc_fetch_row( $datebd ) ) //tant que c pas la fin de la table
{
echo("\");
echo(\"----
\");
echo(\"");
echo odbc_result( $datebd,2 )."
";
echo(", \");
echo(\"");
echo odbc_result( $datebd,3 )."
";
echo(", \");
echo(\"");
echo odbc_result( $datebd,4 )."
";
echo(", \");
echo(\"\");
echo("
");
echo("
");


echo("
");


}

?>

</html>

et dans ma base j'ai :

table agenda

avec le champs date où le type de données est : date/heure mais le format est date abregé.
ça vient peut etre de là le probleme, de 00:00:00

le champs heure est en format texte (c'est pour ça qu'il affiche correctement)
...

Si tu voit d'où vien le probleme, s'il te plait peut tu me le dire

merci d'avance
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
C'est dans le while() que tu dois mettre les dates dans un tableau.

Etr ensuite trier le tableau.

Le 1970 provient du seul endroit ou tu essayes de mettre une date dans
un tableau. Manque de bol, a ce moment la, tu n'as aucun resultat de
requete puisque tu ne l'as pas encore parcourue.
Messages postés
67
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
3 avril 2006

pas trop compris,
je sais pas trop programmer alors je ne comprend pasbien ce que tu me dis:
je vois pas comment on mets les donnees dans un tableau, et trier le tableau

en plus
rien qu'en mettant ça:

echo strftime("%A %d %B %Y",odbc_result( $datebd,2 )), '
';

j'ai:

jeudi 01 janvier 1970,
12:50,
texte à moi

et pour le reste du programme,jcomprend pas!! pourtant je suis dans le while

while( odbc_fetch_row( $datebd ) ) //tant que c pas la fin de la table
{


echo("<table>");
echo("<tr>");
echo("<td>");
echo strftime("%A %d %B %Y",odbc_result( $datebd,2 )), '
';
echo("</td>");
...
}
il m'ecrase la date que j'ai dans ma base et il met jeudi ...1970
enfin bon

je croit que c'est tomber à l'eau

merci quand meme malalam