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
| <?php
include('header.php');
$dest = "./CSV/"; //Repertoire de destination
$erreur = 0; //init du nb d'erreurs
$mimeUp = $_FILES['fichier']['type']; //Type mime du fichier upload
$mimeValide = "application/vnd.ms-excel"; //Type mime autorisé
$nomFichierUp = $_FILES['fichier']['name']; //Nom du fichier upload
$genereNom = md5(uniqid(rand(), true)); // Genere une chaine aléatoire
if($mimeUp != $mimeValide) { //Verif du Mime
$erreur++;
$erreur1 = "Erreur le fichier n'est pas de type CSV.";
}
if($_FILES['fichier']['error'] > 0) { //Verif erreur d'upload.
$erreur++;
$erreur2 = "Erreur lors du transfert.";
}
if($_FILES['fichier']['size'] > $_POST['MAX_FILE_SIZE']) { //Verif de la taille du fichier
$erreur++;
$erreur3 = "Le poids du fichier dépasse la limite autorisé.";
}
if(preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $nomFichierUp)) { //Verif des caractère autorisé
$erreur++;
$erreur4 = "Le nom du fichier n'est pas valide.";
}
if($erreur != 0) { //Affichage des erreurs pendant l'upload....
echo ' Des erreurs on été trouver, '.$erreur.' au total. Les voici: <br />
'.$erreur1.'<br />
'.$erreur2.'<br />
'.$erreur3.'<br />
'.$erreur4.' ';
exit;
}
if($erreur == 0) { //Si il n'y pas d'erreur pendant l'upload, le traitement peut continuer.
$nomFichierFinal = $genereNom."majCsv.csv"; //Génere un nom unique pour le fichier upload.
move_uploaded_file($_FILES['fichier']['tmp_name'], $dest . $nomFichierFinal); //On déplace le fichier dans le repertoire de destination.
include('fonctions/fonctionLireCsv.php'); //Fonction qui lit le CSV.
include('config/config.php'); //Fichier de config ( cnx base de données ect ..)
include('fonctions/fonctionParseCsv.php'); //Fonction pour parser le contenu du cSV
$enTeteCsv = lectureEnteteCsv($separateur, $dest); //Fonction qui lit l'entete du CSV.
$contenuCsv = lectureContenuCsv($separateur, $dest); //Fonction qui lit le contenu du CSV.
$req = mysql_query('SELECT nomColonneCsv, nomColonneBd FROM champs'); // On liste les champs du fichiers CSV selon la config de la base de données.
while($res = mysql_fetch_array($req)) {
$champsCsv = $res['nomColonneCsv'];
$champsBd[] = $res['nomColonneBd'];
if(array_search($champsCsv, $enTeteCsv) === false){ //Verification que les champs du fichiers CSV n'ont pas été modifiés.
echo 'Le fichier Csv à été modifier, veuillez le configurer correctement.';
exit;
}
$key[] = array_search($champsCsv, $contenuCsv[0]); // Creation du tableau qui va contenir les clé recherchés.
}
for($i=1;$i<count($contenuCsv);$i++) { //Génération des array qui vont contenir les données du fichiers CSV.
for($j=0;$j<count($key);$j++) {
if($contenuCsv[$i][$key[$j]] == "") { // Si le contenu du champs est vide, la chaine de caractère "NC" est attribué au champs.
$dataChamps[] ="NC";
}
else {
$dataChamps[] = $contenuCsv[$i][$key[$j]]; //Sinon la valeur du champs est stocker dans le tableau.
}
}
}
$host = 'localhost';
$user = 'root';
$mdp = '';
$bd = 'test';
$connexion = new PDO('mysql:host='.$host.';dbname='.$bd, $user, $mdp);
$Insert = "INSERT INTO data (";
for($i=0;$i<count($key) -1;$i++) {
$Insert .= $champsBd[$i].", ";
}
$Insert .= $champsBd[$i].") VALUES(";
for($i=0;$i<count($key) -1;$i++) {
$Insert .= "?, ";
}
$Insert .= "?)";
//echo $Insert;
$reqPrepare = $connexion->prepare($Insert);
for($j=0;$j<count($dataChamps);$j++) {
//echo $champsBd[$j];
$reqPrepare->bindParam($j, $dataChamps[$j]);
$reqPrepare->execute();
}
}
include('footer.php');
?> |
Partager