J'ai un problème avec ma requête. Cela me donne le bon résultat pour certains cas et pour d'autres non, donc si quelqu'un pouvait me dire ce qu'il fallait changer, ce serait incroyable parce que je suis coincé avec ça depuis un certain temps maintenant. Voici mes données de table:requête MySQL comparaison DATE
Tableau reservation_logs:
log_id int(15) auto_increment Primary Unique
room_log int(10)
dt_from date
dt_until date
Tableau appartements:
apartman_id int(10) auto_increment Primary Unique
apartman_name int(10)
mon code php pour ce jour:
$date_from = 'text input date';
$date_until = 'text input date';
$myquery = ("SELECT * FROM reservation_logs WHERE room_log = '$apartman_id'
AND(((dt_from >= '$date_from' AND dt_from <= '$date_until')
AND (dt_until >= '$date_until' OR dt_until <= '$date_until')))");
maintenant je saisis quelques dates I Should obtenir apartman_id
correcte, si elle est occupée ou non. Voici le cas où cela fonctionne: lorsque $date_from
correspond au 1er jour du mois et $date_until
correspond au dernier jour du mois. Mais par exemple si je choisis les dates $date_from
est égale à la 16ème du mois et $date_until
est égal à la 17ème du mois, je reçois des résultats incorrects si la pièce est occupée à partir du 15 du mois jusqu'à ce que le 19 nous dise. J'espère que je ne me suis pas trop compliqué, je voulais juste que plus de gens se fassent une idée.
Ce n'est pas directement lié à votre question mais vous avez des vulnérabilités graves dans ce code que vous devriez absolument nettoyer. Assurez-vous de placer toutes les entrées dans votre requête dans mysql_real_escape_string() ou une fonction similaire. – Asaph
Ceci est juste pratique m8, il ne verra jamais le web je vous assure – ant
Gardez à l'esprit que, en interne, les colonnes de date comprennent à la fois la date et l'heure. Si vous vouliez sélectionner toutes les dates du 15 au 16 inclus, vous auriez besoin de dt> = 15 et dt <17ème (ie 16ème à 11: 59.59.999 PM ou plus tôt) –