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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.