Probleme affichage sql php

Résolu/Fermé
audi68 Messages postés 571 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 - 12 juin 2012 à 22:53
 Utilisateur anonyme - 14 juin 2012 à 23:09
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

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
12 juin 2012 à 23:14
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 lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 9
13 juin 2012 à 18:13
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
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 lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 9
13 juin 2012 à 20:10
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
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 lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 9
13 juin 2012 à 22:35
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
13 juin 2012 à 23:35
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 lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 9
14 juin 2012 à 20:29
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
14 juin 2012 à 22:05
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 lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 9
14 juin 2012 à 22:38
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
14 juin 2012 à 22:43
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 lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 9
14 juin 2012 à 22:44
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
14 juin 2012 à 22:50
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
14 juin 2012 à 22:52
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 lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 9
14 juin 2012 à 22:56
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 lundi 7 janvier 2008 Statut Membre Dernière intervention 5 août 2015 9
14 juin 2012 à 22:59
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
14 juin 2012 à 23:06
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
14 juin 2012 à 23:09
je viens de voir ta réponse, tant mieux si ça marche
0