Réservation - disponibilité de chambres entre deux dates [Résolu]

Messages postés
2
Date d'inscription
mercredi 8 novembre 2017
Dernière intervention
8 novembre 2017
-
Bonjour,
je ne sais pas vraiment comment m'y prendre pour contrôler la disponibilité des chambres
de telle date à telle date.
voila ma fonction et sa march juste pour la date d'arrivée et la date de d'épar mai entre les deux sa fonctionne pas

public function form_room_select($arrive = null,$dpart = null, $lang = null){
global $wpdb;
$option = "";

if(!empty($arrive)):
if(empty($lang))
$lang = "fr";

$arrive = new DateTime($arrive);
$arrive = $arrive->format('Y-m-d');

$dpart = new DateTime($dpart);
$dpart->modify('-1 day');
$dpart = $dpart->format('Y-m-d');

$sql = "SELECT `id_booking_setting` as id, `txt_".$lang."` as txt
FROM `{$wpdb->prefix}booking_setting`
WHERE `type_booking_setting` = 'chambre'
AND `id_booking_setting` not in (
SELECT `chambre_id_booking`
FROM `{$wpdb->prefix}booking`
WHERE class_booking != 'annuler'
and ( `date_arrivee_booking` between '".$arrive."' and '".$dpart."'
and DATE_ADD(`date_depart_booking`, INTERVAL -1 DAY) between '".$arrive."' and '".$dpart."' )
) group by `id_booking_setting`";
$rooms = $wpdb->get_results($sql);


if(!empty($rooms))
foreach($rooms as $ro)
$option .= "<option value='".$ro->id."/".str_replace(array("\\","'")," ",$ro->txt)."'>".str_replace("\\","",$ro->txt)."</option>";
endif;

return $option;
}


|-
| style="background-color:#fc8b2f;border: 1px solid transparent"| EDIT : Mise en forme du code en utilisant correctement les balises de code (la coloration syntaxique).


== Explications disponibles ici :ICI ==

Merci d'y penser dans tes prochains messages.
Jordane45
>
Afficher la suite 

Votre réponse

3 réponses

Messages postés
23641
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 décembre 2018
0
Merci
Bonjour,

Ton souci se situe donc au niveau de ta requête non ?
Dans ce cas... c'est dans le forum SQL qu'il aurait fallu poster...

Quoi qu'il en soit.. sans connaitre la structure de ta bdd ni avoir quelques exemples de données ... il nous sera difficile de te répondre.

Mais bon.. déjà.. pourquoi fais tu un DATE_ADD -1 jour sur le champ date_depart_booking... A moins que ça ne soit pour coller avec ta ligne de code php:
$dpart->modify('-1 day');

Et là.. pourquoi retirer un jour à ta variable $dpart ??



Et puis... une requête... ça commence par se tester DIRECTEMENT dans la bdd !
Tu ne l'utilises dans ton code php qu'une fois que tu t'es assuré qu'elle fonctionne....
http://codes-sources.commentcamarche.net/faq/10778-heidisql-tester-ses-requetes-sql
aminsaaa
Messages postés
2
Date d'inscription
mercredi 8 novembre 2017
Dernière intervention
8 novembre 2017
-
salut jordane
je suis pas un développeur , j'arrive pas de comprendre pourquoi je veux juste modifier cette partie de mon site site et j'arrive plus
Commenter la réponse de jordane45
Messages postés
23641
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 décembre 2018
0
Merci
Ca ne sert à rien d'ouvrir 10 fois la même question sur le forum...
Par contre..si tu veux de l'aide il nous faut ce que je t'ai demandé.... Un dump de ta bdd.



Cordialement, 
Jordane                                                                 
jordane45
Messages postés
23641
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 décembre 2018
> amindev
Messages postés
19
Date d'inscription
mercredi 15 novembre 2017
Dernière intervention
20 novembre 2017
-
Ben des données dans tes tables...pas juste la structure
amindev
Messages postés
19
Date d'inscription
mercredi 15 novembre 2017
Dernière intervention
20 novembre 2017
> jordane45
Messages postés
23641
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 décembre 2018
-
c'est ca ??
--
-- Déchargement des données de la table `wp_booking`
--

