Load data infile et chemin

Eléphanteau du PHP | 32 Messages

05 mars 2011, 22:15

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!

ViPHP
ViPHP | 5462 Messages

05 mars 2011, 22:20

il faut utiliser l'option LOCAL

Eléphanteau du PHP | 32 Messages

05 mars 2011, 22:29

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) ?

@+

ViPHP
ViPHP | 5462 Messages

05 mars 2011, 22:30

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

Eléphanteau du PHP | 32 Messages

05 mars 2011, 22:33

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?

ViPHP
ViPHP | 5462 Messages

05 mars 2011, 22:42

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

Eléphanteau du PHP | 32 Messages

05 mars 2011, 22:47

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: )

ViPHP
ViPHP | 5462 Messages

05 mars 2011, 22:55

si il faudra passer par le champs file d'un forumlaire. Tout se fait coté serveur.

Eléphanteau du PHP | 32 Messages

09 mars 2011, 13:41

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?

ViPHP
xTG
ViPHP | 7331 Messages

09 mars 2011, 13:45


Eléphanteau du PHP | 32 Messages

09 mars 2011, 15:07

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!
Modifié en dernier par fabulon le 09 mars 2011, 15:13, modifié 1 fois.

ViPHP
ViPHP | 5462 Messages

09 mars 2011, 15:09

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

Eléphanteau du PHP | 32 Messages

09 mars 2011, 15:15

Niquel, t'es un chef!
=D>