Recupérer les champs d'un fichier csv pour les mettre dans une bdd
hannao
Messages postés98Date d'inscriptionmercredi 5 novembre 2003StatutMembreDernière intervention26 janvier 2012
-
24 avril 2009 à 20:30
hannao
Messages postés98Date d'inscriptionmercredi 5 novembre 2003StatutMembreDernière intervention26 janvier 2012
-
27 avril 2009 à 16:08
Bonjour a tous,
voilà je vais tenter de vous expliquez mon pb qui pour certains je suis sur sera très simple, mais j'avoue ramer grave.
J'ai un fichier test.csv qui contient "2" "une fois" "des galettes, pour manger".
Pour faire le csv j'ai choisi : jeu de caractère Unicode utf8, séparateur de champs tab et séparateur de texte des guillement car en réalité les trois champs sont très long ,et comporte des virgules etc...
Je veut récupérer chaqu'un de ces champs dans une variables.
1. j'ouvre le fichier et le lit jusqu'a sa fin
voilà ce que j'ai essayé j'ai aussi essayé explode mais rien n'y fait je pense que je m'y prend très mal et que mes synthaxe sont tous simplement nul alors si quelqu'un peut m'expliquer le procéder. le but étant par la suite de remplir la bdd avec chaque champs (les 3).
hannao
Messages postés98Date d'inscriptionmercredi 5 novembre 2003StatutMembreDernière intervention26 janvier 2012 25 avril 2009 à 16:20
merci pour le code me reste à comprendre comment mettre ça dans la base de données, j'imagine valeur champs du tableau [] requete insert into id puis autre champs etc ....
hannao
Messages postés98Date d'inscriptionmercredi 5 novembre 2003StatutMembreDernière intervention26 janvier 2012 27 avril 2009 à 16:08
Voilà j'ai fini mon code grace a votre aide merci je le met si ça peut intéresser quelqu'un.
C'est un code pour joomla 1.5
re merci encore pour votre aide
public function importContent(){
// ouverture du fichier a voir ou on le place ?
$handle = fopen("WEBmetadatasV3_090409.csv", "r");
$ligne = 0;
// lecture ligne à ligne
while (($data = fgetcsv($handle, 0, chr(9),'"')) !== FALSE) {
$ligne++;
// faire correspondre les champs du tableau à une variable (mais là ça ne sert pas)
//list($id, $title, $alais, etc...) = $data;
// enlève le premier champs qui correspond à l'id, et qui est inutile
$id = array_shift($data);
// construit la requête //
$db->setQuery ("
INSERT INTO 'jos_content' (
'title',
'alias',
'title_alias',
'introtext',
'fulltext',
'state',
'sectionid',
'mask',
'catid',
'created',
'creatd_by',
'created_by_alias',
'modified',
'modified_by',
'checked_out',
'checked_out_time',
'publish_up',
'publish_down',
'images',
'urls',
'attribs',
'version',
'parentid',
'ordering',
'metakey',
'metadesc',
'access',
'hits',
'metadata'
) VALUE ("._q($data).");";
// insert dans la base de données
$db->query();
}
// échappe les chaînes de caractère pour insertion dans une requête et sépare un tableau par des ,
// http://doc.spip.org/@_q function _q ($a) {
return (is_numeric($a)) ? strval($a) :
(!is_array($a) ? ("'" . addslashes($a) . "'")
: join(",", array_map('_q', $a)));