INSERT INTO `wp_booking` (`id_booking`, `nom_booking`, `email_bokking`, `tel_booking`, `chambre_nom_booking`, `chambre_id_booking`, `lang_booking`, `source_name_booking`, `source_id_booking`, `date_arrivee_booking`, `date_depart_booking`, `message_booking`, `state_booking`, `date_ajouter_booking`, `date_valider_booking`, `class_booking`) VALUES
(1, 'test1', 'test@test.com', '0635698574', 'Chambre Aloe Vera', 2, 'fr', 'test1', 4, '2017-11-01', '2017-11-07', 'kkkkhhhh', 'Annuler', '2017-11-01', '2017-11-07', ''),
(3, 'rrr', 'ahmed.amine.saaa@gmail.com', '0635698574', 'test chambre fr', 5, 'fr', 'dar souran tanger', NULL, '2017-11-02', '2017-11-09', '', 'Annuler', '2017-11-01', '2017-11-01', 'annuler'),
(4, 'jnj', 'jkbjk@jhj.com', '0635698574', 'Chambre Zinnia', 3, 'fr', 'dar souran tanger', NULL, '2017-12-01', '2017-12-07', 'hghj', 'Valide', '2017-11-01', '2017-11-07', 'valide'),
(6, 'test1', 'ahmed.amine.saaa@gmail.com', '0635698574', 'Chambre Aloe Vera', 6, 'fr', 'dar souran tanger', NULL, '2017-11-08', '2017-11-12', '', 'En attente', '2017-11-08', NULL, 'enattend'),
(7, 'tt', 'llll@llll.com', '0699554433', 'Chambre Aloe Vera', 6, 'fr', 'test1', 4, '2017-11-09', '2017-11-11', 'hhgh', 'Annuler', '2017-11-08', '2017-11-08', 'annuler'),
(8, 'jjjjj', 'gg@ggg.com', '0635698574', 'Chambre Aloe Vera', 6, 'fr', 'test1', 4, '2017-11-09', '2017-11-10', 'jjj', 'Annuler', '2017-11-08', '2017-11-08', 'annuler'),
(9, 'test2', 'ahmed.amine.saaa@gmail.com', '0635698574', 'Chambre Aloe Vera', 6, 'fr', 'Aux3portes tanger', NULL, '2017-11-20', '2017-11-26', 'kjl', 'Valide', '2017-11-15', '2017-11-15', 'valide');


-
-- Déchargement des données de la table `wp_booking_setting`
--

INSERT INTO `wp_booking_setting` (`id_booking_setting`, `type_booking_setting`, `txt_fr`, `txt_en`, `txt_es`, `type_msg`) VALUES
(1, 'email', 'ahmed.amine.saaa@gmail.com', NULL, NULL, NULL),
(4, 'source', 'test1', NULL, NULL, NULL),
(6, 'chambre', 'Chambre Aloe Vera', 'Aloe Vera Room', '', NULL),
(7, 'chambre', 'Chambre Arum', 'Arum Room', '', NULL),
(8, 'chambre', 'Chambre Iris', 'Iris Room', '', NULL),
(9, 'chambre', 'Chambre Jasmin', 'Jasmin Room', '', NULL),
(10, 'chambre', 'Chambre Laurier', 'Laurier Room', '', NULL),
(11, 'chambre', 'Chambre Zinnia', 'Zinnia Room', '', NULL);
jordane45
Messages postés
23641
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 décembre 2018
> amindev
Messages postés
19
Date d'inscription
mercredi 15 novembre 2017
Dernière intervention
20 novembre 2017
-
oui.
Je regarderai plus tard. Là je ne vais pas avoir le temps.
Bonne soirée.
amindev
Messages postés
19
Date d'inscription
mercredi 15 novembre 2017
Dernière intervention
20 novembre 2017
> jordane45
Messages postés
23641
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 décembre 2018
-
bonjour monsieur jordane,
j'attend ta reponce
amindev
Messages postés
19
Date d'inscription
mercredi 15 novembre 2017
Dernière intervention
20 novembre 2017
-
merci
Commenter la réponse de jordane45
Messages postés
23641
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 décembre 2018
0
Merci
Bonjour,

Déjà ... évite les UP .... ça ne sert à rien.
Les gens répondent lorsqu'ils le peuvent....

Ensuite, essaye ça :
SET @datearrivee = '2017-11-02';
SET @datedepart = '2017-11-09';


SELECT `id_booking_setting` as id, txt_fr as txt 
     FROM `wp_booking_setting` S
     WHERE `type_booking_setting` = 'chambre'
     AND `id_booking_setting` NOT IN (
            SELECT  `chambre_id_booking`
            FROM `wp_booking` B
            WHERE class_booking != 'annuler'
             AND ( @datearrivee between date_arrivee_booking AND DATE_ADD(date_depart_booking,INTERVAL +1 DAY)
              OR   @datedepart between date_arrivee_booking AND DATE_ADD(date_depart_booking,INTERVAL +1 DAY) )


Ca devrait donner ce que tu cherches.

NB: Teste DANS TA BDD directement......

Lorsque tu mettras ton code en php, il faudra retirer les deux premières lignes ( les SET ) et remplacer les variables
@datearrivee et @datedepart par tes variables php.

amindev
Messages postés
19
Date d'inscription
mercredi 15 novembre 2017
Dernière intervention
20 novembre 2017
> jordane45
Messages postés
23641
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 décembre 2018
-
merci bcp
jordane45
Messages postés
23641
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 décembre 2018
> amindev
Messages postés
19
Date d'inscription
mercredi 15 novembre 2017
Dernière intervention
20 novembre 2017
-
Pense à mettre le sujet en résolu
amindev
Messages postés
19
Date d'inscription
mercredi 15 novembre 2017
Dernière intervention
20 novembre 2017
> jordane45
Messages postés
23641
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 décembre 2018
-
oui s'est résolu
jordane45
Messages postés
23641
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 décembre 2018
> amindev
Messages postés
19
Date d'inscription
mercredi 15 novembre 2017
Dernière intervention
20 novembre 2017
-
ben dans ce cas .... clique sur le lien 'METTRE EN RESOLU' qui se situe sous le titre de ta question
amindev
Messages postés
19
Date d'inscription
mercredi 15 novembre 2017
Dernière intervention
20 novembre 2017
> jordane45
Messages postés
23641
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 décembre 2018
-
j'arrive pas de trouvé le lien 'METTRE EN RESOLU'
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.