Steve TENZA
Intervient pour votre site internet
Facebook Me contacter Cookie
Télécharger
Noter:
4/5 (14)
Ajouté/Modifié le 2023-11-02
Visionné 24376 fois

Calendrier de réservation gratuit

Description



J'ai créé ce script de réservation pour qu'il soit utile et facile à utiliser, il s'adaptera à votre CSS sans souci.

Parmi bien d’autres possibilités, son intégration offre de multiples usages, comme gérer les réservations et la disponibilité des hébergements d'hôtel, lodge, gîte et faciliter les réservations de locations saisonnières.

Si vous avez besoin d'aide pour personnaliser le script selon vos besoins particuliers, j'ai ajouté des commentaires PHP pour vous guider tout au long du processus de configuration.

Pour une manière plus avancée de gérer les réservations en ligne et de gérer vos dates disponibles, vous souhaiterez peut-être consulter mon script de calendrier plus avancé. Il dispose de fonctionnalités avancées pour rendre la gestion de vos réservations plus facile. Découvrez comment cet outil impressionnant peut vous aider à répondre à tous vos besoins de réservation.

CREATE TABLE IF NOT EXISTS `calendrier` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
<?php

//page : calendrier.php

//mettre ici votre mot de passe pour gérer le calendrier
$MotDePasse = 'votremotdepasse';

//pour maintenir la session active
session_start();

//connexion à la base de données
$BDD = [];
$BDD['host'] = "localhost";
$BDD['user'] = "root";
$BDD['pass'] = "";
$BDD['db'] = "calendrier";//nom base de données

$mysqli = mysqli_connect($BDD['host'], $BDD['user'], $BDD['pass'], $BDD['db']);
if(!$mysqli)
exit("Connexion MySQL non &eacute;tablie.");


// Module de Connexion/Déconnexion simplifié.
// Vous pouvez adapter une variable de session de votre site afin de supprimer ce module

//mettre ici le nom de $_SESSION de votre site quand l'administrateur est connecté
$NomDeSessionAdmin = 'nomdesession';

//pour vous connecter, entrez votresite.tld/calendrier.php?connexion=votremotdepasse
if(isset($_GET['connexion'])){
if($_GET['connexion'] == $MotDePasse){
$_SESSION[$NomDeSessionAdmin] = 1;
echo "<p>Connecté avec succès !</p>";
}
}
if(isset($_GET['deconnexion'])){
unset($_SESSION[$NomDeSessionAdmin]);
echo "<p>Déconnecté avec succès !</p>";
}
if(isset($_SESSION[$NomDeSessionAdmin])){
echo '<p><a style="letter-spacing:0.5px;" href="?deconnexion">Déconnexion</a></p>';
}

//Fin du module de Connexion/Déconnexion


// Début du code PHP pour générer le calendrier
$jours = [
1 => 'Lu',
2 => 'Ma',
3 => 'Me',
4 => 'Je',
5 => 'Ve',
6 => 'Sa',
0 => 'Di'
];

//si on souhaite afficher une autre année, on l'affiche si elle est correcte
if(isset($_GET['annee']) AND preg_match("#^[0-9]{4}$#",$_GET['annee']))
$annee = $_GET['annee'];
else
$annee = date('Y');//si non, on affiche l'année actuelle

$nombre_de_jours_dans_le_mois = [];
for($mois = 1; $mois <= 12; $mois ++){
$nombre_de_jours_dans_le_mois[$mois] = date('t', mktime(1, 1, 1, $mois, 2, $annee));
$premier_jour_du_mois[$mois] = date('w', mktime(5, 1, 1, $mois, 1, $annee));
}

