comment uploader un fichier excel en php pour alimenter une base de données ?

freud
Invité n'ayant pas de compte PHPfrance

29 sept. 2008, 20:02

Bonjour à la communauté :)

J'aimerais savoir comment uploader un fichier excel en php pour alimenter une base de données ?

avec chaque donnée correspondant à une rubrique.
la première ligne c'est les rubriques
ensuite les lignes suivantes c'est les données

un enregistrement pour chaque ligne

une foultitude d'enregistrements
viennent alimenter la table qui contient chaque enregistrement

J'aimerais un bout de code php pour uploader le fichier le plus simple possible
en créant un nouveau répertoire sur le serveur j'en ai déjà un mais pour comparaison ...
<FORM method="POST" ENCTYPE="multipart/form-data">
<INPUT type=hidden name=MAX_FILE_SIZE VALUE=2048>
<INPUT type=file name="nom_du_fichier">
<INPUT type=submit value="Envoyer">
</FORM>

:

Array
(
[nom_du_fichier] => Array
(
[name] => MaBelleImage.jpg
[type] => image/jpg
[tmp_name] => chemin_complet_du_fichier_uploadé
[error] => 0
[size] => 1000
)

)

<?
if ($_FILES['nom_du_fichier']['error']) {
switch ($_FILES['nom_du_fichier']['error']){
case 1: // UPLOAD_ERR_INI_SIZE
echo"Le fichier dépasse la limite autorisée par le serveur (fichier php.ini) !";
break;
case 2: // UPLOAD_ERR_FORM_SIZE
echo "Le fichier dépasse la limite autorisée dans le formulaire HTML !");
break;
case 3: // UPLOAD_ERR_PARTIAL
echo "L'envoi du fichier a été interrompu pendant le transfert !";
break;
case 4: // UPLOAD_ERR_NO_FILE
echo "Le fichier que vous avez envoyé a une taille nulle !");
break;
}
}
else {
// $_FILES['nom_du_fichier']['error'] vaut 0 soit UPLOAD_ERR_OK
// ce qui signifie qu'il n'y a eu aucune erreur
}
?>


<?

if ((isset($_FILES['nom_du_fichier']['fichier'])&&($_FILES['nom_du_fichier']['error'] == UPLOAD_ERR_OK)) {
$chemin_destination = '/var/www/fichiers/';
move_uploaded_file($_FILES['nom_du_fichier']['tmp_name'], $chemin_destination.$_FILES['nom_du_fichier']['name']);
}
?>
ensuite approvisionner la base de données en changeant les données excel pour être compatible avec MysQL
par un mécanisme subtil que les noobs comme moi ne connaissent pas !

Ce message s'adresse aux experts du php!!

Merci à tous !

Mammouth du PHP | 2937 Messages

29 sept. 2008, 21:01

Pour le traitement, il faut s'assurer que le fichier uploadé est bien un fichier Excel (on vérifiera donc si l'extension du fichier correspond bien à du .xls ou .xlsx, et non à un fichier PHP contenant du script potentiellement nuisible). C'est ce qui manque dans ton code.

ViPHP
fab
ViPHP | 2657 Messages

30 sept. 2008, 03:57

Euh je me permets d'intervenir car il faut faire attention même très attention quand on manipule des fichiers!
Petit exemple :
On upload un fichier du nom de toto.txt sur un site de lyrics!
On vérifie l'extension .txt
On inclue le fichier de maniere sur la page censer afficher les paroles du superbe artiste
Les paroles :
<?php include('totot.txt'); ?>
Et là tu permets qui tous les gentils utilisateurs de ton site de paroles d'executer du code sur ton site :p

Verdict : l'extension est une première vérification mais il faut être méfiant et ne pas considerer le fichier fiable pour autant avec par exemple utiliser file_get_contents() pour en utiliser le contenu
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }