Bonjour,
j’ai importer un tableau Excel, au format CSV, dans ma base de données MySql.
Tout fonctionne !
Cependant, il semble possible de créer un script PHP pour aller chercher mon fichier CSV et l’importer dans ma Base de Donnée …
Est il possible de créer un macro dans Excel, qui permettrai d’exporter mon tableau au format CSv et de la charger sur ma BDD MySql ?
Sinon quelle méthode dois je adopté pour créer un script PHP efficace ?
merci :jap: :jap:
j’ai essayé la méthode suivante … mais je ne comprend pas pourquoi je n’arrive pas a charger mon fichier … snif
<?php
require('conf.php');
mysql_selectdb("gz") or die("Connexion impossible");
switch($action)
{
/* LECTURE ET AJOUT DES DONNEES DANS LA TABLE */
case "ajouter":
/* Variables */
$bdd = "gz"; /* Base de données */
//$host= "localhost"; /* Hote (localhost en principe) */
//$user= "user; /* Utilisateur */
//$pass= "motpasse; /* Mot de passe */
$table = "gz";
/* Connexion bdd */
@mysql_connect($host,$user,$password) or die("Impossible de se connecter à la base de données");
// @mysql_select_db($bdd);
/* On ouvre le fichier à importer en lecture seulement */
if (file_exists($fichier))
$fp = fopen("$fichier", "r");
else
{ /* le fichier n'existe pas */
echo "Fichier introuvable !<br>Importation stoppée.";
exit();
}
while (!feof($fp)) /* Et Hop on importe */
{ /* Tant qu'on n'atteint pas la fin du fichier */
$ligne = fgets($fp,4096); /* On lit une ligne */
/* On récupère les champs séparés par; dans liste*/
$liste = explode( ";",$ligne);
/* On assigne les variables */
$id = $liste[0];
$cp = $liste[1];
$ville = $liste[2];
$tel = $liste[3];
$client = $liste[4];
/* Ajouter un nouvel enregistrement dans la table */
$query = "INSERT INTO $table VALUES('$id','$cp','$ville','$tel','$client')";
$result= MYSQL_QUERY($query);
if(mysql_error())
{ /* Erreur dans la base de donnees, sûrement la table qu'il faut créer */
print "Erreur dans la base de données : ".mysql_error();
print "<br>Importation stoppée.";
exit();
}
else /* Tout va bien */
print "$id $cp $ville $tel $client <br>";
}
echo "<br>Importation terminée, avec succès.";
/* Fermeture */
fclose($fp);
MYSQL_CLOSE();
break;
/* FORMULAIRE DE CHOIX D'IMPORTATION */
default:
?>
<? echo "<form method=\"post\" action=\"$PHP_SELF\">"; ?>
Pour ajouter ton serveur il suffit de remplir ce formulaire
<table width="357" border="0" cellpadding="3" cellspacing="0">
<!--DWLayoutTable-->
<tr>
<td>Table :</td>
<td width="144"><!--DWLayoutEmptyCell--> </td>
<td width="109"></td>
</tr>
<tr>
<td height="28">Fichier :</td>
<td colspan="2" valign="top"> <input type="file" name="fichier"> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td></td>
</tr>
<tr>
<td></td>
<td> <input type="submit" name="submit" value="Charger !"> </td>
<td></td>
</tr>
</table>
<input type="hidden" name="action" value="ajouter">
</form>
<?
break;
}
?>
pourquoi il refuse d’ouvir mon fichier :riva:
je ne comprend pas …
Juste un truc : MYSQL_QUERY, c’est mysql_query.
Pour le reste, le temps où un champ <input type="file" /> te créait une variable $fichier est révolu depuis longtemps. Soit bien sur de lire ça :
http://www.php.net/manual/fr/faq.misc.php#…registerglobals
http://www.php.net/manual/fr/features.file-upload.php
Tu verras que déjà, ça fonctionnera mieux 
Et au passage, tu as la fonction file() qui te permet de retourner un tableau de lignes à partir d’un fichier.
en effet sans_nom …
en ajoutant
enctype='multipart/form-data'
ça marche :super:
:jap: :jap:
par contre maintenant j’aiu un probleme de champ deja existant dans ma BDD … je creuse … :na:
raaa le saloupio …
mon fichier excel contient des infos avec des
'
… resultat j’ai des erreur lors du chargement … comment on fait deja pour eviter le contre des
'
en php ??? snif …
Avec mysql_real_escape_string().
yes ! merci sans_nom :jap:
me reste plus qu’a trouvé comment faire pour ecrser toutes les données de ma BDD lorsquon charge un fichier CSV …
reflexion jean pierre :heink:
Ben tu vides la table avant…
:MDR
exact ^^ je suis entrain de chercher la bonne technique :MDR
et voila :
$vider = "TRUNCATE TABLE $table";
ça roule !!! merci encore :jap: :jap:
mon code est certainement perfectible ! mais temps qu’il marche ! c’est le principale ^^ enfin pour moi :hello:
sans_nom = :super:
a non non non non non !
j’ai voulu sécurisé l’accès a ma page de mise a jourd e BDD, ça marche, mais je comprend pas pourquoi j’ai ce message :
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent
??? :pt1cable: , c’est po possib’ !
pffff,
dsl de vous avoir déranger pour rien …
le session_start c’est avant tout code … donc c’est bon !
merci encore :jap: :jap: