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 :

creation d'une barre de recherche pour affichage des véhicules/salle existants


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2022
    Messages : 78
    Points : 31
    Points
    31
    Par défaut creation d'une barre de recherche pour affichage des véhicules/salle existants
    Bonjour à tous,

    Je n'arrive pas a voir comment je peux procéder pour la création d'une barre de recherche pour afficher les véhicules et salles disponibles selon l'heure au choix indiquée par l'agent . ( il ne veuille pas de slots d'horaires car ils veulent pouvoir réserver 1,3 ,5h30 etc...)

    Je ne sais pas si j'ai la bonne logique concernant mes tables .

    J'ai du mal a comprendre comment faire avec les dates et heures et voir comment faire afficher selon ma barre de recherche ( je pensai dans le style si !datedebut et !datefin ou < )
    J'arrive a faire afficher mes tables .

    pour info : les voitures peuvent etre loué a tous moment de la journée mm en soirée avec retour le lendemain, donc dur de rentrer une date d'avance de disponibilité.
    Peut etre que ma réflexion est vraiment pas bonne .


    Je n'arrive pas a trouver des pistes qui pourrait m'aider dans ce développement

    Je verrai le graphisme quand la fonctionnalité fonctionnerai

    Je cherche a reproduire un peu ce style de site
    https://www.parisaeroport.fr/
    https://zenpark.com/

    Dans l'attente d'un éclairage et d'une aide de votre part
    Nom : tableSql.png
Affichages : 162
Taille : 56,3 Ko
    Nom : exemple-formulaire.png
Affichages : 157
Taille : 31,3 Ko

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 406
    Points : 4 843
    Points
    4 843
    Par défaut
    Bonjour,

    D'après ce que je vois, les deux tables locationssalle et locationsvoiture peuvent être regrouper en une seule table location avec les deux clés étrangères idSalle et Plaque.

    Lorsque vous insérez une location de voiture par exemple, vous attribuez le numéro de la Plaque et vous mettez idSalle à null et vice versa.

    Après vous pouvez utiliser les jointures SQL pour récupérer les données en fonction des paramètres de la recherche.

    Pour les dates sous mysql 5, ils existent pleins de fonctions qui permettent de les manipuler.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2022
    Messages : 78
    Points : 31
    Points
    31
    Par défaut
    Je dois donc créer une 5 eme table? pour que ensuite dans mon formulaire, je coche le lieu, la date et le type de location ( salle ou voiture) et qu'une fois que j'appuie sur valider que cela ne m'affiche que les voitures ou salle correspondant a mes inputs?

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 406
    Points : 4 843
    Points
    4 843
    Par défaut
    Non, remplacez les deux tables locationssalle et locationsvoiture par une seule table "locations", parce que une location est une location que se soit pour une voiture ou pour une salle le principe reste le même.

    Le formulaire doit afficher les voitures/salles disponibles (non louées) dans une période, parce que l'agent lorsqu'il effectue une recherche, il doit pouvoir visualiser seulement les voitures/salles qui sont disponibles (non louées) pour qu'ensuite les affecter à un client.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2022
    Messages : 78
    Points : 31
    Points
    31
    Par défaut
    J'ai donc recréer une table commune pour effacer les 2 autres .
    Le seul truc c'est que je n'arrive plus a lier plaque avec l'autre table et sa colonne plaque ( erreur : un index est manquant sur le(les)colonnes
    Nom : newSql.png
Affichages : 112
Taille : 65,8 Ko
    Nom : newSql2.png
Affichages : 118
Taille : 172,2 Ko
    tant que j'ai pas lié mes tables dans phpMyadmin, je ne peux pas m'en servir ensemble?
    Je suis débutante , j'avoue que ca fais longtemps que je n'ai pas fait de jointures entre les tables.
    J'ai beau surfer sur le net mais je ne comprends pas grand chose

  6. #6
    Membre averti Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 329
    Points : 430
    Points
    430
    Par défaut
    Citation Envoyé par gabinou7 Voir le message
    tant que j'ai pas lié mes tables dans phpMyadmin, je ne peux pas m'en servir ensemble?
    Vous pouvez lier les tables manuellement en ajoutant une jointure dans votre requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INNER JOIN voitures ON locations.Plaque=voitures.Plaque
    Personnellement j'évite de donner 2 même nom de colonne dans des tables différentes : je ne sais pas trop quelle 'Plaque' sera prise lors de la récupération de la plaque dans votre requête

  7. #7
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 406
    Points : 4 843
    Points
    4 843
    Par défaut
    Bonjour,

    L'erreur est survenue parce que vous essayez d'attribuer une relation avec un "idClient" qui n'existe null part dans votre base de donnée, ceci dit qu'il faut d'abord créer une table des clients avec une clé primaire idClient et la remplir, la même chose pour les tables voitures et salles et lieux.

    Citation Envoyé par ddaweb Voir le message
    Personnellement j'évite de donner 2 même nom de colonne dans des tables différentes : je ne sais pas trop quelle 'Plaque' sera prise lors de la récupération de la plaque dans votre requête
    Vous pouvez bien distinguer entre les colonnes même s'ils ont le même nom via l'alias utilisé dans la requête, par exemple pour "Plaque" on peut écrire select v.Plaque from locations loc inner join voitures v on v.Plaque=loc.Plaque

    Les relations entre les tables sont utiles pour l'optimisation d'une base de donnée et assurant une bonne manipulation de données surtout lors de la modification et la suppression (en cascade), et vu que vous êtes une débutante, alors il faudrait mieux apprendre correctement la conception d'une base donnée et les utiliser évidemment.

    Dans votre cas, les tables doivent être comme suite

    Pièce jointe 632264

    Il faudrait aussi permettre les valeurs NULL aux colonnes idSalle et Plaque de la table locations.

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2022
    Messages : 78
    Points : 31
    Points
    31
    Par défaut
    Ah oui, c'est pour la suppression le graphisme,
    Tu m'a rafraichi la mémoire de mes cours, il y'a 4 ans
    J'avoue, ne l'ayant pas pratiquer depuis.
    Je vais mettre de coté ceci si je peux joindre 2 tables avec les requêtes dans mon code

    Quand a la nomination des tables, dans mes souvenirs, le prof nous avait dis d'appeler les tables de manière identique si on voulais faire un rapprochement.

    Pourquoi la création d'une table lieu? mon raisonnement n'est t'il pas bon? ( est ce le fait que mon formulaire demande le lieu?)
    La table voiture pour avoir la liste de toutes les voitures
    La table salle pour avoir toutes les salles
    La table agent pour avoir tous les utilisateurs
    La table location pour avoir toutes les réservations que ce sois voiture ou salle ( a moins que je devrai plutôt avoir une table location voiture et une table location salle)

    Dans ma condition, je pensais mettre si id salle ou id voiture est différent que date début et date fin de la table location, tu peux réserver et donc afficher toutes les salles et voitures disponibles.
    Par contre, j'ai pas de créneaux horaire dans ma table locations. ( du faite que dans le formulaire de réservation, l'agent peux réserver le créneau qu'il veux ( heure de départ et heure de fin choisi par l'utilisateur )

    Jusqu'à présent,( en dehors de mes cours) mes développements portaient que sur une seule table mais la comme y'a des voitures, des salles, des personnes qui réservent, des horaires .
    Je me suis dis que j'étais obligé de faire plusieurs tables .

    Avez vous des livres à me conseillez ( l'embarras du choix sur google) pour que je revois les bases du PHP ( enfin pas trop débutants non plus ) et de PhpMyAdmin ( création de base, liaison avec des exemples concrets)?

    Je ne demande qu'a apprendre :-)

  9. #9
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Citation Envoyé par Toufik83 Voir le message
    Dans votre cas, les tables doivent être comme suite

    Pièce jointe 632264

    Il faudrait aussi permettre les valeurs NULL aux colonnes idSalle et Plaque de la table locations.
    Ce modèle ne conviendrait que si toute location consistait à louer une et une seule salle et simultanément une et une seule voiture.
    Et en ce cas, les identifiants de voiture et de salle ne seraient pas nullables dans la table associative location.
    Or il est très probable qu'une location peut concerner seulement une salle ou seulement une voiture, voire peut-etre plusieurs salles ou plusieurs voitures.
    Il faut donc
    1. préciser les règles de gestion pour dire clairement en quoi consistent les locations
    2. établir un modèle conceptuel des données en fonction de ces règles
    3. en dériver le modèle tabulaire

    Modéliser en démarrant bille en tête par les tables est le meilleur moyen de se prendre les pieds dans le tapis, la preuve
    Et un modèle de données mal conçu c'est des redondances, une intégrité non garantie, des requêtes complexes et contre-performantes.

    Il existe un forum consacré à la modélisation, il se trouve ICI

    Sachez aussi que le plus souvent, la présence de colonnes "nullables" dans un modèle de données est symptomatique d'un modèle mal conçu.

  10. #10
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    J'ai pris un peu de temps pour proposer un modèle plus cohérent, basé sur quelques hypothèses.

    un client peut réserver un ou plusieurs véhicule(s), une ou plusieurs salle(s) ou les deux.
    comme on est dans un aéroport, il est probable que des pièces justificatives soient exigées, je les ai donc modélisées et ce d'autant plus que pour réserver un véhicule, il faut de toute façon présenter un permis correspondant à la catégorie de véhicules.
    Un même véhicule ne peut être réservé qu'une seule fois pour une période, j'ai donc implémenté une contrainte en ce sens matérialisée par la flèche en direction de l'entité-type CO_commande.
    Même remarque pour les salles.

    Le type d'entité CA_calendrier est dit "fictif" (d'où les parenthèses autour de son nom) : il ne deviendra pas une table, il sert seulement à contribuer à la PK des tables issues des associations RS et RV.

    J'ai profité de l'occasion pour externaliser les média (téléphones, fax, email...) de l'entité-type client, en effet certains clients ont plusieurs fixes (pro, domicile) plusieurs portables (pro, astreinte, perso...), plusieurs courriels, fax etc. Donc, il faut permettre cette multiplicité sans encombrer inutilement l'entité-type client avec des colonnes potentiellement vides pour ceux qui n'en ont que très peu ou pas du tout.
    Et pour les média de type courriel, il est sage d'externaliser le domaine, car s'il change (ce qui n'est pas exceptionnel), on peut mettre à jour toutes les adresses rattachées en ne modifiant qu'une seule ligne.

    Enfin, j'ai ajouté des exemples de contenu des tables issues des typologies (type de justificatif, type de média...) pour que ce soit plus clair.

    Ce qui donne le MCD suivant

    Nom : MCD.png
Affichages : 112
Taille : 157,3 Ko

    En un clic, avec tout bon logiciel de modélisation (ici j'ai utilisé l'excellent Looping, qui est gratuit), on obtient le modèle tabulaire suivant :

    Nom : MLD.png
Affichages : 110
Taille : 168,4 Ko

    Et dans le même temps le script DDL suivant (ici j'ai opté pour le SGBD SQL server) :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    CREATE TABLE CL_client(
       CL_ident INT IDENTITY,
       CL_nom VARCHAR(50) NOT NULL,
       CL_prenom VARCHAR(50) NOT NULL,
       PRIMARY KEY(CL_ident)
    );
     
    CREATE TABLE TJ_type_justif(
       TJ_ident INT IDENTITY,
       TJ_code CHAR(4) NOT NULL,
       TJ_libelle VARCHAR(50) NOT NULL,
       PRIMARY KEY(TJ_ident),
       UNIQUE(TJ_code)
    );
     
    CREATE TABLE CO_commande(
       CL_ident INT,
       CO_seq SMALLINT,
       CO_date DATE NOT NULL,
       CO_statut CHAR(1) NOT NULL,
       PRIMARY KEY(CL_ident, CO_seq),
       FOREIGN KEY(CL_ident) REFERENCES CL_client(CL_ident)
    );
     
    CREATE TABLE YS_type_sl(
       YS_ident INT IDENTITY,
       YS_code CHAR(4) NOT NULL,
       YS_libelle VARCHAR(128) NOT NULL,
       PRIMARY KEY(YS_ident),
       UNIQUE(YS_code)
    );
     
    CREATE TABLE YM_type_me(
       YM_ident INT IDENTITY,
       YM_code CHAR(4) NOT NULL,
       YM_libelle VARCHAR(128) NOT NULL,
       PRIMARY KEY(YM_ident),
       UNIQUE(YM_code)
    );
     
    CREATE TABLE DM_domaine(
       DM_ident INT IDENTITY,
       DM_code CHAR(6) NOT NULL,
       DM_adresse VARCHAR(253) NOT NULL,
       PRIMARY KEY(DM_ident),
       UNIQUE(DM_code)
    );
     
    CREATE TABLE YC_type_permis(
       YC_ident INT IDENTITY,
       YC_code CHAR(4) NOT NULL,
       YC_lib VARCHAR(50) NOT NULL,
       PRIMARY KEY(YC_ident),
       UNIQUE(YC_code)
    );
     
    CREATE TABLE JS_justificatif(
       PJ_ident INT IDENTITY,
       PJ_numero CHAR(20) NOT NULL,
       PJ_date DATE NOT NULL,
       TJ_ident INT NOT NULL,
       CL_ident INT NOT NULL,
       PRIMARY KEY(PJ_ident),
       FOREIGN KEY(TJ_ident) REFERENCES TJ_type_justif(TJ_ident),
       FOREIGN KEY(CL_ident) REFERENCES CL_client(CL_ident)
    );
     
    CREATE TABLE SL_salle(
       SL_ident INT IDENTITY,
       SL_numero CHAR(5) NOT NULL,
       SL_nom VARCHAR(50) NOT NULL,
       YS_ident INT NOT NULL,
       PRIMARY KEY(SL_ident),
       UNIQUE(SL_numero),
       FOREIGN KEY(YS_ident) REFERENCES YS_type_sl(YS_ident)
    );
     
    CREATE TABLE YV_type_vh(
       YV_ident INT IDENTITY,
       YV_code CHAR(4) NOT NULL,
       YV_libelle VARCHAR(50) NOT NULL,
       YC_ident INT NOT NULL,
       PRIMARY KEY(YV_ident),
       UNIQUE(YV_code),
       FOREIGN KEY(YC_ident) REFERENCES YC_type_permis(YC_ident)
    );
     
    CREATE TABLE ME_media(
       CL_ident INT,
       ME_seq INT IDENTITY,
       ME_adresse VARCHAR(64) NOT NULL,
       DM_ident INT NOT NULL,
       YM_ident INT NOT NULL,
       PRIMARY KEY(CL_ident, ME_seq),
       FOREIGN KEY(CL_ident) REFERENCES CL_client(CL_ident),
       FOREIGN KEY(DM_ident) REFERENCES DM_domaine(DM_ident),
       FOREIGN KEY(YM_ident) REFERENCES YM_type_me(YM_ident)
    );
     
    CREATE TABLE VH_vehicule(
       VH_ident INT IDENTITY,
       VH_immat CHAR(9) NOT NULL,
       YV_ident INT NOT NULL,
       PRIMARY KEY(VH_ident),
       UNIQUE(VH_immat),
       FOREIGN KEY(YV_ident) REFERENCES YV_type_vh(YV_ident)
    );
     
    CREATE TABLE RV_reserver_vh(
       VH_ident INT,
       CA_date DATE,
       RV_dtfin DATE NOT NULL,
       CL_ident INT NOT NULL,
       CO_seq SMALLINT NOT NULL,
       PRIMARY KEY(VH_ident, CA_date),
       FOREIGN KEY(VH_ident) REFERENCES VH_vehicule(VH_ident),
       FOREIGN KEY(CL_ident, CO_seq) REFERENCES CO_commande(CL_ident, CO_seq)
    );
     
    CREATE TABLE RS_reserver_sl(
       SL_ident INT,
       CA_date DATE,
       RS_dtfin DATE NOT NULL,
       CL_ident INT NOT NULL,
       CO_seq SMALLINT NOT NULL,
       PRIMARY KEY(SL_ident, CA_date),
       FOREIGN KEY(SL_ident) REFERENCES SL_salle(SL_ident),
       FOREIGN KEY(CL_ident, CO_seq) REFERENCES CO_commande(CL_ident, CO_seq)
    );

  11. #11
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 406
    Points : 4 843
    Points
    4 843
    Par défaut
    Bonjour,

    Citation Envoyé par gabinou7 Voir le message
    Pourquoi la création d'une table lieu? mon raisonnement n'est t'il pas bon? ( est ce le fait que mon formulaire demande le lieu?)
    Lorsqu'un agent affecte une location de (maison/salle) à un client, il doit renseigner le lieu qui sera présenté sous forme d'une liste déroulante des lieux existants (St Contest, Orme, LM et LE), là on est Ok, mais si jamais l'agent voudra ajouter un nouveau lieu, dans ce cas il doit obligatoirement modifier la liste déroulante et ajouter le nouveau lieu manuellement (code html), alors que si on stocke les lieux dans une table dédiée, les nouveaux lieux seront toujours disponibles dans la liste déroulante sans avoir a modifier son code HTML.

    escartefigue je savais que les colonnes "nullables" ne sont pas vraiment la bonne solution, mais j'ai essayé de crée un modèle répondant seulement au besoin actuel, et si on fait comme ça ? est-ce correcte ?

    Pièce jointe 632301

  12. #12
    Nouveau membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2022
    Messages : 78
    Points : 31
    Points
    31
    Par défaut
    Je commence à m'en rendre compte car la j'essaye avec une requête d'afficher selon le select choisi par l'agent,
    Affiche moi toutes les salles et les voitures disponible a st contest par exemple ,
    J'arrive a faire afficher le lieu si je n'utilise que une seule table.( par exemple la table voiture)
    J'ai essayé de faire un UNION pour assembler les 2 tables mais cela fonctionne pas, j'ai essayé de faire un JOIN aussi (malgré que j'ai la colonne lieu qui est identique )
    Les 2 tables n'ont rien en commun donc dur de faire afficher sois l'un ou l'autre ( enfin si je peux mettre une condition si selected=vehicule, affiche moi la table véhicules sinon tu m'affiche l'autre table )a moins que je mettes pas de select pour demander si l'agent veux louer une salle ou une voiture, il sélectionne juste la ville et ensuite selon la ville , on lui propose toutes les locations disponibles. ( mm si cela serai dans la mm table, ce ne sont pas les mm infos pour la voiture et pour les salles)
    Donc ma mise en place des tables n'est pas bonne.
    Et je pense que je vais rencontrer d'autre soucis concernant les heures car quand on sélectionne les heures, tu m'affiche toutes les voitures et les salles disponibles ( c'est à dire non présente dans ma base table reservation), enfin je vois que cette solution.
    Je vais donc aller sur le forum de modélisation pour essayer d'y comprendre mieux la démarche ( je pensais etre sur le bon forum vu que je suis dans PHP et bases de données )

    Quand je fais un projet comme cela, quelle est le commencement si la création de la base n'est pas le début?

    @escartefigue : je ne comprend pas tout ce que tu me raconte avec toutes tes abréviations et tes exemples et toutes tes tables , mon projet c'est de l'interne et c'est uniquement pour les agents de la société, il devront utilisé obligatoirement l'adresse mail de la société car il ne peuvent pas le modifier, idem pour leur nom et prénom en autre .

    @Toufik83 : effectivement si modifications de lieu, il faudra le rentrer dans le code, mais je rentre déjà ts les dépôts de ma société et il ne crée pas de dépôts tous les jours. J'ai jamais fais un select avec une base de données :-)

  13. #13
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    Non, ça ne va pas non plus, car il manque le type d'entité (et donc la table) commande, sans laquelle la facturation ne sera pas possible.
    Ce modèle n'interdit pas de louer la même voiture à plusieurs clients simultanément.
    Et il y a d'autres erreurs, comme l'immatriculation utilisée comme PK.

    Le bon modèle, sous réserve des règles de gestion qui ne sont pas précisées alors que c'est le minimum obligatoire, est celui que j'ai proposé précédemment (et basé sur des règles hypothétiques que j'ai données).

    Encore une fois, modéliser en commençant par les tables est une erreur. Les tables c'est le "comment", alors qu'il faut d'abord s'intéresser au "quoi".
    Quand on a répondu au "quoi" (MCD validé) le "comment" (MLD et MPD) s'obtient en un clic.

  14. #14
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par gabinou7 Voir le message
    @escartefigue : je ne comprend pas tout ce que tu me raconte avec toutes tes abréviations et tes exemples et toutes tes tables , mon projet c'est de l'interne et c'est uniquement pour les agents de la société, il devront utilisé obligatoirement l'adresse mail de la société car il ne peuvent pas le modifier, idem pour leur nom et prénom en autre .
    J'avais cru comprendre que le but était de faire un site permettant de réserver des véhicules et des salles :
    Citation Envoyé par gabinou7 Voir le message
    Je cherche a reproduire un peu ce style de site
    https://www.parisaeroport.fr/
    https://zenpark.com/
    Si c'est le cas, on a besoin de tous les éléments que j'ai modélisés (et même d'autres, je n'ai fait que le minimum).

    Les abréviations que j'ai utilisées sont très simples : j'utilise un préfixe différent pour chaque type d'entité, par exemple CL pour CLIENT, VH pour VEHICULE
    Ensuite, tous les attributs de ce type d'entité ont ce préfixe : CL_ident = identifiant du client, CL_nom = nom du client, VH_ident = identifiant du véhicule...
    Certaines associations ont aussi un préfixe : celles qui deviendront des tables (pour les autres ce n'est pas utile), donc les associations n-aires.

    L'intérêt de cette codification est d'une part d'éviter de percuter avec des noms réservés SQL et d'autre part de faciliter les analyses.
    Par exemple, dans la table associative RV_reserver, on sait d'emblée que VH_ident est hérité de la table VH_vehicule etc.

  15. #15
    Nouveau membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2022
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2022
    Messages : 78
    Points : 31
    Points
    31
    Par défaut
    @escartefigue , toutes les salles et voitures sont louées gratuitement pour nous. Il s'agit d'une réservation réservées pour les agents de notre société uniquement .
    Celui ci sera mis dans notre intranet ou l'accès nous est réservées.
    ok pour les abréviations dans les tables :-)
    effectivement ce style de site plais bien à mon chef coté fonctionnalité et graphisme.( aéroport de paris et zen Park), enfin dans la sélection des horaires et dans l'affichage des disponibilités. Ensuite on choisira le véhicule désiré ou la salle proposé et on pourra la réserver.
    je développerai ensuite le mode administration ou lui ou elle pourra modifier ou annuler les réservations et voir toutes les réservations en cours, quand a l'administration client, il pourra voir toutes ses réservations et les annuler.
    L'administrateur et l agent recevra un mail lors de toute modification ou enregistrement d'une location .

    Ma table location correspond à la table commande non?

    Pour moi si un véhicule ou salle est rentrée dans la table location, personne d'autre ne pourra le loué si?

    qu'est ce que tu me raconte concernant ma plaque du véhicule? PK? j'ais refais mes tables , je ne sais pas si j'ai transmis les dernières données
    Nom : sql_reservation.png
Affichages : 110
Taille : 49,5 Ko

    Ok, je ne dois pas commencer par le comment mais par le quoi?
    Je le connais le quoi.
    location de véhicule ou de salle par des agents par des tranches horaires au bon vouloir de l'agent ( comme sur zenpark) mais je sais pas comment gérer les horaires.

  16. #16
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 134
    Points : 38 557
    Points
    38 557
    Billets dans le blog
    9
    Par défaut
    Si le quoi est connu, alors il est d'autant plus facile de franchir l'étape indispensable : rédiger les règles de gestion

    Elles s'écrivent sous la forme d'un numéro et d'un libellé, chaque association entre deux objets de gestion (les clients, les commandes, les véhicules...) doit faire l'objet d'au moins deux phrases.
    Exemple (à adapter à votre contexte)

    R001a : un client est une personne qui a passé au moins une commande
    R001b : une commande est passée par un et un seul client
    R001c : une commande consiste à réserver zéro à plusieurs véhicules et zéro à plusieurs salles

    R002a : un véhicule est réservé par au plus un client pour une période
    R002b : un véhicule ne peut être réservé par un client que si celui-ci est titulaire d'un permis autorisant la conduite du véhicule
    etc.

    Si vous ne passez pas par cette étape, vous êtes à peu près certain d'aller droit dans le mur, votre modèle sera bancal, non fiable et contre performant.

    Ensuite on pourra faire le MCD

    Ce n'est qu'après qu'on pourra s'intéresser aux tables.

    C'est comme si vous vouliez acheter le ciment et les parpaings pour construire une maison et commencer à l'assembler alors que vous n'aviez pas de plan !

Discussions similaires

  1. Créer une barre de recherche pour rechercher dans un List<>
    Par iVarlix dans le forum Visual Studio
    Réponses: 5
    Dernier message: 08/04/2016, 19h15
  2. Réponses: 1
    Dernier message: 09/06/2015, 15h42
  3. fonction qui écrit dans une barre de recherche sur internet
    Par ubssecurities dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/08/2008, 10h36
  4. Une barre de recherche Qt pour Firefox
    Par Alp dans le forum Qt
    Réponses: 3
    Dernier message: 07/02/2008, 18h37

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