Création historique via BDD

Résolu/Fermé
Dilidim Messages postés 106 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 25 janvier 2017 - 25 févr. 2015 à 17:06
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 - 26 févr. 2015 à 17:21
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 ?
A voir également:

3 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
25 févr. 2015 à 18:32
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
Dilidim Messages postés 106 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 25 janvier 2017
26 févr. 2015 à 09:51
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
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 févr. 2015 à 11:46
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
Dilidim Messages postés 106 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 25 janvier 2017
26 févr. 2015 à 15:01
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
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
26 févr. 2015 à 16:30
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
Dilidim Messages postés 106 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 25 janvier 2017
Modifié par Dilidim le 26/02/2015 à 16:49
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
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > Dilidim Messages postés 106 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 25 janvier 2017
26 févr. 2015 à 17:21
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