Bonjour à tous,

J'ai cette table :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CREATE TABLE IF NOT EXISTS `reports` (
`id_report` int(11) NOT NULL,
  `bpcord` varchar(15) CHARACTER SET latin1 NOT NULL,
  `bpaadd` varchar(3) CHARACTER SET latin1 NOT NULL,
  `credat` date NOT NULL,
  `type` varchar(15) CHARACTER SET latin1 NOT NULL,
  `contact` varchar(80) CHARACTER SET latin1 NOT NULL,
  `email` varchar(100) CHARACTER SET latin1 NOT NULL,
  `commentaires` longtext CHARACTER SET latin1 NOT NULL,
  `actions` longtext CHARACTER SET latin1 NOT NULL,
  `observations` longtext CHARACTER SET latin1 NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=3297 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
 
ALTER TABLE `reports`
 ADD PRIMARY KEY (`id_report`), ADD KEY `bpcord` (`bpcord`,`bpaadd`);
Elle contient une liste de rapport de rdv composé d'un code client (bpcord), un lieu d'inter (bpaadd), une date, un commentaire... id_report est la clé primaire et bpcord/bpaadd est un index. Elle est alimenté par un fichier csv qui est envoyé par un formulaire php. Ce fichier est généré par des utilisateurs qui n'y connaissent rien en informatique.

Mon problème est lors des mises jour du fichier et donc de la table.

J'ai deux solutions :
  • L'utilisateur se rappelle la dernière ligne qu'il a importé et du coups dans le fichier qu'il envoie il n'y a que les nouveaux enregistrements;
  • La requête est capable de mettre à jour un enregistrement ou alors si il n'existe pas alors elle l'insert.


J'ai trouvé avec UPDATE, ON DUPLICATE KEY UPDATE ou alors avec INSERT il y aurait moyen de faire quelque chose mais à chaque fois cela ce base sur la clé primaire. Mon problème qu'un client (bpcord) et un lieu d'inter (bpaadd) peut apparaître plusieurs fois pour une même date donc non unique. D'où la présence de id_report.

Exemple

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
Fichier importé le jour 1
bpcord;bpaadd;credat;type;contact;email;commentaires;actions;observations
toto;01;2020-01-10;Inter;robert;robert@laloose;il a crevé;;
tata;03;2020-01-02;Contrat;Lucie;lulu@troptop;...;;
 
Fichier importé le jour 2
bpcord;bpaadd;credat;type;contact;email;commentaires;actions;observations
toto;01;2020-01-10;Inter;robert;robert@laloose;il a crevé;;
tata;03;2020-01-02;Contrat;Lucie;lulu@troptop;...;;
toto;01;2020-01-10;Inter;robert;robert@laloose;encore chez lui;;
Est-ce que vous auriez une idée pour mettre à jour les données dans ce contexte ?

Merci d'avance.