Bonjour,
Je débute et j'essaye de créer en php mySql un script qui rempli automatiquement une table que j'ai crée (testrv) avec les données d'un csv qui pour le test ne contient que 3 lignes dont la premiere devrait servir à créer mes colonnes.
Problème, je trouve beaucoup de chose pour insérer des données dans des colonnes préalablement crée dans PhpMyAdmin, mais je ne trouve pas comment faire pour que les colonnes soient créées à la volée dans ma table grace à la premiere ligne de mon csv importé.
J'ai vu que pour insérer des colonnes dans une table on utilisait ALTER TABLE mais je ne sais pas comment faire pour qu'il le fasse pour chacune des colonnes de mon csv sans que j'ai à lui préciser le nom des champs en plus dans le code et je ne sais pas où le mettre.
Voici le code de la page appelée pour faire cette opération.
Sachant que dans la table que j'ai crée j'ai juste crée préalablement un champ ID indexé en AI.
Mon csv ressemble à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 cat;sous-cat;nom;Image;prix;description Livre;Livre pour enfant;Un titre;http://www../images/test.jpg;20;La description du livre en question. Livre;Livre pour enfant;Un autre titre;http://www../images/test2.jpg;30;La description de cet autre livre.
Mon fichier php :
Merci par avance pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 <?php $fichierTestRv="produits.csv"; // fichier donnees testrv $separateur = ';'; $fileTestRv = new SplFileObject($fichierTestRv); $fileTestRv->setFlags(SplFileObject::READ_CSV | SplFileObject::SKIP_EMPTY); $fileTestRv->setCsvControl($separateur); $tab_champsTestRv = $fileTestRv->current(); $champs_insertTestRv = array_fill(0,count($tab_champsTestRv),'?'); $champs_insertTestRv = implode(',',$champs_insertTestRv); try { $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options); $ReqInsertTestRv = "INSERT INTO testrv VALUES($champs_insertTestRv)"; $insertionTestRv = $bdd->prepare($ReqInsertTestRv); $fileTestRv->next(); while($rowTestRv = $fileTestRv->current()) { $insertionTestRv->execute($rowTestRv); $fileTestRv->next(); } echo "<br>table testrv remplie avec succès. <br>"; } catch(PDOException $e) { die('Erreur : '.$e->getMessage()); } ?>
Partager