j'ai ici un petit formulaire qui permet d'envoyer un fichier csv sur un table.
Mon problème est que les données s'ajoutent et qu'idéalement elles devraient être remplacées.
En effet, les données ne sont pas toujours du même nombre et il ne faut pas qu'il y ai des répétitions.
Comment, en une seule instruction, on supprime le contenu de la table, puis on la remplit avec les nouvelles données.
Autres détail, la première ligne comporte les intitulés de colonnes (utile pour l'administration côté Excel), mais chiant côté SQL, car elle apparait dans la table.
Comment faire pour la supprimer ?
Voici le code
<html>
<head>
<title>Importer un fichier CSV dans la table</title>
</head>
<body>
<h2>Importer un fichier CSV dans la table</h2>
<?
switch($action)
{
/* LECTURE ET AJOUT DES DONNEES DANS LA TABLE */
case "ajouter":
/* Variables */
$bdd = "cai"; /* Base de données */
$table= "liste"; /* Table */
$host= "localhost"; /* Hote */
$user= "root"; /* Utilisateur */
$pass= ""; /* Mot de passe */
/* Connexion bdd */
@mysql_connect($host,$user,$pass) 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)) /* 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 */
$nom = $liste[0];
$prenom = $liste[1];
/* Ici, il faudrait supprimer le contenu de la table pour éviter les répétitions */
/* Pour ensuite ajouter un nouvel enregistrement dans la table */
$query = "INSERT INTO $table VALUES
('','$nom','$prenom')";
$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, $nom, $prenom <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\">"; ?>
Ajouter un CSV
<table border="0" cellspacing="0" cellpadding="3">
<tr>
<td>Fichier :</td>
<td width="244" align="center"><input type="file" name="fichier" value="fichier"></td>
</tr>
<tr>
<td></td>
<td> <input type="submit" name="submit" value="Envoyer"> </td>
</tr>
</table>
<input type="hidden" name="action" value="ajouter">
</form>
<?
break;
}
?>
</body>
</html>