Bonjour a tous !

Je me permets de poster un topic ici, car après 2 longues journées de recherche, je ne trouve rien sur le net qui me soit correct.

J'expose mon probleme :

J'ai d'un coté un fichier excel ( assez volumineux )

J'ai d'un autre coté une base de données MySQL.

J'ai d'un dernier coté mon site web.

Je souhaite créer un bouton, permettant a l'utilisateur du site de charger ses tableaux Excel dans ma base. (Comme je le ferai avec l'importation de CSV dans le panel d'admin de MySQL.)

Cependant, il ne doit pas avoir acces a cette dernière.

J'ai trouvé un bout de code qui semble se rapprocher de ma demande.. Mais rien ne se passe et je peine a comprendre comment il fonctionne :

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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
 
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
********<fieldset>
************<legend>Pour ajouter ton serveur il suffit de remplir ce formulaire </legend>
****************<label>Table : <input type="text" name="table" /></label>
****************<label>Fichier : <input type="file" name="fichier" /></label>
****************<label>Créer table ? <input type="checkbox" name="creertable" checked="checked" /></label>
****************<input type="hidden" name="site" value="ajouter" />*
****************<input type="submit" name="submit" value="Et HoP !" />
********</fieldset>
****</form>
*
****<?php // Variables de connexion
$serveur = "localhost";
$bddlogin = "root";
$mdp = "root";
$bdd = "MonTest";
*
mysql_connect($serveur, $bddlogin, $mdp) or die('Impossible de se connecter à la base de données.'.mysql_error());
mysql_select_db($bdd);
*
*
if ($creertable) // Si la variable existe, on créé la table
{
**$sql = " CREATE* TABLE* $bdd.$table (* `id` int( 10* )* NOT* NULL* AUTO_INCREMENT , `titre` varchar( 255* ) NOT* NULL default* '', `numero` int( 10* )* NOT* NULL default* '0', `reccueil` varchar( 255* )* NOT* NULL default* '', `auteur` varchar( 255* )* NOT* NULL default* '', `transparent` varchar( 10* )* NOT* NULL default* '', `copyright` varchar( 10* )* NOT* NULL default* '', KEY* `id` (* `id`* )* ) ENGINE* =* MYISAM DEFAULT CHARSET* = latin1";
**$result= mysql_query($sql);
}
?>
*
<?php
if (file_exists($fichier)) // On ouvre le fichier à importer en lecture seulement
*****$fp = fopen("$fichier", "r");
else // le fichier n'existe pas
{
*******echo 'Fichier introuvable ! Importation stoppée.';
*******exit();
}
?>
*
<?php
while (!feof($fp)) // Le fichier est ouvert, on se prépare à l'importer !
{
$ligne = fgets($fp,4096); // Tant qu'on n'atteint pas la fin du fichier On lit une ligne . 4096 est un grand nombre au hasard. Pas trop grand quand même^^
*
$liste = explode( ";",$ligne);* // On récupère les champs séparés par ; dans liste. On les met dans un tableau grâce à explode().
*****// On assigne des variables simples à chaque case du tableau // Grâce à str_replace() on supprime les trémas en trop.
if(isset($liste[0])) { $titre = htmlentities(addslashes(str_replace('"', '', $liste[0]))); } else { $titre = ""; }
if(isset($liste[1])) { $numero = htmlentities(addslashes(str_replace('"', '', $liste[1]))); } else { $numero = ""; }
if(isset($liste[2])) { $reccueil = htmlentities(addslashes(str_replace('"', '', $liste[2]))); } else { $reccueil = ""; }
if(isset($liste[3])) { $auteur = htmlentities(addslashes(str_replace('"', '', $liste[3]))); } else { $auteur = ""; }
if(isset($liste[7])) { $transparent = htmlentities(addslashes(str_replace('"', '', $liste[7]))); } else { $transparent = ""; }
if(isset($liste[8])) { $copyright = htmlentities(addslashes(str_replace('"', '', $liste[8]))); } else { $copyright = ""; }
*****// Finit on ajoute l'enregistrement à la table
$query = "INSERT INTO $table VALUES('', '$titre', '$numero', '$reccueil', '$auteur', '$transparent', '$copyright')";
$result= MYSQL_QUERY($query);
***
**if(mysql_error()) // s'il y a une erreur on stop le processus
{
***********print "Erreur dans la base de données : ".mysql_error();
***********print "Importation stoppée.";
***********exit();
}
else // Tout se passe bien, on affiche le résultat
**echo '<tr><td>' . stripslashes($titre) . '</td><td>' .stripslashes($numero).'</td><td>' .stripslashes($reccueil).'</td><td>' .stripslashes($auteur).'</td><td>' .stripslashes($transparent).'</td><td>' .stripslashes($copyright).'</td></tr>';
*
}
?>
*
*
<? // Si des variables POST existent, on les met dans des variables simples.
if(isset($_POST['creertable']))
***$creertable = $_POST['creertable'];
else
***$creertable = '';
if(isset($_POST['fichier']))
***$fichier = $_POST['fichier'];
if(isset($_POST['table']))
***$table = $_POST['table'];
if(isset($_POST['site']))
***$action = $_POST['site'];
else
***$action = '';
*
*
switch($action)
{
***// LECTURE ET AJOUT DES DONNEES DANS LA TABLE
***case "ajouter": // On commence par créer le début du tableau pour affiche les données.
*****echo '
*****<table border="1" cellpadding="1">
********<caption>Données converties :</caption>
********<thead>
************<tr>
****************<th>Titre</th>
****************<th>N°</th>
****************<th>Reccueil</th>
****************<th>Auteur</th>
****************<th>Transparent</th>
****************<th>Copyright</th>
************</tr>
********</thead>
********<tfoot>
************<tr>
****************<th>Titre</th>
****************<th>N°</th>
****************<th>Reccueil</th>
****************<th>Auteur</th>
****************<th>Transparent</th>
****************<th>Copyright</th>
************</tr>
********</tfoot>
********<tbody>';
// Variables de connexion
$serveur = "localhost";
$bddlogin = "root";
$mdp = "root";
$bdd = "MonTest";
*
mysql_connect($serveur, $bddlogin, $mdp) or die('Impossible de se connecter à la base de données.'.mysql_error());
mysql_select_db($bdd);
*
*
if ($creertable) // Si la variable existe, on créé la table
{
**$sql = " CREATE* TABLE* $bdd.$table (* `id` int( 10* )* NOT* NULL* AUTO_INCREMENT , `titre` varchar( 255* ) NOT* NULL default* '', `numero` int( 10* )* NOT* NULL default* '0', `reccueil` varchar( 255* )* NOT* NULL default* '', `auteur` varchar( 255* )* NOT* NULL default* '', `transparent` varchar( 10* )* NOT* NULL default* '', `copyright` varchar( 10* )* NOT* NULL default* '', KEY* `id` (* `id`* )* ) ENGINE* =* MYISAM DEFAULT CHARSET* = latin1";
**$result= mysql_query($sql);
}
***
if (file_exists($fichier)) // On ouvre le fichier à importer en lecture seulement
*****$fp = fopen("$fichier", "r");
else // le fichier n'existe pas
{
*******echo 'Fichier introuvable !Importation stoppée.';
*******exit();
}
*
while (!feof($fp)) // Le fichier est ouvert, on se prépare à l'importer !
{
$ligne = fgets($fp,4096); // Tant qu'on n'atteint pas la fin du fichier On lit une ligne . 4096 est un grand nombre au hasard. Pas trop grand quand même^^
*
$liste = explode( ";",$ligne);* // On récupère les champs séparés par ; dans liste. On les met dans un tableau grâce à explode().
*****// On assigne des variables simples à chaque case du tableau // Grâce à str_replace() on supprime les trémas en trop.
if(isset($liste[0])) { $titre = htmlentities(addslashes(str_replace('"', '', $liste[0]))); } else { $titre = ""; }
if(isset($liste[1])) { $numero = htmlentities(addslashes(str_replace('"', '', $liste[1]))); } else { $numero = ""; }
if(isset($liste[2])) { $reccueil = htmlentities(addslashes(str_replace('"', '', $liste[2]))); } else { $reccueil = ""; }
if(isset($liste[3])) { $auteur = htmlentities(addslashes(str_replace('"', '', $liste[3]))); } else { $auteur = ""; }
if(isset($liste[7])) { $transparent = htmlentities(addslashes(str_replace('"', '', $liste[7]))); } else { $transparent = ""; }
if(isset($liste[8])) { $copyright = htmlentities(addslashes(str_replace('"', '', $liste[8]))); } else { $copyright = ""; }
*****// Finit on ajoute l'enregistrement à la table
$query = "INSERT INTO $table VALUES('', '$titre', '$numero', '$reccueil', '$auteur', '$transparent', '$copyright')";
$result= MYSQL_QUERY($query);
***
**if(mysql_error()) // s'il y a une erreur on stop le processus
{
***********print "Erreur dans la base de données : ".mysql_error();
***********print "Importation stoppée.";
***********exit();
}
else // Tout se passe bien, on affiche le résultat en tableau.
**echo '<tr><td>' . stripslashes($titre) . '</td><td>' .stripslashes($numero).'</td><td>' .stripslashes($reccueil).'</td><td>' .stripslashes($auteur).'</td><td>' .stripslashes($transparent).'</td><td>' .stripslashes($copyright).'</td></tr>';
*
}
// On affiche la fin du tableau est un message explicitant que l'importation est terminé.
echo '</tbody></table>Importation terminée, avec succès.<a href="convertion.php">Refaire une importation</a>';
********// Fermeture
fclose($fp);
mysql_close();
****
***break;
*
***// Si les variables POST n'existe pas, on affiche le formulaire d'importation.
***default:
***?>*
**<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
********<fieldset>
************<legend>Pour ajouter ton serveur il suffit de remplir ce formulaire </legend>
****************<label>Table : <input type="text" name="table" /></label>
****************<label>Fichier : <input type="file" name="fichier" /></label>
****************<label>Créer table ? <input type="checkbox" name="creertable" checked="checked" /></label>
****************<input type="hidden" name="site" value="ajouter" />*
****************<input type="submit" name="submit" value="Et HoP !" />
********</fieldset>
****</form>
***<?
***break;
***} // On termine le Switch
**?>
Je vous laisse me poser des questions ou autre, et merci d'avance pour l'aide !


Un code plus court semble aussi pouvoir me donner ce que je veux ( en partie graphique uniquement ^^ )

Je vous le donne :

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
 
<html>
<head>
<title>Importer un fichier texte dans une bdd MySQL</title>
</head>
<body>
<h2>Importer un fichier texte dans une bdd MySQL</h2>
*
<?
*switch($action)
*{
**/* LECTURE ET AJOUT DES DONNEES DANS LA TABLE */
***case "ajouter":
*
*/* Variables */
***$bdd = "ZOOM"; /* Base de données */
***$host= "localhost"; /* Hote (localhost en principe) */
***$user= "root"; /* Utilisateur */
***$pass= "root"; /* Mot de passe */
*
*/* Connexion bdd */
***@mysql_connect($host,$user,$pass) or die("Impossible de se connecter à la base de données");
***@mysql_select_db($bdd);
**
*/* On cree la table */
*if ($creertable)
**{
**$query = "CREATE TABLE $table( nom varchar(24),prenom varchar(24) )";
**$result= MYSQL_QUERY($query);
**}
***
*/* On ouvre le fichier à importer en lecture seulement */
*if (file_exists($fichier))
*****$fp = fopen("$fichier", "r");
*else
*****{ /* le fichier n'existe pas */
*******echo "Fichier introuvable !<br>Importation stoppée.";
*******exit();
*****}
*******
****while (!feof($fp)) /* Et Hop on importe */
****{ /* Tant qu'on n'atteint pas la fin du fichier */
*******$ligne = fgets($fp,4096); /* On lit une ligne */*
*
*******/* On récupère les champs séparés par ; dans liste*/
*******$liste = explode( ";",$ligne);*
*****
*******/* On assigne les variables */
*******$nom = $liste[0];
*******$prenom = $liste[1];
*****
*******/* Ajouter un nouvel enregistrement dans la table */
*******$query = "INSERT INTO $table VALUES('$nom','$prenom')";
*******$result= MYSQL_QUERY($query);
***
*******if(mysql_error())
********{ /* Erreur dans la base de donnees, surement la table qu'il faut créer */
***********print "Erreur dans la base de données : ".mysql_error();
***********print "<br>Importation stoppée.";
***********exit();
********}
*******else /* Tout va bien */
*********print "$nom $prenom <br>";
*****}
******
*****echo "<br>Importation terminée, avec succès.";
********
*****/* Fermeture */
*****fclose($fp);
*****MYSQL_CLOSE();
****
***break;
****
**
***/* FORMULAIRE DE CHOIX D'IMPORTATION */*
****
***default:
***?>*
***<? echo "<form method=\"post\" action=\"$PHP_SELF\">"; ?>
*****Pour ajouter ton serveur il suffit de remplir ce formulaire
*****<table border="0" cellspacing="0" cellpadding="3">
******<tr>
*******<td>Table :</td>
*******<td> <input type="text" name="table"> </td>
******</tr>
******<tr>
*******<td>Fichier :</td>
*******<td> <input type="file" name="fichier"> </td>
******</tr>
******<tr>
*******<td>Créer table ? :</td>
*******<td> <input type="checkbox" name="creertable" checked> </td>
******</tr>
******<tr>
********<td></td>*
*******<td> <input type="submit" name="submit" value="Et HoP !"> </td>
******</tr>
*****</table>
*****<input type="hidden" name="action" value="ajouter">*
****</form>
***<?
***break;
****
***}
*
**?>
*
</body>
</html>
Merci d'avance