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 09/12/2011, 14h43   #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 fichier .csv vers la base de données

Bonjour,
J'ai un problème d'insertion de mon fichier d'extension .CSV dans plusieurs tables de la base de données ... J'ai essayé de résoudre ça mais en vain :/

Voilà les tables de ma base de données:
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
 
--
 
-- --------------------------------------------------------
 
--
-- Structure de la table `demande`
 
CREATE TABLE IF NOT EXISTS `demande` (
`id_demande` int(11) NOT NULL auto_increment,
`Borderaux_client` varchar(200) character set ascii default NULL,
`Statut_Demande` varchar(50) character set ascii default NULL,
`Ref_dossier` varchar(200) character set ascii default NULL,
`Date_facture` varchar(50) character set ascii default NULL,
PRIMARY KEY (`id_demande`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=22 ;
 
 
 
-- --------------------------------------------------------
 
--
-- Structure de la table `demande_produit`
--
 
CREATE TABLE IF NOT EXISTS `demande_produit` (
`id_demande` int(11) NOT NULL auto_increment,
`Num_serie` varchar(50) character set ascii NOT NULL,
`RMA` varchar(200) character set ascii default NULL,
`Date_entee` varchar(50) character set ascii default NULL,
`Date_retour` varchar(50) character set ascii default NULL,
`Date_livraison` varchar(50) character set ascii default NULL,
`Delai_general` varchar(50) character set ascii default NULL,
PRIMARY KEY (`id_demande`,`Num_serie`),
KEY `FK_demande_produit_Num_serie` (`Num_serie`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
 
 
 
 
-- --------------------------------------------------------
 
--
-- Structure de la table `demande_projet`
--
 
CREATE TABLE IF NOT EXISTS `demande_projet` (
`id_projet` int(11) NOT NULL,
`id_demande` int(11) NOT NULL,
`Date_demande_projet` varchar(20) character set ascii default NULL,
PRIMARY KEY (`id_projet`,`id_demande`),
KEY `FK_Demande_projet_id_demande` (`id_demande`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
-- --------------------------------------------------------
 
--
-- Structure de la table `produit`
--
 
CREATE TABLE IF NOT EXISTS `produit` (
`Num_serie` varchar(50) character set ascii NOT NULL,
`Code_article` varchar(50) character set ascii default NULL,
`Techno` varchar(200) character set ascii default NULL,
`Designation` varchar(200) character set ascii default NULL,
`Situation` varchar(40) character set ascii default NULL,
`Remarques` varchar(50) character set ascii default NULL,
`id_projet` int(11) NOT NULL,
PRIMARY KEY (`Num_serie`),
KEY `FK_Produit_id_projet` (`id_projet`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
 
-- --------------------------------------------------------
 
--
-- Structure de la table `projet`
--
 
CREATE TABLE IF NOT EXISTS `projet` (
`id_projet` int(11) NOT NULL auto_increment,
`Client` varchar(40) character set ascii default NULL,
`Nom_projet` varchar(200) character set ascii default NULL,
`Chef_de_Projet` varchar(200) character set ascii default NULL,
`Statut` varchar(40) character set ascii default NULL,
`OTP` varchar(40) character set ascii default NULL,
PRIMARY KEY (`id_projet`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=21 ;
 
 
-- --------------------------------------------------------
 
--
-- Structure de la table `transitaire`
--
 
CREATE TABLE IF NOT EXISTS `transitaire` (
`nom_transitaire` varchar(50) character set ascii NOT NULL,
`contact_info` varchar(20) character set ascii default NULL,
PRIMARY KEY (`nom_transitaire`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
-- --------------------------------------------------------
 
--
-- Structure de la table `transit_produit`
--
 
CREATE TABLE IF NOT EXISTS `transit_produit` (
`nom_transitaire` varchar(50) character set ascii NOT NULL,
`Num_serie` varchar(50) character set ascii NOT NULL,
`Date_transitaire` varchar(50) character set ascii default NULL,
`Date_arrivee_France` varchar(50) character set ascii default NULL,
`Delai_export` varchar(50) character set ascii default NULL,
`Date_depart_France` varchar(50) character set ascii default NULL,
`Delai_import` varchar(50) character set ascii default NULL,
PRIMARY KEY (`nom_transitaire`,`Num_serie`),
KEY `FK_Transit_produit_Num_serie` (`Num_serie`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--------------------------------------------------------------------
****Pour mon fichier CSV il a les colonnes suivantes:
techno,num_serie,code_article,date_entree,date_facture,date_transitaire,date_arrivee_france,date_depart_france,delai_export,
date_retour,date_livraison,delai_import,delai_general,remarques

*** Voilà plus claire concernant mon fichier CSV je vais écrire table.colonne pour savoir pour chaque colonne de la table la colonne du csv correspondante:

produit.techno,produit.num_serie,produit.code_article,demande_produit.date_entree,
demande.date_facture,transit_produit.date_transitaire,transit_produit.date_arrivee_france,
transit_produit.date_depart_france,transit_produit.delai_export,demande_produit.date_retour,demande_produit.date_livraison,
transit_produit.delai_import,demande_produit.delai_general,produit.remarques

Merci pour votre comprehension
angelina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 18h26   #2
Membre éclairé
 
Avatar de humitake
 
Homme Olivier
Étudiant
Inscription : novembre 2010
Messages : 303
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 20
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : novembre 2010
Messages : 303
Points : 384
Points : 384
Est-ce que tu pourrais poster la ou les erreurs ?

Désolé mais j'ai cassé ma boule de cristal
humitake est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 21h05   #3
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
Justement je sais pas comment procéder :/ et je suis pressée par le temps j'ai cherché dans pas mal des forums mais ça marche pas!
angelina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 23h54   #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
J'attends vos suggestions impatiemment :/
Merci d'avance
angelina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2011, 12h22   #5
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
J'ai essayé de faire ce code comme test juste pour inserer les 3 colonnes de csv mais ça marche pas :

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
105
106
107
108
 
<?php  
//connection au serveur  
$cnx = mysql_connect( "localhost", "root", "" ) or die("Impossible de se connecter à la base de données" );  
//sélection de la base de données:  
$db = mysql_select_db( "alu" ) or die("Impossible de se connecter à la base de donné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'];?>>  
<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" )  
{  
//on importe le fichier à inserer dans sql  
$file=$_FILES["userfile"]["tmp_name"];  
 
if (file_exists($file))  
{  
$open=fopen($file,"r" );  
}  
 
else  
{  
echo "Fichier introuvable !<br>Importation stoppée.";  
exit();  
}  
while (($fileop=fgetcsv($open,1000,";" )) !==false)  
{  
$num_serie=$fileop[2];  
$code_article=$fileop[3];  
$designation=$fileop[1];  
 
$reponse1 = mysql_query("SELECT * FROM produit where num_serie='$num_serie' " )or die( mysql_error() );  
$i=0;  
while($donnees=mysql_fetch_array($reponse1))  
{  
$i=1;  
}  
if($i==0)  
{  
 
$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  
 
$query = "INSERT INTO produit(num_serie,code_article,designation,id_projet)VALUES('$num_serie','$code_article','$designation','$id_projet')";  
$requete1 = mysql_query($query, $cnx) or die( mysql_error() ) ;  
 
$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  
 
$sql2 = "INSERT INTO demande_produit (id_demande,num_serie)  
VALUES ('$id_demande','$num_serie')" ;  
$requete2 = mysql_query($sql2, $cnx) or die( mysql_error() ) ;  
 
$sql3 = "INSERT INTO transit_produit (nom_transitaire,num_serie)  
VALUES ('$nom_transitaire','$num_serie')";  
$requete3 = mysql_query($sql3, $cnx) or die( mysql_error() ) ;  
 
//affichage des résultats, pour savoir si l'insertion a marché:  
if($requete1 && $requete2 && $requete3)  
{  
echo("L'insertion a été correctement effectuée" ) ;  
}  
else  
{  
echo("L'insertion a échouée" ) ;  
}  
}  
else{  
echo"<SCRIPT language=\"Javascript\">  
alert(\"Ce produit existe!\" );  
window.location.replace(\"ajout_produit.php\" );  
</SCRIPT>";  
exit();  
}  
}  
fclose($open);  
print '<h2>Importation terminée</h2>';  
}  
else{  
echo"<SCRIPT language=\"Javascript\">  
alert(\"Cette demande est déjà close !\" );  
window.location.replace(\"AjoutPr.php\" );  
</SCRIPT>";  
}  
?>


et Quand j'execute voilà l'erreur que j'ai:
"Incorrect string value: '\xB0 de S...' for column 'Num_serie' at row 1"
Ils m'ont dit de travailler avec une boucle de deux dimensions pour lire le fichier et l'inserer dans ma base de données mais je sais pas comment!!

et la deuxieme chose c'est que je sais pas comment inserer dans plusieurs table avec ce que mon fichier csv contient de colonnes.


merci d'avance
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 22h16.


 
 
 
 
Partenaires

Hébergement Web