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 :

CSV : Insertion de deux lignes sur la BDD alors que j'ai une seule


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2014
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2014
    Messages : 160
    Points : 71
    Points
    71
    Par défaut CSV : Insertion de deux lignes sur la BDD alors que j'ai une seule
    Bonjour à tous,

    Je vous joins un fichier csv qui contient deux lignes de données, la première sert à identifier les champ de la BDD, et la deuxième sont les données à insérer.

    la dernière cellule contient :

    Equipe : EQB.ND: .Avec rendez-vous.Marge : N.Bloc-note :ComTechPC:LA SWISSAIR.--.Marge : N.Commentaire suivi: PARI#7#15/05/2017 - 14:14:34 - ugpc0001MARQUAGE PILPRO WS RMC15/05/2017 - 14:32:15 - ugpc0001MARQUAGE PILPRO WS ROA15/05/2017 - 14:58:21 - ugpc0001MARQUAGE PILPRO WS TVC SANS DPA15/05/2017 - 15:23:39 - ugpc0001MARQUAGE PILPRO WS TVC AVEC DPA15/05/2017 - 15:46:37 - ugpc0001MARQUAGE PILPRO WS ANN15/05/2017 - 16:13:25 - ugpc0001MARQUAGE PILPRO WS DMS15/05/2017 - 16:38:17 - ugpc0001MARQUAGE PILPRO WS PBC15/05/2017 - 17:03:42 - ugpc0001MARQUAGE PILPRO WS ETU.Nom Contact: BOISSEE DAMIEN. ND Contact: 0261530053. .Déconstructions préalables !.OT Wholesale
    Mon problème est lorsque je veux importer le fichier, les données sont bien insérées mais le problème c'est que toujours une deuxième ligne s’insère dans la bdd dans le premier champ avec une partie de données qui se trouve dans la dernière cellule de la deuxième ligne CSV.

    Nom : qs.JPG
Affichages : 217
Taille : 32,2 Ko


    E PILPRO WS ETU.Nom Contact: BOISSEE DAMIEN. ND Contact: 0261530053. .Déconstructions préalables !.OT Wholesale
    Pouvez vous m'aider !
    Merci d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Il te faut simplement ignorer la première ligne, tu as plusieurs manières de le faire, soit avec un fgetcsv qui sert juste à récupérer la première ligne mais qui ne fait rien, soit avec un compteur qui va ignorer la première ligne.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  3. #3
    Membre régulier
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2014
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2014
    Messages : 160
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par Spartacusply Voir le message
    Il te faut simplement ignorer la première ligne, tu as plusieurs manières de le faire, soit avec un fgetcsv qui sert juste à récupérer la première ligne mais qui ne fait rien, soit avec un compteur qui va ignorer la première ligne.
    La première ligne ne s’insère pas c'est juste représente les champs de la table.

    le fichier csv que j'ai contient plus que 200 lignes de données, alors que le problème se produit dans la ligne 192 (la ligne que je vous ai joint (deuxième ligne) représente la ligne qui produit le pb).

    Oublie la première ligne, le pb se concentre sur la deuxième ligne comme je vous ai montré sur l'image, l'id 3 représente la ligné concerné (bien ajoutée)
    L'identifiant 4 contient quelques caractères de la dernière cellule, pourqoui ?

  4. #4
    Membre averti
    Homme Profil pro
    Autres
    Inscrit en
    Mai 2017
    Messages
    279
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Autres

    Informations forums :
    Inscription : Mai 2017
    Messages : 279
    Points : 421
    Points
    421
    Par défaut
    Ton problème pourrait provenir du type et de la longeur du champ DESCRIPTION dans ta base de données. N'est-il pas un VARCHAR(255) par hasard? si c'est le cas passe le à TEXT et réessaies ton importation.
    L’appétit vient en mangeant.
    Pourquoi compliquer quand on peut faire plus simple?
    Une réponse vous a été utile? pensez à
    Vous avez eu la réponse à votre question? marquez votre discussion
    Faites un tour aux FAQs et aux tutoriels et cours.

  5. #5
    Membre régulier
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2014
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2014
    Messages : 160
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par Nazoïde Voir le message
    Ton problème pourrait provenir du type et de la longeur du champ DESCRIPTION dans ta base de données. N'est-il pas un VARCHAR(255) par hasard? si c'est le cas passe le à TEXT et réessaies ton importation.
    C'est un TEXT.
    De plus l'insertion se fait parfaitement, car j'ai le texte complet sur le champ.

  6. #6
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Ton fichier comporte 2 lignes. Or l'image que tu postes montre les lignes 3 et 4. Qu'est-ce qu'il y a ligne 2 ?
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  7. #7
    Membre régulier
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2014
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2014
    Messages : 160
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par badaze Voir le message
    Ton fichier comporte 2 lignes. Or l'image que tu postes montre les lignes 3 et 4. Qu'est-ce qu'il y a ligne 2 ?
    L'image a été pris après que j'ai fait le premier test c'est pourquoi l'identifiant est marqué 3 et 4.

    Le fichier CSV contient plus de 200 lignes, alors j'ai eu le problème la première fois et j'ai cherché où se passe le problème exactement j'ai trouvé la ligne 192, je lai copié dans un nouveau fichier avec la première ligne des titres.

  8. #8
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Peux tu poster le code utilisé car ce n'est pas commun ton truc.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  9. #9
    Membre régulier
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2014
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2014
    Messages : 160
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par badaze Voir le message
    Peux tu poster le code utilisé car ce n'est pas commun ton truc.
    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
      while (!feof($fp)) //on importe le fichier
                                        { 
     
                                          $ligne = trim(fgets($fp,4096));
                                            if (empty($ligne))  continue;//tant qu'on est pas ?la fin du fichier, on li une ligne
                                            $nbr_fic++;
                                           if($nbr_fic>0)
                                            {         
                                                $liste = explode( ";",$ligne); // On r?up?e les champs s?ar? par ; dans liste  
                                              //  echo "<br/>".$liste[0]."<br/>";                                      
                                              $Insert ="INSERT INTO `".$typexp."`(";
     
                                              for($c=0;$c<count($liste1);$c++)
                                              {   
                                                if ($c==count($liste1)-1) 
                                                { 
                                                  $Insert.="`".$liste1[$c]."`,date_import";                                           
                                                }
                                                else
                                                { 
                                                  $Insert.="`".$liste1[$c]."`,";                                          
                                                }
                                              }
     
                                                $Insert.=") VALUES (";
     
                                             for($c=0;$c<count($liste1);$c++)
                                                {   
                                                  if ($c==count($liste1)-1) 
                                                  { 
                                                    $Insert.="'".mysqli_escape_string($conn,$liste[$c]) ."','$dateexp'"; 
                                                  }
                                                  else
                                                  { 
                                                    $Insert.="'".mysqli_escape_string($conn,$liste[$c])."',";
                                                  }
                                                }
     
                                                $Insert.=")";
                                          }
     
     
                                         if ($conn->query($Insert) === TRUE)
                                          {
     
                                             $varok="ok";
                                          } 
                                          else 
                                          {
                                            echo $conn->error."<br>";
                                          }
     
                                      }

  10. #10
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Je pense avoir compris. Tu mets un buffer de 4.096 or ta ligne fait 4.188 caractères.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  11. #11
    Membre régulier
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2014
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2014
    Messages : 160
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par badaze Voir le message
    Je pense avoir compris. Tu mets un buffer de 4.096 or ta ligne fait 4.188 caractères.
    Peux-tu m’éclairer ? car j'ai juste pris la fonction comme elle est et je l'ai exploité dans mon code.

  12. #12
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Je veux dire que tu as :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $ligne = trim(fgets($fp,4096));

    Or la ligne qui ne va pas a une longueur de 4.188 caractères. Le code que tu utilises la lit en 2 fois.

    Essaie avec :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ligne = trim(fgets($fp,5120));

    Evidemment, si dans le futur tu as des cas où une ligne fait plus de 5 Ko tu auras de nouveau le problème.

    Avant : 2 lignes

    Nom : 2017052_001.JPG
