Format de date pour recherche dans BDD

Résolu/Fermé
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 - 2 oct. 2008 à 19:33
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 - 2 oct. 2008 à 23:34
Bonjour,

Je suis en train de développer un petit programme en PHP.
J'essai actuellement de faire une recherche par date. La date est entré dans un champs de texte et est dans un format jjmmaaaa.
Mon code de recherche est le suivant:
$sql = 'SELECT * FROM dk_travaux WHERE date LIKE '.$_SESSION["date"].'';

Jusque là aucun problème.
Le seul problème est quand je tape dans ma recherche une date qui commence par 01.... par exemple. Après plusieurs test, je remarque que visiblement le 0 n'est pas pris en compte. Du cout, impossible d'afficher la ligne correspondante à la date. Tout le reste s'affiche, quelle que soit la date, exepté les date commencant pas 0.
Dans ma base de donnée, la colonne est de type text.

Merci d'avance pour votre aide.
Tout ce passe ici: http://darkentworld.free.fr/travaux/index.html (allé sur la page recherche par: Date)
A voir également:

6 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
2 oct. 2008 à 22:20
Bonsoir,

le mieux serait que le champ date de ta table soit de type DATE plutôt que texte, donc sous la forme aaaa-mm-jj

et tu fais le SELECT en comparant avec une date aaaa-mm-jj

c'est aussi beaucoup plus facile pour faire des extractions > ou < ( AFTER ou BEFORE )
-1
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
2 oct. 2008 à 22:28
Ok mais la date est enregistré dans ma base de donnée via un formulaire avec un simple champ de texte de type input.
<input size="9" maxlength="8" name="date">

Donc comment l'entré ici correctement pour qu'elle soit correctement enregistré?
-1
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
2 oct. 2008 à 22:48
Dans ton formulaire soit tu suggères un format de date à l'utilisateur à coté de l'input
jj-mm-aaaa que tu transforme au passage par php avant d'enregistrer

soit tu mets 3 listes déroulantes jour mois annee et tu as ainsi les 3 parties de ta date que tu mets comme tu veux avant d'enregistrer dans la BDD
-1
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
2 oct. 2008 à 22:59
En fait j'ai fait la chose suivante:

$_SESSION["date"] = $_POST["date"];

list($day, $month, $year) = explode("/", $_SESSION["date"]);
$date = ''.$year.'-'.$month.'-'.$day.'';


Ma date est enregistré correctement.
Toutefois sur une autre page, j'ai un formulaire où j'entre une date (avec un input encore une fois) et je veux retrouvé dans ma base de donnée toute les dates correspondante.

J'ai donc ce code:
$_SESSION["date"] = $_POST["date"];

$sql = 'SELECT * FROM dk_travaux WHERE date LIKE '.$_SESSION["date"].'';


Avec une boucle j'affiche tout les résultats. J'ai fait ce code avec d'autres informations et ça marche très bien.
Toutefois ici il m'affiche la chose suivante:

Erreur SQL !
SELECT * FROM dk_travaux WHERE date LIKE 2008-10-02
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-10-02' at line 1
-1
djflexlive Messages postés 557 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 23 avril 2015 94
2 oct. 2008 à 23:10
Il attends '2008-10-02' et pas 2008-10-02

Essayes :

$_SESSION["date"] = $_POST["date"];

list($day, $month, $year) = explode("/", $_SESSION["date"]);

$date = $year.'-'.$month.'-'.$day;

echo $date;

$sql = ' SELECT * FROM dk_travaux WHERE date="%$date%" ';
-1

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

Posez votre question
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
2 oct. 2008 à 23:30
Après quelques légère modif, ça va mieux.
Le echo $date fonctionne et m'afiche la date correctement.

Toutefois, je n'arrive pas a afficher de résultats. Pourtant la date est bien dans ma base.
-1
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
2 oct. 2008 à 23:34
En fait c'est bon.

Suffisait d'un:
$sql = " SELECT * FROM dk_travaux WHERE date LIKE '%$date%' ";


Merci beaucoup pour ton aide en tout cas.
Problème résolu.
-1