$style_reserve = 'background:#F33;color:white;';
$style_disponible = 'background:#88FF88;';
?>
<table id="recap">
<tr>
<td style="<?= $style_reserve ?>width:15px;height:15px;"></td><td>Réservé</td>
</tr>
<tr>
<td style="<?= $style_disponible ?>width:15px;height:15px;"></td><td>Disponible</td>
</tr>
</table>
<?php
if(isset($_SESSION[$NomDeSessionAdmin])){

if((isset($_GET['jour']) && preg_match("#^[0-9]{1,2}$#", $_GET['jour']))
&& (isset($_GET['mois']) && preg_match("#^[0-9]{1,2}$#", $_GET['mois']))
&& (isset($_GET['choix']) && preg_match("#^(0|1)$#", $_GET['choix']))){

if($_GET['choix'] == 1){

$date_selectionnee = $annee . '-' . $_GET['mois'] . '-' . $_GET['jour'];

if(mysqli_query($mysqli,"INSERT INTO calendrier SET date='$date_selectionnee'")){
echo "Journée passée en \"réservé\" avec succès !";
} else {
echo "Une erreur s'est produite:<br>".mysqli_error($mysqli);
}
} else {
if(mysqli_query($mysqli,"DELETE FROM calendrier WHERE date='$date_selectionnee'")) {
echo "Journée passée en \"disponible\" avec succès !";
} else {
echo "Une erreur s'est produite:<br>".mysqli_error($mysqli);
}
}
}
}
$style_th="text-shadow:1px 1px 1px #000;color:white;width:75px;border-right:1px solid black;border-bottom:1px solid black;";
$style_border_bottom = 'border-bottom:1px solid #eee;';
?>
<table style="border:1px solid black;border-collapse:collapse;box-shadow: 10px 10px 5px #888888;">
<caption style="font-size:18px;"><a href="?annee=<?= $annee-1 ?>" style="font-size:50%;vertical-align:middle;text-decoration:none;"><?= $annee-1 ?></a> <?= $annee ?> <a href="?annee=<?= $annee+1 ?>" style="font-size:50%;vertical-align:middle;text-decoration:none;"><?= $annee+1 ?></a></caption>
<tr style="border-right:1px solid black;">
<th style="<?= $style_th ?>background:#FF3333">Janvier</th>
<th style="<?= $style_th ?>background:#FF9933">Février</th>
<th style="<?= $style_th ?>background:#FFF833">Mars</th>
<th style="<?= $style_th ?>background:#A7FF33">Avril</th>
<th style="<?= $style_th ?>background:#3EFF30">Mai</th>
<th style="<?= $style_th ?>background:#30FF83">Juin</th>
<th style="<?= $style_th ?>background:#33FFEB">Juillet</th>
<th style="<?= $style_th ?>background:#33A7FF">Août</th>
<th style="<?= $style_th ?>background:#3341FF">Septembre</th>
<th style="<?= $style_th ?>background:#8636FF">Octobre</th>
<th style="<?= $style_th ?>background:#F133FF">Novembre</th>
<th style="<?= $style_th ?>background:#FF33A7">Décembre</th>
</tr>
<tr>
<?php

for($mois = 1; $mois <= 12; $mois ++){

for($jour = 1; $jour <= $nombre_de_jours_dans_le_mois[$mois]; $jour ++){

if($jour == 1){

echo '<td style="vertical-align:top;border-right:1px solid black;">
<table style="width:100%;border-collapse:collapse;">';

//0 = dimanche, 6 = samedi
$jour_de_la_semaine0_6 = $premier_jour_du_mois[$mois];

}

$req = mysqli_query($mysqli, "SELECT * FROM calendrier WHERE date='{$annee}-{$mois}-{$jour}'");

$jour_reserve = false;
$style = $style_disponible;
$texte = 'Mettre en Réservé';
if(mysqli_num_rows($req) > 0){
$jour_reserve = true;
$style = $style_reserve;
$texte = 'Mettre en Disponible';
}
$style_fin_de_semaine = '';
if($jour_de_la_semaine0_6 == 0)
$style_fin_de_semaine = 'border-bottom: 2px solid #797979 !important;';
?>
<tr style="<?= $style_fin_de_semaine ?>font-family:monospace;cursor:default">
<td style="<?= $style . $style_border_bottom?>"><?= $jours[$jour_de_la_semaine0_6] ?></td>
<td style="<?= $style . $style_border_bottom?>width:20%;text-align:right;"><?= $jour ?></td>
<?php

if(isset($_SESSION[$NomDeSessionAdmin])){
?>
<td style="<?= $style . $style_border_bottom?>"><a href="?jour=<?= $jour ?>&amp;mois=<?= $mois ?>&amp;annee=<?= $annee ?>&amp;choix=<?= $jour_reserve ? 0 : 1 ?>#recap"><img src="images/<?= $jour_reserve ? 1 : 0 ?>.png" alt="[<?= $jour_reserve ? 'x' : '+' ?>]" style="width:13px;" title="<?= $texte ?>"></a></td>
<?php
}
?>
</tr>
<?php
if($jour_de_la_semaine0_6 == 6)
$jour_de_la_semaine0_6 = 0;
else
$jour_de_la_semaine0_6 ++;

if($jour == $nombre_de_jours_dans_le_mois[$mois]){
echo '</table>
</td>';
}
}
}
?>
</tr>
<tr>
<td colspan="12" style="display:none;text-align:right;font-size:10px">Calendrier par <a href="//www.c2script.com" rel="nofollow">C2Script.com</a></td>
</tr>
</table>

Un test du script peut être fait ici : Test calendrier

Vous pouvez télécharger directement le script ici :

Calendrier-c2script.zip
(Téléchargé 2295 fois)



J'espère que ce script gratuit vous est utile.
Pour soutenir mon travail, un simple don ou mettre une note est grandement apprécié.
Votre réussite en ligne commence ici

Vous cherchez à pousser encore plus loin vos idées ou à les concrétiser avec un site internet sur mesure ? Je suis là pour vous aider ! Mon expérience en développement web est à votre disposition.

Que ce soit la création de votre site web pro ou l'apport de fonctionnalités avancées à votre projet, contactez-moi pour en discuter et avoir un devis gratuit personnalisé.

Mon objectif est de vous offrir des solutions sur mesure qui répondent à vos besoins, et votre vision associée à mon expertise donnera vie à votre projet web parfait. Contactez-moi aujourd'hui, je réponds en général en moins d'une heure :

Demander un devis
Réponse rapide !

Vous recherchez un script précis ?

Dites-moi ce dont vous avez besoin, je peux développer le script demandé et vous envoyer un mail dès qu'il est dispo !

🔔 Vous pouvez laisser votre mail pour recevoir les nouveaux scripts. Pas de pub, pas de tracas. Vous êtes libre de le supprimer à tout moment.

Je prends en compte toutes les demandes. Les idées les plus populaires passent en priorité et seront publiées dès qu'elles seront prêtes. 2874 demandes reçues.

Si vous avez un projet en tête, je vous suggère de me contacter directement pour en discuter.

Commentaires

Ajouter un commentaire

Commenter
Pseudo/Nom
Email
Message
Captcha
memo2
Commenter

nunu88 le 03 Février 2018 à 10:21

bonjour, ou puis je voir un exemple de celui ci en ligne?
comment y mettre les dates de non disponibilités?
merci d'avance

admin le 03 Février 2018 à 20:28

Bonjour, j'ai rajouter un lien dans l'article pour tester le script.

manu le 01 Avril 2018 à 10:30

Bonjour j'ai installé celui ci, mais je rencontre 2 problèmes :
n'y a t'il pas une erreur dans
$BDD['host'] = "localhost";
$BDD['user'] = "root";
$BDD['pass'] = "";
$BDD['db'] = "calendrier"; <<<< ici >>>> ca ne devrait pas être le même nom que notre base et pas la table calendrier?
Autre problème quand je clique sur déconnexion, et je que regarde l'année 2017 , je vois toujours Déconnexion, même sur un autre pc....
Merci de de votre aide

