Je vous explique ma situation : je dois récupérer des données excel qui sont au format csv, et les intégrer dans une BDD mysql.
Le problème est que mes employeurs souhaitent que je réalise une interface en php qui proposent un bouton d'importation qui gere automatiquement cette intégration. en gros : un bouton qui ouvre un explorateur de fichiers, on choisi le csv que l'on veut, on valide et hop le csv est converti directement dans la BDD.
Ceci me paraît assez difficile vu mon niveau en php même si ce stage m'a beaucoup appri. De plus, ce ne sera pas moi qui gèrera l'intégration de ces fichiers CSV dans la BDD. Ce sera un utilisateur quelconque, qui ne devra rien faire d'autre que d'importer le fichier, sans gérer les paramètres de la BDD, d'où cette interface simplifiée que je dois créer...
y a-t-il quelqu'un qui a déjà été confronté à cette situation et/ou qui pourrait me preter main forte? merci beaucoup!
c'est bon jai répondu toute seule a ma question si certain ca les intéressse je vous laiise mon code:
//Le chemin d'acces a ton fichier sur le serveur $fichier = fopen("nom_du_fichier.text_ou_.csv", "r"
//tant qu'on est pas a la fin du fichier : while (!feof($fichier)) { // On recupere toute la ligne $uneLigne = fgets($fichier, 1024); //On met dans un tableau les differentes valeurs trouvés (ici séparées par un ';') $tableauValeurs = explode(';', $uneLigne); // On crée la requete pour inserer les donner (ici il y a 12 champs donc de [0] a [11]) $sql="INSERT INTO Balance VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."', '".$tableauValeurs[2]."', '".$tableauValeurs[3]."', '".$tableauValeurs[4]."', '".$tableauValeurs[5]."', '".$tableauValeurs[6]."', '".$tableauValeurs[7]."', '".$tableauValeurs[8]."', '".$tableauValeurs[9]."', '".$tableauValeurs[10]."', '".$tableauValeurs[11]."')";
$req=mysql_query($sql)or die (mysql_error()); // la ligne est finie donc on passe a la ligne suivante (boucle) } //vérification et envoi d'une réponse à l'utilisateur if ($req) { echo"Ajout dans la base de données effectué avec succès"; } else { echo"Echec dans l'ajout dans la base de données"; }
Pour insérer du code, vous pouvez le placer entre [[code][/code]].
Pour faire un ajout dans la base de données, il faut également savoir le type du champ (chaine, entier, ...), car si vous insérez un entier avec des "" (donc une chaine) dans un champ de type entier, cela ne peut et ne devrait pas être accepté par mysql. Il faudrait donc tester le type et rajouter ou non les guillemets. De même si la chaine contient déjà des guillemets ou non.
Si le fichier est conséquent, ou que le site est en ligne, ce qui ne doit pas être votre cas maintenant, mais vous pouvez envoyer une seule requête insert au lieu de plusieurs dizaines, centaines (voire plus)...
C'est beaucoup plus efficace car il y a beaucoup moins d'accès à la base de données (un seul), et dans le cas où vous préciseriez le nom des champs (plus prudent), vous ne le feriez qu'une fois !
Mais sinon, dans la plupart des cas, cela pourrait marcher (ca dépend du csv et de la table).
Si on connait le chemin du fichier, on peut également envoyer une requete du type LOAD DATA INFILE.
Après, c'est le choix de chacun, les deux méthodes fonctionnent très bien.
Je débute dans le développement web. J'ai le même problème d'import/export automatique de ma base de données MySQL et je viens de lire votre discussion. La solution me semble idéal sinon je me posais la question où on mettra le script de jeinny, qui est du code PHP mais où placer exactement le script ! Je vous remercie de votre aide d'avance Amicalement,