je viens vers vous car j'ai un petite problème de requête SQL/PHP
Celle que j'ai faite fonctionne mais pas comme je veux, je me fais des nœuds au cerveau, je n'y parvient pas, je pense que c'est un problème de logique.
voici ma requête :
$select = 'SELECT *FROM jdb
WHERE
(date_jour=NOW() AND horaire<"23:59:00")
or
(date_jour=DATE_SUB(NOW(), INTERVAL 1 DAY) AND horaire>"08:00:00")
ORDER BY inter ASC' ;
et en fait ce que j'aimerai :
condition 1:
nous somme le 16/01/2019 : jusqu'à 7:59:00 j'aimerai que ma requête affiche toutes les saisies du
15/01/2019 8:00:00 au 16/01/2019 7:59:00
condition 2:
si nous sommes le 16/01/2019 8:00:00: alors j'affiche les saisies du 16/01/2019 jusqu’à 23:59:00
comme à minuit on change de jour, je repasse dans la condition 1
Tu es sûr de tes horaires ? Dans le cas n°1 ça va de 8 heures à 8 heures (intervalle de 24 heures), mais dans le cas n°2 ça va de huit heures à minuit (intervalle de 16 heures). Et sans ajouter 59 secondes à 23:59:00, tu risques de rater des entrées.
jai fais ceci et qui a l'air de fonctionner il faut que j'attende minuit pour la seconde condition lol
if (localtime()>="08:00:00") // si heure actuell >= a 8h
// selectionne les entrees de la date du jour a partir de 8h
$select = ' SELECT * FROM jdb
WHERE (date_jour=NOW() AND horaire>="08:00:00")
ORDER BY inter ASC';
else if (localtime()<"08:00:00") // si heure actuell < a 8h
// selectionne les entrees de la date du jour avant 8h ainsi que ceux de la veille a partir de 8h
$select = ' SELECT * FROM jdb
WHERE (date_jour=NOW() AND horaire<"08:00:00" and (date_jour=DATE_SUB(NOW(), INTERVAL 1 DAY) AND horaire>="08:00:00")))
ORDER BY inter ASC' ;
de 0h (inclus) à 8h (exclus) : tu veux la liste des données créées entre 8h la veille et maintenant
de 8h (inclus) à 24h (exclus) : tu veux la liste des données créées sur la date du jour
C'est bien cela ? (et c'est 8h ou 16h ? tu as changé entre temps ...)
Si oui, je suis plutôt de l'avis de Philodick, à savoir que le plus simple c'est quand même de faire ton test côté applicatif et d'y décider quelle requête exécuter ...
Si vraiment tu veux faire du SQL il faut un IF (ou un CASE selon tes goûts) dans ta clause WHERE :
//Gestion de l'affichage des enregistrements selon l'heure
$heure = date("H:i");
if($heure <"07:59:00")
{
$select = ' SELECT * FROM jdb
WHERE (date_jour = DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY) AND horaire >="08:00:00") OR (date_jour = NOW() AND horaire <"08:00:00")';
}
else
{
$select = ' SELECT * FROM jdb
WHERE date_jour= NOW() AND horaire >="08:00:00"
ORDER BY inter ASC' ;
}
Encore merci à tous de vos réponses
- Edité par ChristopheLeMeil 17 janvier 2019 à 22:27:37
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Pas d'aide concernant le code par MP, le forum est là pour ça :)
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.