par
Couin » 30 mars 2016, 03:40
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
que j'appelle
(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
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 :
[b]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[/b]
Je fais un while comme ceci
[code]while (($objArr = fgetcsv($objCSV, 1000, ",", "\"")) !== FALSE) [/code]
Les 4 premiers champs ne m’intéressent pas , je commence donc le travail à partir de [code]$objArr[4][/code] que j'appelle [code]$inj_name[/code] (car c'est le nom de l'équipement machine). Dans l'exemple, cela correspond dont à [b]SH01-IUH01[/b] .
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] $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>";[/code]
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