affichage produit BDD suite formulaire

Eléphanteau du PHP | 28 Messages

10 janv. 2023, 13:47

Bonjour,
J'ai comme projet de proposer une réservation de véhicules et de salle au sein de ma société
ne trouvant aucun plugin sur WordPress qui correspond à mon chef , je dois donc le développer .
Les salles et véhicules peuvent etre loué selon le désire de l'agent ( 1,2 6 h ou mm sur une journée voir plus )
un peu dans le style

https://www.parisaeroport.fr/
https://zenpark.com/


J'ai donc créer une BDD ( je ne sais pas si ma logique est bonne)
Image

Code : Tout sélectionner

<?php require_once('db-connect.php'); // on va chercher les articles de la base //différentes requêtes pour affichage des salles et des véhicules $sql = "SELECT * FROM salle"; $sql2 = "SELECT * FROM voitures"; $requete = $conn->query($sql); $requete2 = $conn->query($sql2); // var_dump($requete); if (!empty($_POST)) { // // Debug // echo '<pre>'; print_r($_POST); echo '</pre><br />'; } //on récupère toutes les données //variables $lieu = ""; $type = ""; ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Calendrier de réservation</title> <link rel="stylesheet" href="./css/styles.css"> </head> <body> <!--affichage de la barre de recherche --> <div class=""> <fieldset> <form action="" method="post" id=""> <fieldset> <legend>Où:</legend> <!-- <div> <input type="checkbox" id="contest" name="contest"> <label for="contest">St Contest</label> </div> <div> <input type="checkbox" id="orme" name="orme"> <label for="horns">Orme</label> </div> <div> <input type="checkbox" id="LM" name="LM"> <label for="horns">LM</label> </div> <div> <input type="checkbox" id="LE" name="LE"> <label for="horns">LE</label> </div> --> <div class=""> <label for="lieu"></label> <select name="lieu" class="" id="lieu"> <option <?php if ($lieu == 'LFD') { echo 'selected'; } ?>>LFD</option> <option <?php if ($lieu == 'LM') { echo 'selected'; } ?>>LM</option> <option <?php if ($lieu == 'LE') { echo 'selected'; } ?>>LE</option> <option <?php if ($lieu == 'Orme') { echo 'selected'; } ?>>Orme</option> </select> </div> </fieldset> <!-- <div class=""> <label for="start_date" class="">Début</label> <input type="date" class="" name="start_date" id="start_date" placeholder="date de début" required> </div> <div class=""> <label for="start_datetime" class=">Heure</label> <input type="time" class="" name="start_datetime" id="start_datetime" placeholder="Heure de début" required> </div> <div class=""> <label for="end_date" class="">Début</label> <input type="date" class="" name="end_date" id="end_date" placeholder="date de fin" required> </div> <div class=""> <label for="end_datetime" class="">Heure</label> <input type="time" class="" name="end_datetime" id="end_datetime" placeholder="heure de fin" required> </div> --> <fieldset> <legend>Jour et heure de réservation</legend> <div class=""> <label for="start_datetime" class="">Début</label> <input type="datetime-local" class="" name="start_datetime" id="start_datetime"> </div> <div class=""> <label for="end_datetime" class="">Fin</label> <input type="datetime-local" class="" name="end_datetime" id="end_datetime"> </div> </fieldset> <fieldset> <legend>Types de reservations:</legend> <!-- <div> <input type="checkbox" id="vehicule" name="vehicule"> <label for="véhicule">Véhicules</label> </div> <div> <input type="checkbox" id="salle" name="salle"> <label for="salle">Salle</label> </div> --> <div class=""> <label for="type"></label> <select name="type" class="" id="type"> <option <?php if ($type == 'vehicule') { echo 'selected'; } ?>>véhicules</option> <option <?php if ($type == 'salle') { echo 'selected'; } ?>>salle</option> </select> </div> </fieldset> <br> <div class=""> <div class=""> <input type="submit" value="rechercher"> </div> </form> </div> </fieldset> </div> <!--on va afficher les articles de la base--> <article> <?php while ($ligne = $requete->fetch_assoc()) { if ($lieu == $ligne['lieu']) { //fetch ne marche pas ici echo $ligne['Nom'] . '<br>' . $ligne['lieu'] . '<br>'; echo '<button>réserver</button><br><br>'; } else { echo 'erreur'; } } // while ($test = $requete2->fetch_assoc()) { // echo $test['Marque'] . '<br>' . $test['Modele'] . '<br>' . $test['lieu'] . '<br><br><br>'; // echo '<button>réserver</button><br><br>'; // } ?> </article> </body> </html>
Je bloque sur l'affichage de mes produits des que je veux mettre une condition dans le style si tu sélectionne st Contest, tu m'affiche que les salles ou voiture avec st Contest.
Le plus dur dans cette histoire , c'est cette histoire d'heure de départ et d'arrivée.
ma réflexion n'est peut etre pas bonne en disant si rien n'existe avec ses horaires là dans la bdd, tu me les affiche

