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

aminsaaa 2 Messages postés mercredi 8 novembre 2017Date d'inscription 8 novembre 2017 Dernière intervention - 8 nov. 2017 à 15:00 - Dernière réponse : amindev 19 Messages postés mercredi 15 novembre 2017Date d'inscription 20 novembre 2017 Dernière intervention
- 17 nov. 2017 à 11:59
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

32 réponses

jordane45 21439 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 juin 2018 Dernière intervention - 8 nov. 2017 à 15:37
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 2 Messages postés mercredi 8 novembre 2017Date d'inscription 8 novembre 2017 Dernière intervention - 8 nov. 2017 à 16:17
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
jordane45 21439 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 juin 2018 Dernière intervention - Modifié par jordane45 le 8/11/2017 à 19:29
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 21439 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 juin 2018 Dernière intervention > amindev 19 Messages postés mercredi 15 novembre 2017Date d'inscription 20 novembre 2017 Dernière intervention - 15 nov. 2017 à 16:15
Ben des données dans tes tables...pas juste la structure
amindev 19 Messages postés mercredi 15 novembre 2017Date d'inscription 20 novembre 2017 Dernière intervention > jordane45 21439 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 juin 2018 Dernière intervention - 15 nov. 2017 à 16:20
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 21439 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 juin 2018 Dernière intervention > amindev 19 Messages postés mercredi 15 novembre 2017Date d'inscription 20 novembre 2017 Dernière intervention - 15 nov. 2017 à 16:59
oui.
Je regarderai plus tard. Là je ne vais pas avoir le temps.
Bonne soirée.
amindev 19 Messages postés mercredi 15 novembre 2017Date d'inscription 20 novembre 2017 Dernière intervention > jordane45 21439 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 juin 2018 Dernière intervention - 16 nov. 2017 à 10:25
bonjour monsieur jordane,
j'attend ta reponce
amindev 19 Messages postés mercredi 15 novembre 2017Date d'inscription 20 novembre 2017 Dernière intervention - 15 nov. 2017 à 17:09
merci
Commenter la réponse de jordane45
jordane45 21439 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 juin 2018 Dernière intervention - 16 nov. 2017 à 11:04
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 19 Messages postés mercredi 15 novembre 2017Date d'inscription 20 novembre 2017 Dernière intervention > jordane45 21439 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 juin 2018 Dernière intervention - 16 nov. 2017 à 16:50
merci bcp
jordane45 21439 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 juin 2018 Dernière intervention > amindev 19 Messages postés mercredi 15 novembre 2017Date d'inscription 20 novembre 2017 Dernière intervention - 16 nov. 2017 à 17:48
Pense à mettre le sujet en résolu
amindev 19 Messages postés mercredi 15 novembre 2017Date d'inscription 20 novembre 2017 Dernière intervention > jordane45 21439 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 juin 2018 Dernière intervention - 17 nov. 2017 à 10:29
oui s'est résolu
jordane45 21439 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 juin 2018 Dernière intervention > amindev 19 Messages postés mercredi 15 novembre 2017Date d'inscription 20 novembre 2017 Dernière intervention - 17 nov. 2017 à 11:30
ben dans ce cas .... clique sur le lien 'METTRE EN RESOLU' qui se situe sous le titre de ta question
amindev 19 Messages postés mercredi 15 novembre 2017Date d'inscription 20 novembre 2017 Dernière intervention > jordane45 21439 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 21 juin 2018 Dernière intervention - 17 nov. 2017 à 11:59
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.