Page 1 sur 1

Load data infile et chemin

Posté : 05 mars 2011, 22:15
par fabulon
Bonjour,
Je souhaite importer le contenu d'un csv dans une table.
J'utilise pour cela la fonction load data infile.
Mais, le chemin que je donne n'est pas celui qui est pris en compte.
Apache (ou mysql ?) cherche le fichier dans un dossier data de sql.

Or, je voudrais qu'il cherche mon fichier dans le dossier situé à côté du fichier php qui execute le script.
Is it possible?

Merci!

Re: Load data infile et chemin

Posté : 05 mars 2011, 22:20
par stealth35
il faut utiliser l'option LOCAL

Re: Load data infile et chemin

Posté : 05 mars 2011, 22:29
par fabulon
Ok!
Je teste demain, et je te dis.

Est-ce que ce sera la même commande en local (wamp) ou en hébergé (free) ?

@+

Re: Load data infile et chemin

Posté : 05 mars 2011, 22:30
par stealth35
Ok!
Je teste demain, et je te dis.

Est-ce que ce sera la même commande en local (wamp) ou en hébergé (free) ?

@+
non chez free tu ne peu pas faire ca

Re: Load data infile et chemin

Posté : 05 mars 2011, 22:33
par fabulon
arf??? chiotte!
J'aimerai pouvoir ensuite filer mon code à des utilisateurs avec une install guidée...
A moins que je fasse un tuto sur phpmyadmin?

Sinon, y a moyen de faire ça autrement chez Free?

Re: Load data infile et chemin

Posté : 05 mars 2011, 22:42
par stealth35
arf??? chiotte!
J'aimerai pouvoir ensuite filer mon code à des utilisateurs avec une install guidée...
A moins que je fasse un tuto sur phpmyadmin?

Sinon, y a moyen de faire ça autrement chez Free?
il suffis je faire un petit code PHP pour importer le CSV, utilise fgetcsv

Re: Load data infile et chemin

Posté : 05 mars 2011, 22:47
par fabulon
Je passais d'abord par un premier php pour uploader le fichier ( avec un formulaire d'encodage multipart/form-data avec un champ de type file ).
D'après ce que je lis sur ton lien, je n'aurais pas à uploader le fichier en dur sur le serveur, simplement à le faire lire, puis (ou en même temps?) l'écrire dans la base sql.

Faut que je me plonge sur cette fonction fgetcsv...

Merci (je reviendrai si je bloque... :wink: )

Re: Load data infile et chemin

Posté : 05 mars 2011, 22:55
par stealth35
si il faudra passer par le champs file d'un forumlaire. Tout se fait coté serveur.

Re: Load data infile et chemin

Posté : 09 mars 2011, 13:41
par fabulon
Salut.
Je m'y suis remis après qq jours de pause.
Je fais uploader le fichier csv sans souci, et l'import dans la base sql se passe bien, sauf si un champ contient une apostrophe.

Voilà mon code:
$handle = fopen ("./upload/magret.csv","r");
fgetcsv ($handle, 0, ";");
while ($data = fgetcsv ($handle, 0, ";")) {
	$requete = "INSERT INTO magret (classe,nom,prenom,login,mdp,uid_ent) VALUES ('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]')";
	$result = mysql_query($requete) or die(mysql_error()); 
	}
fclose ($handle);
J'ai utilisé une astuce en remplaçant $data[1] = preg_replace('#[\']#', '-', $data[1]);
Ca marche, mais le nom de mon utilisateur n'est plus vraiment le même du coup...

Y a t'il un moyen de contourner le pb d'apostrophe tout en ne modifiant pas les valeurs du champ?

Re: Load data infile et chemin

Posté : 09 mars 2011, 13:45
par xTG

Re: Load data infile et chemin

Posté : 09 mars 2011, 15:07
par fabulon
Je dois pas m'y prendre comme il faut:
$requete = "INSERT INTO magret (classe,nom,prenom,login,mdp,uid_ent) VALUES ('$data[0]','".mysql_real_escape_string($data[4])."','$data[2]','$data[3]','$data[4]','$data[5]')";
Je n'ai plus d'erreur, mais ça m'a laissé ma colonne vide!

Re: Load data infile et chemin

Posté : 09 mars 2011, 15:09
par stealth35
utilise array_map avant
$data = array_map('mysql_real_escape_string', $data);
utilise sprintf pour faire tes requêtes
et si possible arrête d'utiliser cette vielle extension et utilise mysqli ou PDO

Re: Load data infile et chemin

Posté : 09 mars 2011, 15:15
par fabulon
Niquel, t'es un chef!
=D>