manu le 01 Avril 2018 à 10:43

Bonjour, effectivement même si j'essaye de regarder la page depuis un autre pc, juste ouvrir la page, il y a le signe + pour ajouter une date sur tous les jours, sans être logger?
merci de votre aide

admin le 01 Avril 2018 à 18:53

Bonjour,

$BDD['db'] = "calendrier";

:correspond au nom de la data base (base de données), le nom de la table s'écrit dans les requêtes MySQL.

admin le 01 Avril 2018 à 18:56

Pour l'erreur de connexion, c'est seulement de votre côté.

Titi le 28 Avril 2019 à 14:46

Super !
Je viens de débuter une formation en PHP, et je voulais mettre un calendrier dans une annonce (un projet de site de location)
Ton code va grandement m'aider à voir comment faire !
Merci de partager ! *pouce en l'air*

admin le 28 Avril 2019 à 15:55

Merci pour votre commentaire :)

Christophe le 07 Novembre 2020 à 11:11

Bonjour,après l'installation de votre script,sans être logué,les visiteurs peuvent enregistrer des dates? il y a le + sur la page! comment supprimer ce problème? merci de votre aide.

admin le 07 Novembre 2020 à 14:29

Bonjour, non ils ne peuvent pas sans mot de passe, déconnectez vous et vous verrez que vous ne pouvez y accéder.

Christophe le 08 Novembre 2020 à 10:58

Bonjour, je ne suis pas connecté, et j'ai essayé depuis un autre navigateur, les changements sont bien pris en compte, et il y a bien la croix verte pour bloquer le jour sur la page sans être connecté.....

Christophe le 08 Novembre 2020 à 11:07

Re bonjour, j'ai recopier le code plus haut au lieu de celui dans l'archive et ça fonctionne.....
Merci pour ce script

Manu le 11 Décembre 2020 à 20:16

Bonjour, est ce qu'il est possible de l'adapter pour les smartphones? car quand je regarde, on ne voit pas le calendrier en entier! Montrer que 6 mois par 6 mois comme sur les années en bas de celui ci!
Merci pour votre aide

admin le 12 Décembre 2020 à 12:27

Oui, une solution serait de le mettre dans une div qui puisse être bouger de gauche à droite, comme par exemple: https://www.w3schools.com/howto/howto_css_table_responsive.asp - How TO - Responsive Tables

Manu le 13 Décembre 2020 à 18:45

j'ai essayé, mais sans succés, je ne l'ai peut être pas mis au bon endroit ?

Manu le 13 Décembre 2020 à 18:55

Après plusieurs test ça fonctionne! mais le problème c'est juste que la barre de défilement n'est pas affichée! existe t'il un moyen de la faire apparaitre ?
merci pour votre super travail

admin le 13 Décembre 2020 à 19:36