Affichages : 251
Taille : 89,5 Ko

    Après : 1 ligne
    Nom : 2017052_002.JPG
Affichages : 260
Taille : 85,2 Ko
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

  13. #13
    Membre régulier
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Janvier 2014
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Cyberdocumentaliste
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2014
    Messages : 160
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par badaze Voir le message
    Je veux dire que tu as :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $ligne = trim(fgets($fp,4096));

    Or la ligne qui ne va pas a une longueur de 4.188 caractères. Le code que tu utilises la lit en 2 fois.

    Essaie avec :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ligne = trim(fgets($fp,5120));

    Evidemment, si dans le futur tu as des cas où une ligne fait plus de 5 Ko tu auras de nouveau le problème.

    Avant : 2 lignes

    Nom : 2017052_001.JPG
Affichages : 251
Taille : 89,5 Ko

    Après : 1 ligne
    Nom : 2017052_002.JPG
Affichages : 260
Taille : 85,2 Ko
    Parfait, mercii badaze

  14. #14
    Membre émérite
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Points : 2 522
    Points
    2 522
    Par défaut
    Si c'est résolu mets la discussion comme résolue.
    Cela ne sert à rien d'optimiser quelque chose qui ne fonctionne pas.

    Mon site : www.emmella.fr

    Je recherche le manuel de l'Olivetti Logos 80B.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/07/2011, 11h00
  2. [XL-2002] aide insertion automatique de lignes sur Excel
    Par Bendrien dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/04/2009, 11h49
  3. [PHP 4] Formulaire insertion de deux lignes à la fois
    Par aliwassem dans le forum Langage
    Réponses: 5
    Dernier message: 09/02/2009, 11h18
  4. Caption sur deux lignes sur un bouton?
    Par Jayceblaster dans le forum Delphi
    Réponses: 4
    Dernier message: 09/06/2006, 13h57
  5. Deux lignes sur un TButton
    Par bml dans le forum Composants VCL
    Réponses: 2
    Dernier message: 24/07/2003, 11h17

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