Intervalle de dates en SQL (via PHP)
Résolu
Thore
-
Thore -
Thore -
Bonjour,
J'ai un problème qui me gène concernant la réalisation d'une requête SQL en PHP.
J'ai un formulaire qui contient deux inputs type date, et j'aimerai récupérer les dates entrées pour que, côté PHP et SQL, on puisse retirer toutes les informations entrées entre ces deux dates.
Je procède comme ça en PHP pour la requête :
- je récupère les données entrées via $_POST['NomInput']
- j'utilise regex pour convertir mes dates au format AAAA-MM-JJ (pour la BDD)
- j'insère ces données dans la requête (je fais un BETWEEN ... AND)
Et lorsque je valide et que je test, aucune donnée ne sort alors qu'il en existe bien...
Quelqu'un a une idée ?
Merci par avance
J'ai un problème qui me gène concernant la réalisation d'une requête SQL en PHP.
J'ai un formulaire qui contient deux inputs type date, et j'aimerai récupérer les dates entrées pour que, côté PHP et SQL, on puisse retirer toutes les informations entrées entre ces deux dates.
Je procède comme ça en PHP pour la requête :
- je récupère les données entrées via $_POST['NomInput']
- j'utilise regex pour convertir mes dates au format AAAA-MM-JJ (pour la BDD)
- j'insère ces données dans la requête (je fais un BETWEEN ... AND)
Et lorsque je valide et que je test, aucune donnée ne sort alors qu'il en existe bien...
Quelqu'un a une idée ?
Merci par avance
A voir également:
- Intervalle de dates en SQL (via PHP)
- Nombre de jours entre deux dates excel - Guide
- Easy php - Télécharger - Divers Web & Internet
- Via michelin carte - Télécharger - Transports & Cartes
- Expert php pinterest - Télécharger - Langages
- Logiciel sql - Télécharger - Bases de données
8 réponses
Ah oui, je l'ai encore oublié. ^^'
Je donne côté PHP :
J'ai testé le code en saisissant moi-même les dates dans le code (donc passer par un query), et la requête fonctionne, donc le problème est au passage des dates.
Je donne côté PHP :
$d_debut = $_POST['d_debut']; $d_fin = $_POST['d_fin']; // on récupère les dates $d_debut = preg_replace('#([0-3].)/([0-1].)/(2.{3})#', '$3-$2-$1', $d_debut); // on formate pour la BDD (AAA-MM-JJ) $d_fin = preg_replace('#([0-3].)/([0-1].)/(2.{3})#', '$3-$2-$1', $d_fin); $rep = $bdd->prepare('SELECT * FROM formulaire WHERE date BETWEEN :debut AND :fin'); $rep->execute(array('debut'=> $d_debut, 'fin' => $d_fin')); // puis je récupère dans un echo
J'ai testé le code en saisissant moi-même les dates dans le code (donc passer par un query), et la requête fonctionne, donc le problème est au passage des dates.
remplacez:
$rep->execute(array('debut'=> $d_debut, 'fin' => $d_fin'));
par
$rep->execute(array(':debut'=> $d_debut, ':fin' => $d_fin'));
$rep->execute(array('debut'=> $d_debut, 'fin' => $d_fin'));
par
$rep->execute(array(':debut'=> $d_debut, ':fin' => $d_fin'));
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
oui il y a un guillemet en plus :
$rep->execute(array(':debut'=> $d_debut, ':fin' => $d_fin')); //le guillemet à la fin
$rep->execute(array(':debut'=> $d_debut, ':fin' => $d_fin)); // ça c'est juste
$rep->execute(array(':debut'=> $d_debut, ':fin' => $d_fin')); //le guillemet à la fin
$rep->execute(array(':debut'=> $d_debut, ':fin' => $d_fin)); // ça c'est juste
Ah oui en effet, tout ça à cause d'un guillemet... Merci !
Mais maintenant que ça fonctionne, du moins que les dates sont prises en compte, quand j'exécute ma requête, ça me retourne rien du tout alors que j'ai du contenu dans ma BDD.
Une idée ? Pourtant j'ai bien fais attention de convertir mes dates au format anglais.
Mais maintenant que ça fonctionne, du moins que les dates sont prises en compte, quand j'exécute ma requête, ça me retourne rien du tout alors que j'ai du contenu dans ma BDD.
Une idée ? Pourtant j'ai bien fais attention de convertir mes dates au format anglais.