Page 1 sur 1

INSERT INTO n'insert pas tout

Posté : 30 mars 2016, 03:40
par Couin
Bonjour à tous,

Je suis confronté à un problème sur lequel je n'arrvie pas à m'en sortir :(

J'importe des données depuis un fichier csv vers une base de données.
Chaque ligne correspond à une alarme sur une machine de tri.
Je ne peux pas changer la structure du fichier (remplacer le , par ; ou autre bidouille du genre), je peux seulement supprimer des lignes, notamment les 4 premières qui sont les titres et qui ne m'intéressent pas.
Soit, là n'est pas le souci principal.

Chaque ligne est structurée de cette façon :
Unite trieur,ID Alarme,Heure debut,Heure fin,SH01-IUH01,SH01 Injection Colis trop large,29/03/2016 21:40:25,29/03/2016 21:40:48
Je fais un while comme ceci

Code : Tout sélectionner

while (($objArr = fgetcsv($objCSV, 1000, ",", "\"")) !== FALSE)
Les 4 premiers champs ne m’intéressent pas , je commence donc le travail à partir de

Code : Tout sélectionner

$objArr[4]
que j'appelle

Code : Tout sélectionner

$inj_name
(car c'est le nom de l'équipement machine). Dans l'exemple, cela correspond dont à SH01-IUH01 .
Nous avons 14 équipements donc 14 noms différents, mais des centaines d'alarmes possibles.
Le souci c'est que dès lors qu'un nom d’équipement a été inséré dans la base mySQL , les alarmes suivantes du même équipement ne sont pas insérés.
Pourtant, si dans le while je liste chaque ligne (les echo), toutes les alarmes apparaissent.

Voici la partie pertinente de mon code php :

Code : Tout sélectionner

$objCSV = fopen("import/".$_FILES["fileCSV"]["name"], "r"); $i = 1; echo "<table border=1>"; while (($objArr = fgetcsv($objCSV, 1000, ",", "\"")) !== FALSE) { $inj_name = $objArr[4]; $inj_dft = $objArr[5]; $inj_debut = $objArr[6]; echo "<tr><td>"; echo $i."</td><td>"; echo $inj_name."</td><td>"; echo $inj_dft."</td><td>"; echo $inj_debut."</td><td>"; echo $inj_fin."</td></tr>"; $sql = "INSERT INTO inj_list (inj_i, inj_name, inj_dft,inj_debut, inj_fin) VALUES ('$i','$inj_name','$inj_dft','$inj_debut','$inj_fin')"; $sql = mysql_query($sql); $i = $i+1; } fclose($objCSV); echo "</table>";
L'importation n'importe que 14 lignes au lieu de toutes.
Je ne vois pas à quel endroit je fais erreur, d'autant plus que c'est du code que j'ai déjà utilisé pour un autre projet, et qui ne m'a pas posé de problème...

Merci pour votre aide et désolé pour le pavé lol
Couin

Re: INSERT INTO n'insert pas tout

Posté : 30 mars 2016, 03:51
par Couin
Bon, arf, je viens de trouver!
J'ai fais un export de la base et pour une raison que j'ignore, j'avais
UNIQUE KEY `priority` (`inj_name`)
J'ai modifié en
UNIQUE KEY `priority` (`id`)
et réimporté la base et cela fonctionne.

Je passe en résolu, au cas où ca puisse servir :)