Si qq1 pourrai m'aiguiller ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9542 Messages

11 janv. 2023, 00:05

C'est un peu galère à coder mais pas impossible.
Toutefois avant toute chose 2 remarques :
1) si vous utilisez Exchange/Outlook ou Gmail/Google calendar comme outil de gestion d'agenda, le plus simple vu que ton usage semble être exclusivement de l'interne, est de créer des ressources que tu pourras réserver en les ajoutant dans ton agenda.
C'est une fonctionnalité ultra-standard et c'est le plus simple à l'usage vu que les utilisateurs sont identifiés d'office, en bonus pas besoin de faire de la maintenance.

2) il existe énormément de plugins Wordpress de réservation qui font ça très bien et avec des fonctionnalités plus avancées, honnêtement vous êtes sûr d'avoir fait vraiment le tour avant de vous dire que ça serait une bonne idée réinventer la roue ?

Prendre un développeur pour faire ça et le maintenir pour un usage purement interne en entreprise, c'est vraiment dommage. (Mais c'est ton boss qui décide ;) )
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 28 Messages

11 janv. 2023, 10:09

Oui, j'ai déjà testé une vingtaine de plugin.
Dans les plugins, on peux réserver des jours entiers, par slot établi par l'administrateur, par date de départ , etc...et non a la demande de l'agent ( si 1 veux réserver cette salle de 9 à 11h et que l'autre veux réserver de 11h a 17h)
J'ai contacté différents plugins payant sur thème forest et aucun ne propose une durée variable sur une réservation ( a moins qu'il y'en n'a 1 qui m'a échappé)
Le seul qui correspondais a 75 % c'est bukza sauf qu'il est pas RGPD.
Par la suite, il voudrait dématérialisé le carnet de route de chaque véhicules.
Si pas de véhicules dispo : voir si qq1 ne va pas déjà avec un véhicule et faire " du covoiturage".

Actuellement nous utilisons l'agenda de Outlook ( seul l'administrateur de la réservation a accès)sauf que il faut envoyer un mail pour réserver une salle ou une voiture, on ne sais pas d'avance si a la date demandé le véhicule ou la salle est disponible

Effectivement il s'agit d'une utilisation en interne, et il voudrait que je l'incorpore à l'intranet .

J'ai été embauché comme développeur dans cette société pour maintenir les 2 sites WordPress et apporter des nouvelles fonctionnalités sauf que j'ai jamais fait ceci avec des heures

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9542 Messages

12 janv. 2023, 00:27

Actuellement nous utilisons l'agenda de Outlook ( seul l'administrateur de la réservation a accès)sauf que il faut envoyer un mail pour réserver une salle ou une voiture, on ne sais pas d'avance si à la date demandé le véhicule ou la salle est disponible
Bah il suffit de regarder dans l'agenda Outlook de la ressource... Ou d'utiliser l'assistant de planification Outlook quand tu souhaites réserver un créneau si votre Exchange est bien paramétré.

Voilà le rendu que ça donne dans ma boite si je consulte le planning de notre salle de réunion "Salle du Conseil" :
Image
Pour y avoir accès, j'ai juste fait un clic droit sur Mes calendriers > Ajouter un calendrier > Depuis la liste des salles
Libre à toi d'appeler une salle Voiture rouge, Voiture bleu, Voiture blanche si tu veux faire pareil avec des voitures.

Et, quand tu veux réserver une voiture mais tu ignores laquelle est dispo, tu ajoutes un évènement dans ton agenda, en ajoutant les 3 voitures, puis tu cliques sur Assistant planification et il te dira quelles sont les voitures dispos sur quels créneaux, à toi de choisir la voiture qui correspond.


----
Une autre piste de plugin Wordpress si tu ne l'avais pas mis dans ta shortlist :
https://www.pluginhive.com/product/wooc ... ointments/
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 28 Messages

13 janv. 2023, 10:08

Je viens de tester celui que tu m'a indiquée
Celui ne fonctionne pas car je dois installer woo-commerce et avec mon thème y'a rien a faire pour woo-commerce;
woo-commerce déconne a fond :-)
Ca fait des mois que je me bats avec ce thème.

Par contre, je l'ai testé sur un autre site ( donc pas avec le mm thème) et aucun problème ni avec woo-commerce et avec ce plugin , effectivement si je veux les jours réglable et heure aux choix , faut passer par la version payantes

Je le garde sous le coup pour un autre site un jour si j'en n'ai besoin :-)