Probleme affichage sql php

Résolu
audi68 Messages postés 571 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour a tous,

J ai une base de donné avec date et heure mais j aimerais afficher les images par date croissant

c est a dire
01/02/12
05/02/12
28/02/12
01/05/12

et ainsi de suite

j effectue la requete suivante

$req = mysql_query("SELECT * FROM exif WHERE dossier='$doss' ORDER BY date ASC, heure ASC"

mais l affichage se fait sous cette forme

01/06/12
05/06/12
15/02/12
28/01/12

que dois changer dans la requete pour afficher le resultat correctement

merci de votre aide


A voir également:

15 réponses

A.Nonymous
 
Je suppose que le champ "date" est un VARCHAR et non un champ DATE ou DATETIME (voir même TIMESTAMP)
Puisqu'il s'agit d'un VARCHAR, c'est un tri alphabétique qui est effectué.
0
Utilisateur anonyme
 
Bonsoir

J'étais en train d'écrire la même chose...

J'ajoute :

Comme ta date aura alors le format yyyy-mm-jj, il faudra la mettre en forme pour la récupérer :
"SELECT *,DATE_FORMAT(date,"%d-%m-%y") datef FROM exif WHERE dossier='$doss' ORDER BY date ASC, heure ASC"
0
audi68 Messages postés 571 Date d'inscription   Statut Membre Dernière intervention   9
 
merci de votre reponse

Le champ date est un VARCHAR dois je lui donner un autre champs?

Ma date est sous la forme correct c est a dire 19/05/2012

Merci de votre aide
0
A.Nonymous
 
Le champ 'date' doit en effet avoir un autre type de champ, tel que DATE ou DATETIME.
Plutôt que d'avoir un champ 'date' et un champ 'heure', l'information serait stockée directement dans ce nouveau champ.
Attention à bien former la valeur au moment de l'INSERT. Classiquement, le format attendu est "2012-06-13 19:55:45"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
audi68 Messages postés 571 Date d'inscription   Statut Membre Dernière intervention   9
 
merci de ta reponse

Donc apres pour l affichage correct je fais un explode de la date

et pour le tri croissant je fais comment?

merci de ton aide
0
Utilisateur anonyme
 
Pas besoin de faire un explode, je t'ai déjà donné la requête :
"SELECT *,DATE_FORMAT(date,"%d-%m-%y") datef FROM exif WHERE dossier='$doss' ORDER BY date ASC, heure ASC"

Ça fait à la fois le tri (ORDER BY) et la mise en forme (DATE_FORMAT) - utilise %y ou %Y suivant que tu veux 2 ou 4 chiffres (au début tu en montrais 2, maintenant tu en montres 4...)
[edit] DATE_FORMAT(date,"%d/%m/%y") si tu veux des slash plutôt que des tirets
0
audi68 Messages postés 571 Date d'inscription   Statut Membre Dernière intervention   9
 
merci de ta reponse

Par contre j ai modifier le champ j ai mis datetime

donc je n utilise plus le champ heure

et pour afficher l heure je fait coimment pas de explode?

merci de ton aide
0
Utilisateur anonyme
 
donc je n utilise plus le champ heure
et pour afficher l heure je fait coimment

Tu n'utilises plus le champ heure et tu veux afficher l'heure ?
J'ai du mal à comprendre....

La fonction DATE_FORMAT marche aussi bien sur un champ de type date ou datetime. Et tu as le droit de lire toi-même la doc de mysql pour voir toutes les variantes de format possibles si tu veux afficher l'heure, maintenant que je t'ai indiqué quelle était la bonne fonction.
0
audi68 Messages postés 571 Date d'inscription   Statut Membre Dernière intervention   9
 
Tu n'utilises plus le champ heure et tu veux afficher l'heure ?

Si j utilise encore l heure mais lors de l insertion dans ma base je l enregistre sous cette forme
aaaa-mm-jj 00:00:00

donc c est pour ca que je demande comment afficher

si je fais tous simple

$req = mysql_query("SELECT * FROM exif WHERE dossier='$doss' ORDER BY date ASC"

l affichage n est pas correct il mais dans l order des jours et ne tiens pas compte du mois

Merci de ta reponse
0
Utilisateur anonyme
 
Si ton champ date est bien du type datetime alors si, cette requête ordonne correctement les dates. Il n'y a pas de doute là-dessus.
Et la requête
"SELECT *,DATE_FORMAT(date,"%d-%m-%Y") datef FROM exif WHERE dossier='$doss' ORDER BY date ASC"

t'affiche bien les dates rangées par ordre croissant sous la forme jj-mm-aaaa
0
audi68 Messages postés 571 Date d'inscription   Statut Membre Dernière intervention   9
 
merci de ta reponse mais il me donne c et erreur

Parse error: syntax error, unexpected '%' in

oui j affiche bien mes dates comme jj.mm.aaaa

merci de ton aide
0
Utilisateur anonyme
 
peux-tu montrer le script - enfin la partie autout de la requête et l'appel à mysql ?
0
audi68 Messages postés 571 Date d'inscription   Statut Membre Dernière intervention   9
 
ci joint la requete

<?php

// On récupère le contenu de $_GET dans l'adresse, soit ce qu'il y a après page.php3?dossier=
$doss=$_GET['dossier'];

$dir_nom = $doss; // dossier listé (pour lister le répertoir courant : $dir_nom = '.' --> ('point')


echo "<h2> $dir_nom </h2>\n\n";
echo "\t\t<ul>\n";
include('config.php');
$req = mysql_query("SELECT *,DATE_FORMAT(date,"%d-%m-%Y") datef FROM exif WHERE dossier='$doss' ORDER BY date ASC") or die(mysql_error()); // Requête SQL
while($dnn = mysql_fetch_array($req))
{
?>
<li> <a href=" <?php echo $dir_nom;?>/big/<?php echo $dnn['image'];?>" rel="prettyPhoto[gallery2]" title="Le <?php echo $dnn['date'];?> à <?php echo $dnn['heure'];?> "><img src="<?php echo $dir_nom;?>/<?php echo $dnn['image'];?>" alt="Photo prise le <?php echo $dnn['date'];?> à <?php echo $dnn['heure'];?> par <?php echo $dnn['personne'];?> ""/></a></li>
<?php
}
mysql_close();
?>

merci
0
Utilisateur anonyme
 
Ok, je n'avais pas fait attention aux " et aux '. C'est une erreur énorme, étonnant que personne ne l'ait déjà siganlée - à commencer par toi.
$req = mysql_query("SELECT *,DATE_FORMAT(date,'%d-%m-%Y') datef FROM exif WHERE dossier='$doss' ORDER BY date ASC") or die(mysql_error()); // Requête SQL 
0
Utilisateur anonyme
 
pour l'affichage de la date, il vaudra mieux utiliser $dnn['datef'] si tu veux le bon format.
0
audi68 Messages postés 571 Date d'inscription   Statut Membre Dernière intervention   9
 
merci de ta reponse si j avais essayé avec les ' ' mais le probleme c est que les 1er resultat il m affiche 0000-00-00 à 21h30 l heure est juste mais pas la date
0
audi68 Messages postés 571 Date d'inscription   Statut Membre Dernière intervention   9
 
erreur de ma part

Ca fonctionne niquel j avais une erreur dans mon tableau .........

Merci beaucoup pour ton aide tu est super!!!

@+
0
Utilisateur anonyme
 
Qu'y a-t-il en fait dans ton champ date ? Tu peu le vérifier avec phpmyadmin ? Car je viens d'essayer chez moi et ça marche.
Quel est le TYPE du champ date ? et celui du champ heure ?
Pourquoi as-tu un champ heure séparé du champ date, c'est contraire à toute logique.
0
Utilisateur anonyme
 
je viens de voir ta réponse, tant mieux si ça marche
0