Format de date pour recherche dans BDD
Résolu
arthezius
Messages postés
3538
Date d'inscription
Statut
Membre
Dernière intervention
-
arthezius Messages postés 3538 Date d'inscription Statut Membre Dernière intervention -
arthezius Messages postés 3538 Date d'inscription Statut Membre Dernière intervention -
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:
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)
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:
- Format de date pour recherche dans BDD
- Format epub - Guide
- Format factory - Télécharger - Conversion & Codecs
- Format dat - Guide
- Hp usb disk storage format tool - Télécharger - Stockage
- Format apfs - Guide
6 réponses
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 )
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 )
Ok mais la date est enregistré dans ma base de donnée via un formulaire avec un simple champ de texte de type input.
Donc comment l'entré ici correctement pour qu'elle soit correctement enregistré?
<input size="9" maxlength="8" name="date">
Donc comment l'entré ici correctement pour qu'elle soit correctement enregistré?
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
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
En fait j'ai fait la chose suivante:
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:
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:
$_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
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%" ';
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%" ';
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question