Création historique via BDD

Résolu
Bonjour,
je possède une table client qui nourrit un tableau en html/php.
J'aimerais que lorsque je clic sur un client, son historique s'affiche.
Pour cela, dois-je créer une nouvelle table ?
Utiliser une clé étrangère pour pouvoir lier un client à plusieurs historiques ?

3 réponses

  1. Modérateur
    Bonjour,

    Concernant ta BDD....
    T- u dis avoir une table CLIENT ... ok .... que contient elle ?

    J'aimerais que lorsque je clic sur un client, son historique s'affiche.
    [...]
    Pour cela, dois-je créer une nouvelle table ?

    - Où est "stocké" cet historique ?
    - Si tu ne l'a pas encore fait... oui.. il te faudra sûrement créer une table pour y enregistrer cet historique....

    0
    1. Bonjour,
      Le nom de ma table est plus précisément "client_tb" (c'est la meme que ma précedente question).
      Elle contient :
      CREATE TABLE IF NOT EXISTS `client_tb` (
        `id` int(5) unsigned NOT NULL,
        `nom_e` varchar(30) NOT NULL,
        `nom_cl` varchar(30) NOT NULL,
        `fonc` varchar(30) NOT NULL,
        `civ` varchar(30) NOT NULL,
        `groupe` varchar(30) NOT NULL,
        `contrat` varchar(30) NOT NULL,
        `fixe` varchar(10) NOT NULL,
        `mob` varchar(10) NOT NULL,
        `fax` varchar(10) NOT NULL,
        `mail` varchar(30) NOT NULL,
        `web` varchar(30) NOT NULL,
        `adr` varchar(30) NOT NULL,
        `ville` varchar(30) NOT NULL,
        `cp` varchar(5) NOT NULL,
        `infos` varchar(255) NOT NULL,
        `date` date NOT NULL,
        `inter` varchar(12) NOT NULL,
        `tech` varchar(12) NOT NULL,
        `comm` text NOT NULL
      ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;


      Pour la partie php, l'historique est le 2eme tableau dans la page formulaire.
      Je vais créer la table historique comme ça :
      CREATE TABLE IF NOT EXISTS `historique` (
        `no_h` int(5) NOT NULL,
        `date` date NOT NULL,
        `inter` varchar(20) NOT NULL,
        `tech` varchar(20) NOT NULL,
        `comm` varchar(255) NOT NULL,
        `id` int(11) NOT NULL
      ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
      
      0
      1. Modérateur
        c'est la meme que ma précedente question

        C'est vrai que je ne répond qu'à une question par semaine... et donc que je m'en souvient forcément.... :-)

        Pour ta seconde table... hitstoire que tu t'y retrouve plus facilement ultérieurement... nomme ton champ "ID" (celui qui te servira de lien entre tes deux tables...) en id_client_tb

        Et sinon... à quoi correspondent les champs `inter` `tech` et `comm` ?
        0
      2. Désolé ^^

        Pour "id_client_tb", on est d'accord pour dire que c'est la clé étrangère de la table historique.

        intervention, technicien, commentaire
        0
    2. Modérateur
      Pour "id_client_tb", on est d'accord pour dire que c'est la clé étrangère de la table historique.

      Oui

      intervention, technicien, commentaire

      Ce sont donc les informations qui vont être historisées .....
      donc tu peux les retirer de ta table client_tb

      Dans l'idéal.. ta BDD devrait se présenter de la sorte
      (ce n'est qu'un exemple.. tu pourrais ajouter d'autres tables et d'autres champs... selon tes besoins.)


      0
      1. Dans ton exemple à quoi sert la table techniciens ?
        En faisant deux tables comme ceci:
        client_tb (id, nom_e,[...], infos) et historique (id, id_client_tb, date, inter, tech, comm)
        0
      2. Modérateur
        @DilidimDis toi que chaque "objet" peut être considéré comme une table...
        prenons l'exemple d'une voiture...
        Tu auras la table voiture
        la table couleurs
        la table modeles
        la table marques
        la table motorisation
        la table options
        etc....
        ===>>> Ta table voiture... finalement.. pourrait ne contenir que des Keys vers les autres tables.....
        se serait ces jointures avec les autres tables qui constituerai la voiture finale.... (une voiture essence 2.2 litres, rouge, Mercedes, avec un allume cigare en option ^^ )

        Pour en revenir à ton cas...
        La table CLIENTS ne contient QUE la liste de tes clients
        La table technicien ... la liste des techniciens
        La table interventions ... les N interventions réalisées pour tes clients... par x technicien....

        De même .. tu pourrais ajouter une table : Type_intervention .. dans laquelle tu aurais ID / libelle ... et tu ferais le lien entre l' id_type_inter dans ta table intervention et l' id de cette table
        ( les types pouvant être : Dépannage , Entretient , Devis ..... )

        bref.. c'est le principe des tables relationnelles....
        0