Veillez à bien mettre overflow-x: auto; (le mettre en "!important" peut être, si jamais votre site à d'autres règles qui casse le overflow-x)

Vous pouvez voir la console avec F12 (Sur Firefox mais je penses que c'est la même touche pour les autres navigateurs connus) et repérer les valeurs CSS de la div sensée mettre la barre de défilement si elles sont pas grisées.

Manu le 15 Décembre 2020 à 15:23

Merci beaucoup, ça fonctionne maintenant!
Depuis le temps que je recherchais un script comme celui la!
Bravo à vous!

servUN02 le 04 Mars 2021 à 11:02

bonjour,
Le script semble bien construit. Merci de le rendre dispo a tous.
J'ai créé ma table 'calendrier' dans ma bdd en mettant 2 colonnes. Quand je coche une date sur ma page php toute l'année se réserve... Que faire dans la bdd pour que cela ne prenne qu'une seule date stp ? (je suis novice)
Merci d'avance.

admin le 04 Mars 2021 à 18:30

Bonjour, avez vous copié/collé le code SQL dans votre phpmyadmin ?

servUN02 le 04 Mars 2021 à 18:33

J'ai trouvé oui, en le collant. J'avais des souvenirs lointains de phpmyadmin, j'ai dû m'y remettre... Merci pour la réponse.

admin le 04 Mars 2021 à 18:40

OK, super! bonne continuation!

doudou5788 le 02 Avril 2021 à 11:44

Bonjour à tous, j'ai 41 ans et je suis en formation de développeur web et web mobile à l' AFPA de Nancy et j'ai besoin, pour mon stage, d'un calendrier ( côté administrateur ) ...je vais essayer celui ci...

Kocia le 14 Juin 2022 à 20:46

Je ne comprends pas comment ça marche.
J'ai bien le calendrier etc mais je ne comprends pas comment reserver une date.
Merci pour l'aide

admin le 15 Juin 2022 à 14:47

La réservation d'une date se fait quand vous êtes connecté en tant qu'admin, vous cliquez sur une date pour la réserver/dé-réserver, afin d'en informer vos visiteurs.

Les commentaires du script vous aideront.

Kocia le 07 Décembre 2022 à 18:11

Bonjour, tout marche mais j'ai quand même un petit soucis : quand je lance ma page coté administrateur, en bas des mois mais en haut des dates, des guillemets apparaissent (une vingtaine). Je ne sais comment les enlever.
Avez-vous une solution ?

admin le 07 Décembre 2022 à 18:14

Envoyez moi une capture via la page contact (contactez-moi et je vous réponds pour que vous puissiez m'envoyer une PJ)

Kocia le 07 Décembre 2022 à 18:37

Je vois pas le moyen de vous envoyer une capture d'ecran

Kocia le 07 Décembre 2022 à 18:37

j'ai mal lu le message sorry

Akasha le 26 Janvier 2023 à 11:14

Je me demande où je peux voir mon calendrier en html car j’ai pourtant copié le code mais après je me demande ce qu’il faut faire pour le faire apparaître sur ma page

admin le 26 Janvier 2023 à 11:17

Il vous faut une base de données MySQL pour enregistrer les réservations.

Jean-Marc le 12 Juillet 2023 à 13:32

Concernant le problème des 31 double-guillemets qui apparaissent en mode "admin" après la première ligne (liste des mois), il faut supprimer celui qui est à la toute fin de la ligne n°125 après le </td>/

admin le 12 Juillet 2023 à 13:35

Merci de me l'avoir signalé, je vais le corriger rapidement !

alain le 16 Avril 2024 à 12:46

bonjour

impossible de créer la base de données 'calendrier', je n'ai que des erreurs avec la saisie
y a t'il une possibilité d'en avoir une deja prete ?

admin le 16 Avril 2024 à 12:48

Quelle erreur rencontrez-vous, quelque chose s'affiche à l'écran comme message d'erreur PHP ?

ousmane le 25 Septembre 2024 à 22:29

Bonjour j'ai un soucis lorsque je clique sur le + je peux réserver mais je ne peux pas le rendre disponible par la suite comme sur le lien d'exemple

admin le 25 Septembre 2024 à 23:18

Ya til une erreur ou un message ? Vérifiez que le fichier soit bien transféré sur le serveur, sans qu'il soit compressé par votre FTP du à un transfert "non binaire".

ousmane le 27 Septembre 2024 à 06:38

Vous voulez dire quoi par transfert non binaire ? Le fichier est bien présent sur le ftp. Merci

admin le 27 Septembre 2024 à 09:55

Présent est une chose, bien transféré en est une autre.

Si votre mode de transfert n'est pas en binaire, le contenu du fichier sera compressé sur une ligne, ce qui aura pour effet de créer des erreurs, dans le code.

Allez dans les paramètres de votre FTP : "mode de transfert" > "binaire".

Retour à la liste des scripts

Un site à créer ?
Contactez-moi