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

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Points : 12
    Points
    12
    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 à l'essai
    Femme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Points : 12
    Points
    12
    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 éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 043
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 043
    Points : 8 075
    Points
    8 075
    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
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Points : 12
    Points
    12
    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 éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 043
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 043
    Points : 8 075
    Points
    8 075
    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.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

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

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

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

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Points : 12
    Points
    12
    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));
    :/

  8. #8
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Ahh désolée la syntaxe est fausse

  9. #9
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    ça marche maintenant merci bcp

  10. #10
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Apres avoir réussi à importer vers une simple table de la base de données j'ai essayé de faire de meme pour inserer dans plusieur tables mais j'ai une erreur

    voilà ce que j'ai fait:
    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
    <?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
     
        $req1 = "SELECT id_demande FROM demande WHERE borderaux_client='" . $borderaux_client. "'";
    	$result1 = mysql_query($req1) or die('Erreur SQL !'.$req.'<br>'.mysql_error());
    	if ($result_demande = mysql_fetch_array($result1)) 
    	$id_demande = $result_demande['id_demande']; // récèpure id_demande 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] = fgetcsv($FILE,1000,';');
     
     
         $i++; 
     
          }
       fclose($FILE);
       print '<h2>Importation termin&eacute;e</h2>';
     
    	$nblignes=$i;
     for ($i=2;$i<$nblignes;$i++)
             {
     
    		     $v=$tableau[$i][0];//techno
    			 $v11=$tableau[$i][1];//designation
    			 $v1=$tableau[$i][2];//num_serie
                 $v2=$tableau[$i][3];//code_article
                 $v3=$tableau[$i][4];//date_entree
    			  $v5=$tableau[$i][5];//RMA
                 $v6=$tableau[$i][6];//date_facture
                 $v7=$tableau[$i][7];//date_transitaire
    			  $v8=$tableau[$i][8];//date_arrivee_france
                 $v9=$tableau[$i][10];//date_depart_france
                 $v10=$tableau[$i][11];//date_retour
    			  $v11=$tableau[$i][12];//date_livraison
    			  $v12=$tableau[$i][15];//remarques
     
                 mysql_query("INSERT INTO produit(num_serie,code_article,techno,designation,id_projet)  VALUES ('$v1', '$v2', '$v','$v11','$id_projet')")or die(mysql_error());
    			 $sql2 = "INSERT  INTO demande_produit (id_demande,num_serie,RMA,date_entree,date_retour,date_livraison)
               VALUES ('$id_demande','$v2','$v5','$v3','$v10','$v11')" ;
        $requete2 = mysql_query($sql2, $cnx) or die( mysql_error() ) ;
     
    	$sql3 = "INSERT  INTO transit_produit (nom_transitaire,num_serie,date_transitaire,date_arrivee_france,date_depart_france)
               VALUES ('$nom_transitaire','$v2','$v7','$v8','$v9')";
    	 $requete3 = mysql_query($sql3, $cnx) or die( mysql_error() ) ;
     
     
             } 
     
     
     
    }
     
    else{
    echo"<SCRIPT language=\"Javascript\">
    
    alert(\"Cette demande est d&eacute;j&agrave; close !\");
    window.location.replace(\"AjoutPr.php\");
    </SCRIPT>";
    }
     
     
     ?>
    voilà l'erreur :

    Cannot add or update a child row: a foreign key constraint fails (`alu/demande_produit`, CONSTRAINT `FK_demande_produit_Num_serie` FOREIGN KEY (`Num_serie`) REFERENCES `produit` (`Num_serie`))

  11. #11
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    Problème résolu mais dans ma base de données je sais pas pourquoi la première colonne est vide?

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, 22h14
  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, 12h59
  3. Réponses: 1
    Dernier message: 30/12/2007, 15h51
  4. Réponses: 6
    Dernier message: 18/07/2006, 21h32
  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, 05h34

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