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 :

insertion de données csv dans une base de données


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Par défaut insertion de données csv dans une base de données
    Voilà mon code

    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
    <?php
     
        $req = "SELECT id_projet FROM projet WHERE nom_projet='" . $nom_projet . "'";
    	$result = mysql_query($req) or die('Erreur SQL !'.$req.'<br>'.mysql_error());
    	if ($result_projet = mysql_fetch_array($result)) 
    	$id_projet = $result_projet['id_projet']; // récupère id_projet dans le tableau résultat
    	//on importe le fichier à inserer dans sql
     
     
       $i=0;            
    $file=$_FILES["userfile"]["tmp_name"];
       $FILE=fopen($file,"r");               // ouverture du fichier
       while (!feof($FILE))
       {
     
    $tableau[$i] = explode (";" ,fgets($FILE,128));
     
     
         $i++; 
     
          }
       fclose($FILE);
       print '<h2>Importation termin&eacute;e</h2>';
    	$nblignes=$i;
     for ($i=1;$i<$nblignes;$i++)
             {
                 $v1=$tableau[$i][0];
                 $v2=$tableau[$i][2];
                 $v3=$tableau[$i][3];
                 mysql_query("INSERT INTO produit(num_serie,code_article,techno,id_projet)  VALUES ('$v2', '$v3', '$v1','$id_projet')")or die(mysql_error());
             }
    ?>

    et voilà l'erreur que j'ai "Incorrect string value: '\xE9lais ...' for column 'Num_serie' at row 1"
    en savant que la colonne "num_serie" est VARCHAR

    Merci d'avance

  2. #2
    Membre averti
    Femme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Par défaut
    Voilà le code en total et j'ai une autre erreur lorsque j'ai ajouter un if dans la boucle for:

    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    <?php
     
      //connection au serveur
      $cnx = mysql_connect( "localhost", "root", "" ) or die("Impossible de se connecter &agrave; la base de donn&eacute;es"); 
     
      //sélection de la base de données:
      $db  = mysql_select_db( "alu" ) or die("Impossible de se connecter &agrave; la base de donn&eacute;es");
     
      //récupération des valeurs des champs:
     
      $borderaux_client   		= $_POST["borderaux_client"] ;
      $nom_transitaire   		= $_POST["nom_transitaire"] ;
     
     
     
    //trouver le nom de projet correspondant à la demande
    $reponse= mysql_query("SELECT projet.nom_projet FROM demande_projet,demande,projet WHERE demande_projet.id_demande=demande.id_demande AND projet.id_projet=demande_projet.id_projet AND demande.borderaux_client='$borderaux_client'")or die(mysql_error());
    $donnees=mysql_fetch_array($reponse);
    $nom_projet=$donnees['nom_projet'];
     
    ?>
    <br><br>
    <p><strong>Nom projet</strong> :<?php echo $donnees['nom_projet'];?></p>
        <input type="hidden" name="nom_projet" value=<?php echo $donnees['nom_projet'];?>>
        <p>&nbsp;</p><br/>
    <?php
    	$req2 = "SELECT statut_demande FROM demande WHERE borderaux_client='".$borderaux_client."'";
    	$result3 = mysql_query($req2) or die('Erreur SQL !'.$req.'<br>'.mysql_error());
    	if ($result_statut = mysql_fetch_array($result3))
    	 $statut_demande = $result_statut['statut_demande'];
    	 if($statut_demande=="En cours")
    	 {
     
        $req = "SELECT id_projet FROM projet WHERE nom_projet='" . $nom_projet . "'";
    	$result = mysql_query($req) or die('Erreur SQL !'.$req.'<br>'.mysql_error());
    	if ($result_projet = mysql_fetch_array($result)) 
    	$id_projet = $result_projet['id_projet']; // récupère id_projet dans le tableau résultat
    	//on importe le fichier à inserer dans sql
     
     
       $i=0;            
    $file=$_FILES["userfile"]["tmp_name"];
       $FILE=fopen($file,"r");               // ouverture du fichier
       while (!feof($FILE))
       {
     
    $tableau[$i] = explode (";" ,fgets($FILE,128));
     
     
         $i++; 
     
          }
       fclose($FILE);
       print '<h2>Importation termin&eacute;e</h2>';
    	$nblignes=$i;
     for ($i=2;$i<$nblignes;$i++)
             {
    		 $v=$tableau[$i][1];
    	if($v==$borderaux_client)// sélectionner seulement les produits qui ont le borderaux client selectionné
               {  $v1=$tableau[$i][0];
                 $v2=$tableau[$i][2];
                 $v3=$tableau[$i][3];
                 mysql_query("INSERT INTO produit(num_serie,code_article,techno,id_projet)  VALUES ('$v2', '$v3', '$v1','$id_projet')")or die(mysql_error());}
             }
     
     
    }
     
    else{
    echo"<SCRIPT language=\"Javascript\">
    
    alert(\"Cette demande est d&eacute;j&agrave; close !\");
    window.location.replace(\"AjoutPr.php\");
    </SCRIPT>";
    }
     
     
     ?>
    il me donne une erreur dans la ligne où il y a $v=$tableau[$i][1];

    merci d'avance

  3. #3
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Il faut échapper les données à insérer dans MySQL avec mysql_real_escape_string( ).

    Accessoirement il vaut mieux lire le contenu de ton CSV avec fgetcsv( ) http://fr.php.net/fgetcsv

  4. #4
    Membre averti
    Femme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Par défaut
    Mais quand je fais par exemple echo $tableau[2][1]; dans ma page php j'obtiens la valeur du champ voulu !!

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par angelina88 Voir le message
    Mais quand je fais par exemple echo $tableau[2][1]; dans ma page php j'obtiens la valeur du champ voulu !!
    Tu as une erreur MySQL, ce qui compte ce n'est pas la valeur d'une variable mais la validité de la requête SQL construite.

  6. #6
    Membre averti
    Femme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Par défaut
    Ok,donc je vais juste remplacer fgets() par fgetcsv() ?

  7. #7
    Membre averti
    Femme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Par défaut
    Il me genere bcp d'erreurs à ce niveau là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tableau[$i] = explode (";" ,fgetcsv($FILE,1000));
    :/

Discussions similaires

  1. [Shell] import CSV dans une base de données.
    Par AngeDéchu dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 18/01/2012, 21h14
  2. [MySQL] Importer les données d'un fichier CSV dans une base de données
    Par joueur dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/11/2008, 11h59
  3. Réponses: 1
    Dernier message: 30/12/2007, 14h51
  4. Réponses: 6
    Dernier message: 18/07/2006, 20h32
  5. [Conception] insertion sql en php, dans une base de donnée ?
    Par artotal dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 24/10/2005, 04h34

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