IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Formulaire de réservation avec calcul automatique [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Formulaire de réservation avec calcul automatique
    Bonjour,

    Je dois réaliser un formulaire de réservation pour de la location d'engins à deux-roues qui calcule automatiquement le tarif que devra payer le client en fonction de trois critères :
    - le temps qu'il passera avec le véhicule (cela peut aller de quelques heures à quelques mois)
    - les heures pendant lesquelles il aura le véhicule en sa possession (certaines heures sont plus chères que d'autres, par exemple le soir)
    - les jours pendant lesquels il aura le véhicule en sa possession (certains jours, comme les jours fériés ou les dimanches, sont plus chers)
    Pour l'instant, tout ce que je sais faire avec certitude, c'est le calcul du nombre d'heures total passé avec le véhicule. Pour ce qui concerne les heures de la journée et les jours de l'année plus chers, je ne sais pas trop comment m'y prendre. Je suppose qu'il me faut créer un calendrier dans une base de données mysql, par contre pour faire communiquer le formulaire et la base de données je ne sais pas trop. De plus, le coup du calendrier résout le problème des jours plus chers mais pas forcément le problème des heures plus chères. Quelqu'un aurait-il une piste à me donner ?

    Merci beaucoup !

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Points : 216
    Points
    216
    Par défaut
    il y a beaucoup de boulot
    regarde déjà les tutos
    - sur les formulaires et comment récupérer leurs données avec php
    - sur mysql et comment faire des requêtes avec php

    c'est vrai que si les tarifs suivant les jours sont compliqués un petit calendrier ça fera pas de mal

    pour les heures plus chères
    dans ton formulaire tu devrais avoir l'heure de retrait et de retour logiquement... ça aide déjà pour calculer pour le premier et dernier jour
    et ensuite entre ce sont des jours complets logiquement


    ensuite ça dépend de la règle du calcul, (est ce que ça s'applique tout le temps ou juste sur les jours normaux...)


    je te conseille de :
    - bien écrire "mathétiquement/algorithmiquement" les différentes règles
    - peut etre de les écrires différents (un petit tableau en fonction du type de jour, de l'heure, qui donne la tarif...)
    - faire des calculs à la main à la main sur différents cas pour vérifier que tes règles sont bonnes
    - prendre un abonnement à un livreur de café
    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.


    Spidercochon, spidercochon, il peut marcher au plafond
    ...MM ......Voici Spidercochon. Aidez le à conquérir le monde
    E(....)~....en le reproduisant.
    ...w

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse.

    Pour récupérer les données d'un formulaire en php et me connecter à la base de données, je sais faire. Mon problème, c'est de créer des requêtes qui fassent en sorte que la date rentrée par l'utilisateur corresponde à une date déjà existante dans une base de données, je ne sais pas si tu vois ce que je veux dire...

    Pour les heures, je vais me servir de ce que tu m'as dit en utilisant des conditions différentes pour le premier jour, le dernier jour, et les jours entre qui sont complets.

    Pour les jours fériés et dimanches, je voulais faire un calendrier mais finalement je n'ai qu'à lister seulement les dates de chaque dimanche et jour férié de l'année. Je les mets dans une base de données et j'applique des conditions pour voir si la date rentrée par l'utilisateur correspond à ces dates-là, qu'en penses-tu ?

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Points : 216
    Points
    216
    Par défaut
    un peu de temps pour répondre...

    pour les requêtes sql je te trouve un peu flou...
    "la date rentrée par l'utilisateur corresponde à une date déjà existante dans une base de données"
    ça signifie une date valide? (cad rejeter le 30 février)
    ou une date enregistrée du genre dimanche et fériée


    si tu utilises des conditions différentes pour premier et dernier jour + les jours entre
    (en prenant attention au cas ou c'est sur une journée)

    tu peux lancer une requete sql pour tester le premier jour
    (SELECT date FROM calendrier WHERE date=date_premier_jour)
    ensuite tester le nombre de lignes renvoyés... (fonction mysql_num_rows())
    si c'est 0 c'est un jour normal
    si c'est 1 c'est un jour plus cher
    (si c'est 2 faut s'inquièter y'a des doublons dans la base :p pour ça faut mettre une clé sur ton champ qui contient la date dans ta base)

    pareil pour le dernier


    et pareil pour les jours entre
    tu comptes le nombre de jours
    et tu comptes le nombres de jour plus cher avec une requete du genre
    (SELECT date FROM calendrier WHERE date>date_premier_jour AND date<date_dernier_jour )
    et tu comptes le nombre de lignes renvoyés pour avoir ce nombre de jour

    avec le nombre de jour total et le nombre de jour plus cher tu en déduis le nombre de jours au tarif normal



    bon faut adapter les requetes avec les variables php (va falloir jour avec les quotes etc...), mettre les date au bon format pour que la requete marche, etc...

    et pour le calendrier oui c'est ce qui faut faire à mon avis ça sera plus simple
    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.


    Spidercochon, spidercochon, il peut marcher au plafond
    ...MM ......Voici Spidercochon. Aidez le à conquérir le monde
    E(....)~....en le reproduisant.
    ...w

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci pour tes conseils.

    Là je me suis occupée du code pour les heures plus chères en fonction de l'heure de la journée, je n'ai pas encore attaqué les dimanches et jours fériés.

    Pour les heures de la journée, j'ai fait des conditions :
    - si la date de début est la même que celle de fin
    - si la date de début est différente de celle de fin
    et dans la deuxième condition j'ai fait un calcul du premier jour, du dernier jour et des jours entre.

    Ca m'a pris du temps mais ça semble marcher. Le seul hic c'est pour les minutes. Le nombre d'heures apparaît au format 5,25 pour 5h15, 10,75 pour 10h45, etc. Y aurait-il une solution pour changer le format car ça ne fait pas très professionnel comme ça ?

    Merci beaucoup !

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Points : 216
    Points
    216
    Par défaut
    en raison de vacances je te réponds tard, tu as peut etre trouvé entre temps


    une méthode basique est d'utiliser une fonction pour prendre la valeur entiere (ça doit bien exister en php... intval() devrait correspondre)

    intval(5,25)=5 pour obtenir les heures
    ensuite ce qui reste 5,25 -intval(5,25)=0,25
    tu le multiplies par 60
    et tu obtiens le nombre de minutes (5,25 -intval(5,25))*60=15

    il y a peut etre une solution plus pro (avec une fonction de manipulation d'heure) pour le faire
    mais comme ça tu devrais t'en sortir
    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait.
    (\ _ /)
    (='.'=) Voici Lapinou. Aidez le à conquérir le monde
    (")-(") en le reproduisant.


    Spidercochon, spidercochon, il peut marcher au plafond
    ...MM ......Voici Spidercochon. Aidez le à conquérir le monde
    E(....)~....en le reproduisant.
    ...w

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci de ta réponse car je n'avais pas encore trouvé.

    J'ai un autre problème concernant ce que tu m'as dit plus haut. Je voudrais faire une requête sql du type (SELECT date FROM calendrier WHERE date=date_premier_jour) mais mon problème est que la date_premier_jour est rentrée par l'utilisateur au format texte (un menu déroulant pour le jour, un autre pour le mois, un autre pour l'année). J'en conclus donc qu'il faut que je convertisse cette date-texte en un format date reconnu par mysql. J'ai beau chercher sur Internet, je ne trouve rien qui puisse m'aider à faire ça. Tu as une idée ?

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Finalement, j'ai trouvé la solution à mon problème. Je créais une variable de date au format yyyy-mm-dd. Finalement, j'ai essayé plus ou moins au hasard d'enlever les tirets. Et le format yyyymmdd est reconnu sans problème par ma base de données, youpi !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Calcul automatique avec ajout de champs de formulaire
    Par spawns dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/05/2015, 12h47
  2. [AC-2000] Formulaire de réservation avec liste déroulante
    Par julius870 dans le forum IHM
    Réponses: 1
    Dernier message: 05/09/2012, 19h27
  3. formulaire de liens avec envoi automatique
    Par ordidonc dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 15/10/2011, 19h35
  4. calculs automatiques dans un formulaire dynamique
    Par renaud26 dans le forum Général JavaScript
    Réponses: 34
    Dernier message: 13/07/2006, 18h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo