Probleme avec Script PHP pour remplir mysql avec un fichier Excel

Nouveau WRInaute
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.
 
WRInaute occasionnel
Enlève
Code:
 action=\"$PHP_SELF\"
de ton formulaire ça sert a rien.

Et remplace
Code:
switch($action)
par
Code:
switch($_REQUEST['action'])

Suivant la configuration de ton serveur les variables récupérées de ton formulaire ne pourront être appelées par $nom_variable mais par $_REQUEST['nom_variable']
 
WRInaute occasionnel
Salut,

La question va peut-être te paraître bête mais tu n'as vraiment pas moyen de faire un export SQL de la base de données ? Ca serait beaucoup plus simple. Sinon, si tu commences en php, habitue-toi plutôt à utiliser les extenstions mysqli ou pdo_mysql que mysql qui est porté à disparaître et dont l'utilisation génère des alertes d'obsolescence (E_DEPRECATED). Enfin, le code est plus lisible quand il est mis entre les balises Code :
Code:
$var='du texte entre des balises code';
 
Discussions similaires
Haut