PB BETWEEN

Eléphant du PHP | 223 Messages

01 juil. 2010, 17:26

Bonjour

j'ai toujour un blem avec se code
dans la base date debut 2010-08-01 date de fin 2010-08-31
si je fait

Code : Tout sélectionner

SELECT DISTINCT * FROM tarifs WHERE (Date_deb BETWEEN '2010-08-01 16:00:00' AND '2010-08-31 10:00:00') or (Date_fin BETWEEN '2010-08-01 16:00:00' AND '2010-08-31 10:00:00')
cela fonctionne nickel

mais par contre si je fait

Code : Tout sélectionner

SELECT DISTINCT * FROM tarifs WHERE (Date_deb BETWEEN '2010-08-10 16:00:00' AND '2010-08-17 10:00:00') or (Date_fin BETWEEN '2010-08-10 16:00:00' AND '2010-08-17 10:00:00')
cela marche plus
quelqun serais pk
merci

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

01 juil. 2010, 17:55

Ben oui aucune de tes dates ne rempli les conditions de la deuxième requête, alors qu'elles remplissent celles de la première.

Eléphant du PHP | 223 Messages

01 juil. 2010, 17:59

comment faire pour affiche la periode qui se trouve entre les date de la requete

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

02 juil. 2010, 09:44

En mettant des dates qui sont situées entre les dates début et fin de ta requête...

Eléphant du PHP | 223 Messages

02 juil. 2010, 10:13

oui

par exemple resa du mois aout du 01/08 au 31/08

le client fait une requete du 14/08 au 21/08

comment faire pour que sa requete aboutisse
merci

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

02 juil. 2010, 10:22

Il va falloir en dire plus là, on comprend rien. A quoi correspond la recherche par rapport à la résa ?

Parceque pour l'instant c'est plutôt clair, si u cherches une date précise, il faut qu'elle soit comprise entre date début et date de fin. Si tu veux faire un truc plus élaboré, genre gérer des plages, il va falloir détailler un peu.

Eléphant du PHP | 223 Messages

02 juil. 2010, 10:39

le resa on des tarifs different suivant les date
par exemple

pour noel un tarif
pour nouvel an un tarif
pour vacance février un tarif
en février hors vacance un tarif
du 01/08 au 31/08 un tarif
ect .......

je voudrais que la requete client pour une periode m'afficje le bon tarif

sa doit etre plus clair la ( c'est vraie message avant pas du tous facile a comprendre desole)

merci

Mammouth du PHP | 672 Messages

02 juil. 2010, 10:52

Pour faire simple, je dirais :
Table TARIFS => Un enregistrement par jour.

Code : Tout sélectionner

Date_location;Tarif 01/01/2010;100 02/01/2010;50 ... 31/12/2010;100
Puis quand quelqu'un regarde pour une période, tu vas chercher dans TARIFS les dates correspondantes
SELECT * from TARIFS where Date_location between $date_debut and $date_fin;

Eléphant du PHP | 223 Messages

02 juil. 2010, 10:58

donc 365 tarifs ouf cela vas etre long car chaque année sa change

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

02 juil. 2010, 11:03

Et bien il te suffit d'adapter tes conditions :

date_debut_recherche_client between date_debut_base et date_fin_base
et/ou
date_fin_recherche_client between date_debut_base et date_fin_base

Tu auras la ou les périodes tarifaires correspondantes.

Mammouth du PHP | 672 Messages

02 juil. 2010, 11:19

donc 365 tarifs ouf cela vas etre long car chaque année sa change
J'ai parlé d'une solution simple, je n'ai pas dis que ce n'atait pas fastidieux :mrgreen:

Tu peux toujours faire un tarif par défaut. Si la date n'est pas dans la table, tu l'appliques.
Et un truc comme ça, tu l'automatise :P (genre, tu donnes la date de début de période, date de fin de période, tarif et PHP gère les X insertions...)

Une autre solution, c'est d'avoir une table TARIFS (Date_debut, Date_fin, Tarif). Mais au moment de la création de tes tarifs il faut bien penser à tester la cohérence (si tu as déjà la période 01/01 -> 31/03 il faut interdire la période 01/02 -> 15/02).
Mais dans ce cas,c'est plus complexe à gérer vu qu'une période de réservation peut couvrir une ou plusieurs périodes tarifaires.
En gros :
SELECT * from TARIFS where Date_debut <= $date_fin_reservation AND Date_fin >= $date_debut_reservation; 
Pour récupérer les périodes tarifaires. Ensuite, il faudra encore travailler dessus et détailler jour par jour pour calculer le tarif du séjour.

Eléphant du PHP | 223 Messages

02 juil. 2010, 11:54

est il possible de faire <= avec BETWEEN

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

02 juil. 2010, 12:43

est il possible de faire <= avec BETWEEN
regarde la doc de between

Eléphant du PHP | 223 Messages

02 juil. 2010, 15:42

Merci
c'est ok
j'ai diviser tous par mois et vacance cela fait 20 ligne donc sa vas et mis ton code
sa marche nikel

merci

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

02 juil. 2010, 16:23

J'ai rien compris...