PHP MySQL CSV
Résolu/Fermé
A voir également:
- PHP MySQL CSV
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Error 2002 (hy000): can't connect to local mysql server through socket '/var/lib/mysql/mysql.sock' (2) ✓ - Forum Linux / Unix
- Bouton php - Forum PHP
- Mysql error 1 ✓ - Forum Réseaux sociaux
5 réponses
ghassen38
Messages postés
12
Date d'inscription
jeudi 29 mai 2008
Statut
Membre
Dernière intervention
29 septembre 2008
4
9 juil. 2008 à 19:23
9 juil. 2008 à 19:23
une fichier excel c'est pas une extesion .xls qu'il a ???
vignemail1
Messages postés
1246
Date d'inscription
vendredi 8 octobre 2004
Statut
Contributeur
Dernière intervention
13 septembre 2019
259
9 juil. 2008 à 23:08
9 juil. 2008 à 23:08
Un CSV est, il me semble, directement importable dans une base de données MySQL avec phpmyadmin.
Sinon concernant ton problème, c'est ton while.
Lorsque du fait le while, tu dis ne t'arrêtes pas avant la fin du fichier, il ne faut en faite le faire qu'une seul fois pour avoir la première ligne, récupérer ainsi les noms des champs, et enfin faire le while qui construit l'INSERT INTO avec le contenu de $data (que tu pourrais sans doute simplifier par un 'INSERT INTO table VALUES ('.implode(", ", $data).')' )
Sinon concernant ton problème, c'est ton while.
Lorsque du fait le while, tu dis ne t'arrêtes pas avant la fin du fichier, il ne faut en faite le faire qu'une seul fois pour avoir la première ligne, récupérer ainsi les noms des champs, et enfin faire le while qui construit l'INSERT INTO avec le contenu de $data (que tu pourrais sans doute simplifier par un 'INSERT INTO table VALUES ('.implode(", ", $data).')' )
Bonjour,
Merci pour vos réponses.
ghassen38, oui, c'est bien du CSV que j'utilise. C'est beaucoup plus facile à manipuler que le XLS, car il te forme un fichier avec des lignes et un séparateur pour isoler les champs de la ligne (généralement le ";" ou la ",").
En gros tu te retrouve avec un fichier du type :
....
Moi, en fait ce que je veux faire, c'est récupérer les informations du fichier Excel champs par champs. Dans l'exemple que j'avais donné, je voudrais récupérer la valeur du premier champs (à savoir "NOM"), puis la valeur du deuxième champs ("PRENOM) et ainsi de suite jusqu'au bout de la ligne.
En fait, je veux récupérer tous les champs entre les ";" de la première ligne, dans un premier et ensuite dans le reste du fichier.
Une fois que j'aurais eu la valeur du premier champs je la stock en mémoire et je récupère le deuxième champs puis le troisième et ainsi de suite jusqu'au bout de la ligne.
Une fois arrivé au bout de la ligne, j'aurai toutes les info en mémoire pour créer ma table de la façon suivante :
CREATE TABLE `base`.`table`
Je pourrais même mettre une petite boucle pour qu'il me créer les champs tout seul !
Je ne sais pas si je suis assez clair dans mes explications... Peut être existe-t-il des fonctions qui le fond déjà, car j'ai l'impression de coder quelque chose que déjà des personnes on eu besoin !
Sinon, vignemail1, oui il est possible de mettre un fichier excel dans une bdd grâce à la commande "LOAD DATA" :
Le problème c'est qu'il ne te créer pas les champs NOM, PRENOM... comme titre de la coIl les considère comme des données de la table et nom comme des champs titres.
Donc si quelqu'un a une idée ?...
Merci pour vos réponses.
ghassen38, oui, c'est bien du CSV que j'utilise. C'est beaucoup plus facile à manipuler que le XLS, car il te forme un fichier avec des lignes et un séparateur pour isoler les champs de la ligne (généralement le ";" ou la ",").
En gros tu te retrouve avec un fichier du type :
blablabla;tututututut;tatatatata;tititititi tititititi;tututututut;tatatatata;blablabla
....
Moi, en fait ce que je veux faire, c'est récupérer les informations du fichier Excel champs par champs. Dans l'exemple que j'avais donné, je voudrais récupérer la valeur du premier champs (à savoir "NOM"), puis la valeur du deuxième champs ("PRENOM) et ainsi de suite jusqu'au bout de la ligne.
En fait, je veux récupérer tous les champs entre les ";" de la première ligne, dans un premier et ensuite dans le reste du fichier.
Une fois que j'aurais eu la valeur du premier champs je la stock en mémoire et je récupère le deuxième champs puis le troisième et ainsi de suite jusqu'au bout de la ligne.
Une fois arrivé au bout de la ligne, j'aurai toutes les info en mémoire pour créer ma table de la façon suivante :
CREATE TABLE `base`.`table`
( `ID` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, `$champs1` VARCHAR( 50 ) NOT NULL, `$champs2` VARCHAR( 50 ) NOT NULL, .... )
Je pourrais même mettre une petite boucle pour qu'il me créer les champs tout seul !
Je ne sais pas si je suis assez clair dans mes explications... Peut être existe-t-il des fonctions qui le fond déjà, car j'ai l'impression de coder quelque chose que déjà des personnes on eu besoin !
Sinon, vignemail1, oui il est possible de mettre un fichier excel dans une bdd grâce à la commande "LOAD DATA" :
LOAD DATA INFILE 'c:/test.csv' INTO TABLE TestLoadData.test FIELDS TERMINATED BY ';' ENCLOSED BY "" ESCAPED BY '\\' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;
Le problème c'est qu'il ne te créer pas les champs NOM, PRENOM... comme titre de la coIl les considère comme des données de la table et nom comme des champs titres.
Donc si quelqu'un a une idée ?...
J'ai trouvé !!
voila le code :
C'est tout con, je n'utilisais pas la bonne fonction...
A+
voila le code :
$file = $_FILES['file']['tmp_name']; //Je récupère l'emplacement du fichier $content = file_get_contents($file,'r'); //J'ouvre le fichier $content = explode(";", $content); //Je parcours le fichier en retenant que le séparateur est le ";" print $content[0]; //J'affiche la première valeur avant le premier ";"
C'est tout con, je n'utilisais pas la bonne fonction...
A+
vignemail1
Messages postés
1246
Date d'inscription
vendredi 8 octobre 2004
Statut
Contributeur
Dernière intervention
13 septembre 2019
259
10 juil. 2008 à 10:37
10 juil. 2008 à 10:37
Oui mais si une valeur d'un de tes champs contient ; alors ca marche pas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question