Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/12/2011, 13h00   #1
Invité de passage
 
Femme
Inscription : novembre 2011
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : novembre 2011
Messages : 26
Points : 0
Points : 0
Par défaut insertion de données csv dans une base de données

Voilà mon code

Code :
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
angelina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 13h47   #2
Invité de passage
 
Femme
Inscription : novembre 2011
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : novembre 2011
Messages : 26
Points : 0
Points : 0
Voilà le code en total et j'ai une autre erreur lorsque j'ai ajouter un if dans la boucle for:

Code :
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
angelina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 13h53   #3
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
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
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/12/2011, 15h03   #4
Invité de passage
 
Femme
Inscription : novembre 2011
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : novembre 2011
Messages : 26
Points : 0
Points : 0
Mais quand je fais par exemple echo $tableau[2][1]; dans ma page php j'obtiens la valeur du champ voulu !!
angelina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 15h18   #5
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 454
Points : 3 454
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
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/12/2011, 15h52   #6
Invité de passage
 
Femme
Inscription : novembre 2011
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : novembre 2011
Messages : 26
Points : 0
Points : 0
Ok,donc je vais juste remplacer fgets() par fgetcsv() ?
angelina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 15h54   #7
Invité de passage
 
Femme
Inscription : novembre 2011
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : novembre 2011
Messages : 26
Points : 0
Points : 0
Il me genere bcp d'erreurs à ce niveau là
Code :
$tableau[$i] = explode (";" ,fgetcsv($FILE,1000));
:/
angelina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 15h59   #8
Invité de passage
 
Femme
Inscription : novembre 2011
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : novembre 2011
Messages : 26
Points : 0
Points : 0
Ahh désolée la syntaxe est fausse
angelina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 16h09   #9
Invité de passage
 
Femme
Inscription : novembre 2011
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : novembre 2011
Messages : 26
Points : 0
Points : 0
ça marche maintenant merci bcp
angelina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 17h22   #10
Invité de passage
 
Femme
Inscription : novembre 2011
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : novembre 2011
Messages : 26
Points : 0
Points : 0
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 :
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`))
angelina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 00h57   #11
Invité de passage
 
Femme
Inscription : novembre 2011
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : novembre 2011
Messages : 26
Points : 0
Points : 0
Problème résolu mais dans ma base de données je sais pas pourquoi la première colonne est vide?
angelina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h20.


 
 
 
 
Partenaires

Hébergement Web