par
Bruno93_fr » 11 janv. 2013, 00:50
bon problème résolu par des pirouettes avec des codes pris de ci de là sur divers cours de PHP sur le net. le résultat c'est que tout fonctionne.
à mon avis le LOAD DATA INFILE était bloqué par l'hébergeur....
donc dans mon process , le formulaire reste inchangé. mais le fichier est uploadé dans un dossier et est "récupéré" ensuite pour analyse et insertions dans la BDD.
avec ce code là (je mets le code car c'est saoulant de voir trop souvent les gens qui posent des questions signaler que'ils ont trouvé la solution mais sans dire comment....):
<?php
if(isset($_FILES['fichier'], $_POST['envoyer']))
{
$dossier = 'file/';
$fichier = basename($_FILES['fichier']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['fichier']['tmp_name']);
$extensions = array('.csv', '.txt');
$extension = strrchr($_FILES['fichier']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de csv...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
}
//Le chemin d'acces au fichier sur le serveur
$fichier = fopen("file/compta.csv", "r");
//tant qu'on est pas a la fin du fichier :
while (!feof($fichier))
{
// On recupere toute la ligne
$uneLigne = fgets($fichier, 1024);
//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 7 champs donc de [0] a [6])
$sql="REPLACE INTO compta VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."', '".$tableauValeurs[2]."', '".$tableauValeurs[3]."')";
$req=mysql_query($sql);
// la ligne est finie donc on passe a la ligne suivante (boucle)
}
?>
en gros débutant j'en ai un peu bavé mais bon maintenant ça fonctionne, merci de votre aide
bon problème résolu par des pirouettes avec des codes pris de ci de là sur divers cours de PHP sur le net. le résultat c'est que tout fonctionne.
à mon avis le LOAD DATA INFILE était bloqué par l'hébergeur....
donc dans mon process , le formulaire reste inchangé. mais le fichier est uploadé dans un dossier et est "récupéré" ensuite pour analyse et insertions dans la BDD.
avec ce code là (je mets le code car c'est saoulant de voir trop souvent les gens qui posent des questions signaler que'ils ont trouvé la solution mais sans dire comment....):
[php] <?php
if(isset($_FILES['fichier'], $_POST['envoyer']))
{
$dossier = 'file/';
$fichier = basename($_FILES['fichier']['name']);
$taille_maxi = 100000;
$taille = filesize($_FILES['fichier']['tmp_name']);
$extensions = array('.csv', '.txt');
$extension = strrchr($_FILES['fichier']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Vous devez uploader un fichier de csv...';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['fichier']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Upload effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec de l\'upload !';
}
}
else
{
echo $erreur;
}
}
//Le chemin d'acces au fichier sur le serveur
$fichier = fopen("file/compta.csv", "r");
//tant qu'on est pas a la fin du fichier :
while (!feof($fichier))
{
// On recupere toute la ligne
$uneLigne = fgets($fichier, 1024);
//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 7 champs donc de [0] a [6])
$sql="REPLACE INTO compta VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."', '".$tableauValeurs[2]."', '".$tableauValeurs[3]."')";
$req=mysql_query($sql);
// la ligne est finie donc on passe a la ligne suivante (boucle)
}
?> [/php]
en gros débutant j'en ai un peu bavé mais bon maintenant ça fonctionne, merci de votre aide