Bonjour,
Je reviens vers vous avec mon problème d'import de fichier csv dans ma base de données.
le script fonctionne très bien lorsque je met le nom du fichier en dur dans la variable $filename, mais je voudrai pouvoir sélectionner mon fichier avec un formulaire et lorsque je clique sur le bouton "submit" faire le traitement d'import, j'ai essayer tout type de formulaire mais je n'y arrive pas je ne comprends pas ou je fait l'erreur.
merci d'avance de votre aide.
Gilles.
<?php
include './lib/includes.php';
// définition des variables
//$filename = './immat.csv';
if(isset($_POST'import'])){
$filename = $db->quote($_POST'import']);
// fonction lecture du fichier
function read_csv($filename)
{
// ouverture du fichier
$FILE=fopen($filename,"r");
// lire ligne par ligne et couper colonne par colonne
while ($ARRAY]=fgetcsv($FILE,1024,";"));
// fermer le fichier
fclose($FILE) ;
// effacer la dernière ligne
array_pop($ARRAY);
// renvoi le tableau
return $ARRAY ;
}
$data = read_csv($filename);
foreach ( array_slice( $data, 1 ) as $i => $line ) {
$select = $db->query("SELECT COUNT(*) AS verif_chassis FROM vehicules WHERE chassis='". $line[1] ."'");
if( $select->fetch()->verif_chassis < 1 ){
$import = $db->query("INSERT INTO vehicules (id, immat, chassis) VALUES ('','". $line[0] ."', '". $line[1] ."')");
}else{
$import = $db->query("UPDATE vehicules SET immat='$line[0]' WHERE chassis='". $line[1] ."'");
}
}
}
?>
<form action="#" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="import">Fichier à traiter</label>
<input type='file' class='form-control' name='import'>
</div>
<button type="submit" class="btn btn-primary">Traitement Fichier</button>
</form>
Les input de types files sont récupérés et traité de la facon suivante:
<?php
if( isset($_FILES'import']) ){
// Disons que tu veux mettre ton fichier dans le dossier ImportedFile qui est dans le dossier courant
// Créé le nom du fichier:
$fileName= __DIR__. "/ImportedFiles/".basename($_FILES'import']'name']) ;
// Place le fichier, sous le nom que tu viens de lui donner, dans le répertoir approprié
move_uploaded_file( $_FILES'import']'tmp_name'], $fileName);
// Tu peux travailler avec $fileName pour lire le fichier comme tu faisais avant ...
}
Bonjour Vallyan,
merci pour ton aide, ca fonctionne!!
par contre dans le move_uploaded_file le second parametre est $target, c est quoi ca? moi cela ne passait pas avec donc j'ai mis $filename a la place... est une betise de faire comme j ai fait?
Gilles
Non, t'as absolument raison, c'est bien $fileName qu'il faut utiliser ^^, c'est moi qui me suis planté :/
Je viens de corriger, d'ailleurs ...