remplir une table MySQL depuis un fichier Excel
16 messages
• Page 1 sur 2 • 1, 2
-

xdeslandes - WRInaute occasionnel

- Messages: 393
- Inscription: 29 Déc 2004
remplir une table MySQL depuis un fichier Excel
Salut les ami(e)s,
il est possible d'exporter des données de MySQL vers Excel grâce notamment à PhpMyAdmin. C'est cool. Mais peut-on faire l'inverse : lorsqu'on a des données sous Excel, comment garnir une table dans MySQL avec ces données ? Merci de votre aide !
il est possible d'exporter des données de MySQL vers Excel grâce notamment à PhpMyAdmin. C'est cool. Mais peut-on faire l'inverse : lorsqu'on a des données sous Excel, comment garnir une table dans MySQL avec ces données ? Merci de votre aide !
-

xdeslandes - WRInaute occasionnel

- Messages: 393
- Inscription: 29 Déc 2004
Pas de prob pour transformer mon fichier Excel en csv, mais je ne vois pas comment on remplit ensuite la table avec phpMyAdmin ?? Peux-tu m'éclairer oliv63 ?
- Grantome
- WRInaute accro

- Messages: 2899
- Inscription: 16 Jan 2004
Sans passer par PHPMyAdmin
- Code: Tout sélectionner
<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>
-

xdeslandes - WRInaute occasionnel

- Messages: 393
- Inscription: 29 Déc 2004
Merci Grantome, je vais essayer ! Tiens : vaut-il mieux l'essayer en local (avec EasyPhph par exemeple), puis exporter les instructions SQL vers le serveur distant, ou bien exécuter ton fichier à distance ?
-

xdeslandes - WRInaute occasionnel

- Messages: 393
- Inscription: 29 Déc 2004
Oooookay ! Je croyais que pour utiliser cette fonctionnalité, il fallait que le fichier texte soit une succession de requêtes "INSERT INTO ...", mais visiblement, non. Merci. Je crois que cela devrait amplement faire l'affaire. Merci à Grantome pourton script, mais je crois que je n'en n'aurai pas besoin
.
Salut et merci à tous.
Salut et merci à tous.
- agencep
- Nouveau WRInaute

- Messages: 3
- Inscription: 20 Fév 2006
Votre script fonctionne a merveil en local mais sur le serveur non ??
Je ne sais pas pourquoi ??
Pourriez vous m'aider ??
Merci
Je ne sais pas pourquoi ??
Pourriez vous m'aider ??
Merci
Grantome a écrit:Sans passer par PHPMyAdmin
- Code: Tout sélectionner
<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>
-

Malaiac - WRInaute occasionnel

- Messages: 357
- Inscription: 4 Mai 2005
Pour l'avoir fait à de nombreuses reprises, le plus "simple" est effectivement de créer la table, de créer un enregistrement, de l'exporter en CSV pour avoir un modele, et de préparer ton CSV en fonction.
Ensuite, importation d'un fichier texte, et paf (le chien).
Tu ferais pas du splogging, par hasard ?
Ensuite, importation d'un fichier texte, et paf (le chien).
Tu ferais pas du splogging, par hasard ?
-

xdeslandes - WRInaute occasionnel

- Messages: 393
- Inscription: 29 Déc 2004
Tu ferais pas du splogging, par hasard ?
du quoi
- Grantome
- WRInaute accro

- Messages: 2899
- Inscription: 16 Jan 2004
agencep a écrit:Votre script fonctionne a merveil en local mais sur le serveur non ??
Je ne sais pas pourquoi ??
Pourriez vous m'aider ??
Merci
Désolé, mais je ne test jamais en local.
ce script fonctionne pour moi online, donc je ne vois pas ce qu'il peut se passer chez vous.
- agencep
- Nouveau WRInaute

- Messages: 3
- Inscription: 20 Fév 2006
Grantome a écrit:agencep a écrit:Votre script fonctionne a merveil en local mais sur le serveur non ??
Je ne sais pas pourquoi ??
Pourriez vous m'aider ??
Merci
Désolé, mais je ne test jamais en local.
ce script fonctionne pour moi online, donc je ne vois pas ce qu'il peut se passer chez vous.
Oui au faite, j'ai changé le champ <input type"text" ...> par <input type="file" ...> et c'est la que ça ne fonctionne pas ...
- Grantome
- WRInaute accro

- Messages: 2899
- Inscription: 16 Jan 2004
Pour utiliser ce script, il faut que tu places sur ton hébergement 2 fichiers (ex: script.php et toto.txt)
Type "text" va prendre le nom du fichier ex: toto.txt.
Puis, via php on va aller éditer le fichier qui porte le nom toto.txt.
Dans le cas de file, c'est l'ensemble du fichier qui va être mis en variable et non son titre. Donc, la moulinette php d'édition du fichier ne se fera pas.
Le script ne permet pas d'uploader un fichier.
Mais on peut le modiifer pour...
Type "text" va prendre le nom du fichier ex: toto.txt.
Puis, via php on va aller éditer le fichier qui porte le nom toto.txt.
Dans le cas de file, c'est l'ensemble du fichier qui va être mis en variable et non son titre. Donc, la moulinette php d'édition du fichier ne se fera pas.
Le script ne permet pas d'uploader un fichier.
Mais on peut le modiifer pour...
- agencep
- Nouveau WRInaute

- Messages: 3
- Inscription: 20 Fév 2006
Voici le script que j'ai modifier pour qu'il permet de lire le fichier en mode FILE UPLOAD:
- Code: Tout sélectionner
<link href="style.css" rel="stylesheet" type="text/css">
<form method="post" action=impoter.php enctype="multipart/form-data">
<table width="110" border="1" align="center">
<tr>
<td colspan="2">Importation</td>
</tr>
<tr>
<td>Fichier:</td>
<td><input name="userfile" type="file" id="userfile"></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="Submit" value="ET HOP!">
</tr>
</table>
</form>
<div align="center">
<p><a href="consul.php">Consulter la base de donnée.</a></p>
<p><a href="test_recette.txt">Télécharger le fichier TXT pour
le test</a></p>
</div>
- Code: Tout sélectionner
<?
$file=$userfile;
$open=fopen($file,'r');
while (!feof($open))
{
$get=fgets($open,4096);
$slashed=addslashes($get);
$str=trim($slashed);
$ligne=explode (";",$str);
$titre=$ligne[0];
$compos=$ligne[1];
$method=$ligne[2];
include ('config.inc.php');
$query = "INSERT INTO recette VALUES('','$titre','$compos','$method')";
MYSQL_QUERY($query);
}
fclose($open);
print '<h2>Importation terminée</h2>';
print '<meta http-equiv="refresh" content="1;URL=consul.php">';
?>
16 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- Export données TABLE SQL vers FICHIER EXCEL
- MySQL -> fichier Excel
- convertir un fichier excel vers base de donnée mysql
- Lier facilement un fichier local type Excel et une base mysql
- [résolu] Enregistrer un fichier Excel 2007 en Excel 2002
- PHP MySql copy table à table [RESOLU]
- [résolu] Export Excel -> MySql
- remplir un base MySQL automatiquement à partir d'excel et dans différentes tables
- Convertir une base Excel en MySQL
- Import fichier excel dans BDD
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités


