Bonjour à tous,
N'ayant pas trouvé de solution a mon problème, je vous l'expose ici.
Je suis en train de créer une requête automatique pour importer un fichier csv qui lui même sera uploadé en automatique sur un serveur et que j'importerai donc pour alimenter ma base de données.
J'ai réussi à le faire sans problème jusqu'à mon problème que je n'arrive pas à résoudre car je pense qu'il faut que j'utilise des expressions régulières pour enlever certains caractères spéciaux mais je ne sais vraiment pas comment ni où incorporer cette partie du script.
Voici le code :
Le gros problème est donc le suivant :
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 // ouverture de la connexion à la base mysql_connect("localhost","root",""); mysql_select_db("nom_de_la_bdd"); // On vide la table désignée pour ne pas avoir de doublons lors de l'importation du nouveau fichier mysql_query("TRUNCATE TABLE `nom_de_la_table_a_vider`"); //Le chemin d'accès du fichier sur le serveur $fichier = fopen("nom_du_fichier_a_importer.csv", "r"); //tant qu'on est pas à la fin du fichier : while (!feof($fichier)) { // On récupère toute la ligne $uneLigne = fgets($fichier, 1024); //On met dans un tableau les différentes valeurs trouvées (ici séparées par un ';') $tableauValeurs = explode(';', $uneLigne); // On crée la requête pour insérer les données (ici il y a 8 champs donc de [0] a [7]) $sql="INSERT INTO nom_de_la_table VALUES ('".$tableauValeurs[0]."', '".$tableauValeurs[1]."', '".$tableauValeurs[2]."', '".$tableauValeurs[3]."', '".$tableauValeurs[4]."','".$tableauValeurs[5]."', '".$tableauValeurs[6]."', '".$tableauValeurs[7]."')"; $req=mysql_query($sql)or die (mysql_error()); // la ligne est finie donc on passe à 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"; } ?>
Dans certains "$tableauValeurs" il y a des apostrophes comme dans les noms propres ("d'aston" par exemple), des parenthèses, etc qui gênent dans la requête sql et donc me renvoient un code d'erreur a cause de ca.
La question est donc, comment puis je faire pour ne pas prendre en compte ces caractères spéciaux dans la requête tout en les insérant dans la table et ou dois je poser cette partie de script?
Merci d'avance.
Partager