PHP MySQL CSV
Résolu
DAG
-
DAG -
DAG -
Bonjour,
J'ai un fichier Excel (csv) qui se présente de la façon suivante (avec un peu plus de champs et environs 5000 entrées par colonnes) :
J'essaie de récupérer les champs pour pouvoir les mettre dans une base MySQL.
J'arrive à récupérer les colonnes entières de la façon suivante (j'ai une page html où je rentre le chemin du fichier qui me redirige vers ce code) :
Le problème c'est que ce code m'affiche toutes les valeurs à la suite :
J'aimerai réussir à récupérer seulement un champs d'une colonne, par exemple : le titre pour pouvoir ensuite créer une table avec des colonnes portant les noms qu'il faut.
Si quelqu'un a une idée ?
Merci d'avance
J'ai un fichier Excel (csv) qui se présente de la façon suivante (avec un peu plus de champs et environs 5000 entrées par colonnes) :
NOM PRENOM ADRESSE truc muche 10, rue tata machin chouette 11, rue tutu
J'essaie de récupérer les champs pour pouvoir les mettre dans une base MySQL.
J'arrive à récupérer les colonnes entières de la façon suivante (j'ai une page html où je rentre le chemin du fichier qui me redirige vers ce code) :
function recupNom() { $file = $_FILES['file']['tmp_name']; $handle = fopen($file,'r'); $row = 1; while (($data = fgetcsv($handle, 0, ";")) !== FALSE) { echo "\n"; echo $data[0] . "<br />\n"; } fclose($handle); }
Le problème c'est que ce code m'affiche toutes les valeurs à la suite :
NOM truc machin
J'aimerai réussir à récupérer seulement un champs d'une colonne, par exemple : le titre pour pouvoir ensuite créer une table avec des colonnes portant les noms qu'il faut.
Si quelqu'un a une idée ?
Merci d'avance
A voir également:
- PHP MySQL CSV
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Expert php pinterest - Télécharger - Langages
- Php alert - Forum PHP
- Mysql a répondu : documentation connexion impossible : paramètres incorrects. - Forum Bases de données
5 réponses
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+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question