Création historique via BDD

Résolu
Dilidim Messages postés 114 Statut Membre -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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
  2. Dilidim Messages postés 114 Statut Membre
     
    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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      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. Dilidim Messages postés 114 Statut Membre
       
      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
  3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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. Dilidim Messages postés 114 Statut Membre
       
      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
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Dilidim Messages postés 114 Statut Membre
         
        Dis 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