IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Apparition de saut de lignes après import CSV


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 91
    Points : 49
    Points
    49
    Par défaut 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 : 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.

  2. #2
    Membre confirmé Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Points : 576
    Points
    576
    Par défaut
    Salut,
    Les sauts de lignes sont "generes" par les /r/n . Si tu veux inserer sans saut de ligne tu doit les supprimer. Tu peux faire ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    $search="/r/n";
    $replace="";
    $Txt =  str_replace($search ,$replace,$txt);
    Pour l'explication, quand tu stocke en int alors le /r/n est converti en int et ne represente plus un saut de ligne...

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    La fonction fgets lit le fichier ligne par ligne mais les caractères de nouvelle ligne y sont conservés. L'application, par exemple, de la fonction rtrim sur les données lues permettra de les supprimer.

Discussions similaires

  1. [CKEditor] Ajout automatique de saut de ligne après enregistrement
    Par janclod dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 23/12/2008, 22h14
  2. [2.2.2] Saut de ligne après un Text
    Par imhotep_zr7s dans le forum BIRT
    Réponses: 13
    Dernier message: 06/08/2008, 15h36
  3. [CSV] Saut de ligne dans un csv
    Par ThE BiShOp* dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2007, 14h21
  4. Réponses: 4
    Dernier message: 14/02/2006, 08h35
  5. [DOM] Problème de suppression sauts de lignes après modification XML
    Par chabada dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 15/06/2005, 13h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo