Bonjour,

Je cherche à importer des fichiers .CSV (créés par un programme, le nom du fichier est toujours unique et saisi par l'utilisateur du programme) directement dans ma base MySQL, sans intervention supplémentaire de l'utilisateur.

Seulement, je ne vois pas comment les importer dans une BDD sans intervention de l'utilisateur, et non plus comment lui faire importer plusieurs nouveaux fichiers depuis la dernière importation sans prendre en compte ceux déjà présent dans la base.


Je suis tombé sur cette fonction en cherchant :

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
<?php
	if(isset($_FILES['csv']))
	{ 
		 $dossier = 'upload/';
		 $fichier = basename($_FILES['csv']['name']);
		 if(move_uploaded_file($_FILES['csv']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
		 {
			  echo "Upload du fichier effectué avec succès !";
		 }
		 else //Sinon (la fonction renvoie FALSE).
		 {
			  echo "Echec de l\'upload !";
		 }
	}
 
	echo "<br>Chemin du fichier : upload/".$_FILES['csv']['name']."<br><br>Resultat Import SQL : <br>";
 
	mysql_connect('localhost', 'root', '');
	mysql_select_db('xls_db');
	mysql_query("SET NAMES UTF8");
 
	//Le chemin d'acces a ton fichier sur le serveur
	$fichier = fopen("upload/".$_FILES['csv']['name'], "r");
 
	//tant qu'on est pas a la fin du fichier :
	while (!feof($fichier))
	{
	// On recupere toute la ligne
	$uneLigne = addslashes(fgets($fichier));
	//On met dans un tableau les differentes valeurs trouvés (ici séparées par un ';')
	$tableauValeurs = explode(';', $uneLigne);
	// On crée la requete pour inserer les donner (ici il y a 12 champs donc de [0] a [11])
	$sql="INSERT IGNORE INTO histo VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."', '".$tableauValeurs[2]."', '".$tableauValeurs[3]."', '".$tableauValeurs[4]."', '".$tableauValeurs[5]."', '".$tableauValeurs[6]."', '".$tableauValeurs[7]."')";
 
	$req=mysql_query($sql)or die (mysql_error());
	// la ligne est finie donc on passe a la ligne suivante (boucle)
	}
	//vérification et envoi d'une réponse à l'utilisateur
	if ($req)
	{
	echo "<h2>Ajout dans la base de données effectué avec succès</h2>";
	}
	else
	{
	echo "Echec dans l'ajout dans la base de données";
	}
?>
Elle me permettrait de demander à l'utilisateur de sélectionner 1 fichier csv et de l'importer, hors je dois en importer plusieurs sans que l'utilisateur n'ai besoin de les importer manuellement.

Autre piste sur laquelle je me questionne :

- Création d'un programme qui se chargerais d'importer les fichiers csv.
Le programme serait exécuté par taches planifiés depuis le serveur tout les jours à une certaine heure.

Mais je pense qu'il y a plus simple comme solution.
Si quelqu'un à une idée comment procéder, je lui en serait très reconnaissant.