Apparition de saut de lignes après import CSV
Bonjour tout le monde,
J'utilise le script PHP suivant afin d'importer le contenu d'un fichier CSV vers une table de ma BDD MySQL:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| /*==================
Début de traitement du fichier maj.csv
//==================*/
$fp = fopen("../../../uploads/maj.csv","r"); //lecture
if (!$fp)
{
echo "Echec de l'ouverture du fichier";
exit;
}
else {
echo "C'est OK";
$hostname = "localhost"; // nom du serveur
$database = "***"; // nom de la base de données
$username = "***";
$password = "***"; // mot de passe (aucun par défaut mais il est conseillé d'en mettre un)
$db = mysql_connect($hostname, $username, $password) or die ("Impossible de se connecter à la base de données, veuillez vérifier les informations de connexion");
//=====================
// Initialisation
//=====================
mysql_select_db($database,$db);
while (!feof($fp)) // teste la fin du fichier téléchargé,
{
// Tant qu'on est pas arrivé à la fin du fichier on continue...
$ligne = fgets($fp); // récupère la ligne courante sur laquelle se trouve le pointeur du fichier
$liste = explode(";",$ligne); // on place les élements séparés par des points virgule dans un tableau.
// ";" étant le séparateur pour un fichier de type CSV
// premier élément
$liste[0] = ( isset($liste[0]) ) ? $liste[0] : Null;
$liste[1] = ( isset($liste[1]) ) ? $liste[1] : Null;
$champs1=$liste[0];
$champs2=$liste[1];
// pour eviter qu'un champ "nom" du fichier soit vide
if ($champs1!='')
{
// requete et insertion ligne par ligne
// champs1 id en general dc on affecte pas de valeur
$query = "INSERT INTO majPonctuelle (site_theorique,priorite_finale) VALUES('$champs1','$champs2')";
$result= mysql_query($query);
if (mysql_error())
{
echo 'ERREUR DE REQUETE SUR LA BASE';
fclose($fp); // fermeture du fichier
exit();
}
else // else, affichage d'un tableau HTML récapitulant tous les enregistrements ajoutés
{
}
}
}
fclose($fp); // fermeture du fichier
/*==================
Fin de traitement du fichier maj.csv
//==================*/
} |
Voici le fichier source CSV que je transfère:
Code:
1 2 3 4 5 6
| T10001;P1
T10002;P2
T10003;P3
T10004;P4
T10005;P5
T10006;P6 |
Il est bien transféré vers ma table MySQL mais des sauts de lignes sont ajoutés:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| -- Structure de la table `majponctuelle`
--
CREATE TABLE `majponctuelle` (
`site_theorique` varchar(11) NOT NULL,
`priorite_finale` varchar(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Contenu de la table `majponctuelle`
--
INSERT INTO `majponctuelle` (`site_theorique`, `priorite_finale`) VALUES ('T10001', 'P1\r\n'),
('T10002', 'P2\r\n'),
('T10003', 'P3\r\n'),
('T10004', 'P4\r\n'),
('T10005', 'P5\r\n'),
('T10006', 'P6\r\n'); |
PS: j'ai remarqué que lorsque je change le type de champ `priorite_finale` varchar(11) NOT NULL en `priorite_finale` int(11) NOT NULL, les sauts de ligne disparaissent. Avez vous une idée pourquoi ces sauts de ligne sont ajoutés et comment les éliminer? Merci.
Cordialement.