Bonjour,
je suis débutant en php et je cherchais une methode permettant de remplir une base de donnée via un fichier excel.
En fait j'extrais le fichier excel à partir d'un grand serveur de base données puis avec ce fichier excel, je rempli la base de données de mon apllication.
Cependant je voudrais d'abord tester le remplissage de ma base de données à partir d'un simple fichier excel avant de le faire en "vrai"
Je suis tombé sur le script suivant sur ce site : https://www.webrankinfo.com/forum/remplir-une-table-mysql-depuis-fichier-excel-t40685.html
<html>
<head>
<title>Importer un fichier texte dans une bdd MySQL</title>
</head>
<body>
<h2>Importer un fichier texte dans une bdd MySQL</h2>
<?
switch($action)
{
/* LECTURE ET AJOUT DES DONNEES DANS LA TABLE */
case "ajouter":
/* Variables */
$bdd = "*****"; /* Base de données */
$host= "*****"; /* Hote (localhost en principe) */
$user= "*****"; /* 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 cree la table */
//if ($creertable)
// {
// $query = "CREATE TABLE $table( nom varchar(24),prenom varchar(24) )";
// $result= MYSQL_QUERY($query);
// }
/* 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];
$id1 = $liste[1];
$nom = $liste[2];
$titre = $liste[3];
$alt = $liste[4];
/* Ajouter un nouvel enregistrement dans la table */
$query = "INSERT INTO $table VALUES('$id','$id1','$nom','$titre','$alt')";
$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 $id1 $nom $titre $alt<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 border="0" cellspacing="0" cellpadding="3">
<tr>
<td>Table :</td>
<td> <input type="text" name="table"> </td>
</tr>
<tr>
<td>Fichier :</td>
<td> <input type="text" name="fichier"> </td>
</tr>
<tr>
<td>Créer table ? :</td>
<td> <input type="checkbox" name="creertable" checked> </td>
</tr>
<tr>
<td></td>
<td> <input type="submit" name="submit" value="Et HoP !"> </td>
</tr>
</table>
<input type="hidden" name="action" value="ajouter">
</form>
<?
break;
}
?>
</body>
</html>
j'ai ensuite essayer de l'adapter à mon code mais je ne sais pas trop comment remplir le formulaire pour le serveur. Quelles données mettre ? car moi j'ai dejà mis en place ma base de données qui fonctionne.En gros je n'ai pas besoin de recreer une table.
Cependant quand j'enleve la partie remplissage du formulaire j'ai une erreur me disant que la variable "action" n'est pas définie.
Si vous pouviez m'aidez à utiliser ce code je vous en serais tres reconnaissant.Si vous avez aussi d'autre piste plus importantes ou plus souple je suis preneur.
Merci d'avance.
je suis débutant en php et je cherchais une methode permettant de remplir une base de donnée via un fichier excel.
En fait j'extrais le fichier excel à partir d'un grand serveur de base données puis avec ce fichier excel, je rempli la base de données de mon apllication.
Cependant je voudrais d'abord tester le remplissage de ma base de données à partir d'un simple fichier excel avant de le faire en "vrai"
Je suis tombé sur le script suivant sur ce site : https://www.webrankinfo.com/forum/remplir-une-table-mysql-depuis-fichier-excel-t40685.html
<html>
<head>
<title>Importer un fichier texte dans une bdd MySQL</title>
</head>
<body>
<h2>Importer un fichier texte dans une bdd MySQL</h2>
<?
switch($action)
{
/* LECTURE ET AJOUT DES DONNEES DANS LA TABLE */
case "ajouter":
/* Variables */
$bdd = "*****"; /* Base de données */
$host= "*****"; /* Hote (localhost en principe) */
$user= "*****"; /* 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 cree la table */
//if ($creertable)
// {
// $query = "CREATE TABLE $table( nom varchar(24),prenom varchar(24) )";
// $result= MYSQL_QUERY($query);
// }
/* 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];
$id1 = $liste[1];
$nom = $liste[2];
$titre = $liste[3];
$alt = $liste[4];
/* Ajouter un nouvel enregistrement dans la table */
$query = "INSERT INTO $table VALUES('$id','$id1','$nom','$titre','$alt')";
$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 $id1 $nom $titre $alt<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 border="0" cellspacing="0" cellpadding="3">
<tr>
<td>Table :</td>
<td> <input type="text" name="table"> </td>
</tr>
<tr>
<td>Fichier :</td>
<td> <input type="text" name="fichier"> </td>
</tr>
<tr>
<td>Créer table ? :</td>
<td> <input type="checkbox" name="creertable" checked> </td>
</tr>
<tr>
<td></td>
<td> <input type="submit" name="submit" value="Et HoP !"> </td>
</tr>
</table>
<input type="hidden" name="action" value="ajouter">
</form>
<?
break;
}
?>
</body>
</html>
j'ai ensuite essayer de l'adapter à mon code mais je ne sais pas trop comment remplir le formulaire pour le serveur. Quelles données mettre ? car moi j'ai dejà mis en place ma base de données qui fonctionne.En gros je n'ai pas besoin de recreer une table.
Cependant quand j'enleve la partie remplissage du formulaire j'ai une erreur me disant que la variable "action" n'est pas définie.
Si vous pouviez m'aidez à utiliser ce code je vous en serais tres reconnaissant.Si vous avez aussi d'autre piste plus importantes ou plus souple je suis preneur.
Merci d'avance.