Bonjour
J'ai résolu (avec votre aide) une grosse partie de mes problèmes, voici le code pour insérer un fichier csv dans une base mysql:
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?php 
////include ("inc/prive.inc.php");
include ("inc/fonctions.inc.php");
////include ("config/constantes.inc.php");
Normalisation();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
  <title><?php echo ECOLE ?></title>
  <link media="screen" rel="stylesheet" href="config/screen.css" type="text/css">
  <link media="print" rel="stylesheet" href="config/print.css" type="text/css">
  <link rel="stylesheet" href="config/menu.css" type="text/css" media="screen">
    <script language="javascript" type="text/javascript" src="inc/fonctions.js">
  </script>
</head>
<body>
<?php
// autorisations pour la page
////autoriser ("admin");
// menu
require ("inc/menu.inc.php");
?>
<div id="texte">
<h2>Importation d'un fichier CSV</h2>
<?php
$mode = isset($_POST['mode']) ? $_POST['mode'] : Null;
 
switch ($mode)
 {
 case 'Confirmer': 
	// ouvrir la BD
	include ("variables.inc.php");
	$lienDB = mysql_connect($bddserver, $bddlogin, $bddpassword);
	mysql_select_db ($bdd);
 
	$handle = fopen("./eleves.csv", "r");
	$ligne = 1;
	while (($data = fgetcsv($handle, 5000, ";","\"")) !== FALSE) 
		{
		$num = count($data);
		if ($ligne == 1)
			{
			// sur la première ligne, on trouve les intitulés des colonnes
			$debutsql = "INSERT INTO elevescomplete23 (";
			for ($i=0; $i < $num; $i++) 
				{
				$debutsql .= "`$data[$i]";
				if ($i < $num-1) $debutsql .= "`,";
				}
			$debutsql .= "`) VALUES (";
			}
			else
			{
			// sur les lignes suivantes, on trouve les infos à introduire dans la BD
			$sql = $debutsql;
			for ($i=0; $i < $num; $i++) 
				{
				$sql .= "'".mysql_real_escape_string($data[$i])."'";
				if ($i < $num-1) $sql .= ","; else $sql .= ");";
				}
			mysql_query($sql);
			if (mysql_error()) 
				{ 
				echo mysql_error() ."<br>\n";  
				$erreur = true;
				}
			}
			$ligne++;
			echo "$sql <br />";
			mysql_query($sql);
		}
		fclose($handle);
		mysql_close ($lienDB);
        if ($erreur == false)
			{
			$texte = "L'importation des données semble s'être bien passée.";
			//redir ("index.php","",$texte, 5000);
            }
			else 
			{
			$texte = "Il s'est produit une erreur durant l'importation.";
			//redir ("index.php","",$texte, 10000);
			}
 break;
 case 'Envoyer':
	// recopie du fichier sous un nom définitif
	$nomTemporaire = $_FILES['fichierCSV']['tmp_name'];
	if( !move_uploaded_file($nomTemporaire, "./eleves.csv") )
		exit("Impossible de copier le fichier.");
 
		echo "<div style=\"text-align: center\">\n";
        echo "<form name=\"form1\" method=\"post\" action=\"{$_SERVER['PHP_SELF']}\">\n";
        echo "<p>Le fichier CSV a été transmis au serveur.</p>\n";
        echo "<p>Veuillez confirmer l'importation des données.</p>\n";
		echo "<p>\n<input type=\"reset\" name=\"submit\" value=\"Annuler\"";
		echo "onclick=\"javascript:history.go(-1)\">\n";
        echo "<input type=\"submit\" value=\"Confirmer\" name=\"mode\"></p>\n";
        echo "</form>\n";
        echo "</div>\n";
 
	// tableau de prévisualisation
	echo "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\">\n";
	$handle = fopen("./eleves.csv", "r");
	//while (($data = fgetcsv($handle, 5000, ",","\"")) !== FALSE) 
	while (($data = fgetcsv($handle, 5000, ";","\"")) !== FALSE) 
		{
		$num = count($data);
		echo "<tr>\n";
		for ($i=0; $i < $num; $i++) 
			echo "<td>".$data[$i] . "</td>\n";
		echo "</tr>\n";
		}
	fclose($handle);
	echo "</table>\n";
	break;
 default:
	echo "<form method=\"post\" action=\"{$_SERVER['PHP_SELF']}\" ";
	echo "name=\"form1\" enctype=\"multipart/form-data\">\n";
	echo "<input name=\"fichierCSV\" type=\"file\">\n";
	echo "<input name=\"mode\" value=\"Envoyer\" type=\"submit\">\n";
	echo "</form>\n";
 break;
 }
?>
</div>
 
</body>
</html>
Cela marche très bien sauf que j'ai mes enregistrements en double....Pourquoi ?
Pourtant j'ai bien une seule fois
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
INSERT INTO elevescomplete23 (`Nom`,`Prénom 1`) VALUES ('YERESKIN','Yasin'); 
INSERT INTO elevescomplete23 (`Nom`,`Prénom 1`) VALUES ('CORUK','Serpil');
et dans ma base les élèves apparaissent deux fois....