remplir une table MySQL depuis un fichier Excel

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


xdeslandes
WRInaute impliqué
WRInaute impliqué
 
Messages: 314
Inscription: Mer Déc 29, 2004 20:17

remplir une table MySQL depuis un fichier Excel

Message le Mar Nov 22, 2005 20:09

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 !


oliv63
WRInaute impliqué
WRInaute impliqué
 
Messages: 451
Inscription: Jeu Jan 06, 2005 15:00

Message le Mar Nov 22, 2005 20:43

En passant par le format CSV et PhpMyAdmin :D


xdeslandes
WRInaute impliqué
WRInaute impliqué
 
Messages: 314
Inscription: Mer Déc 29, 2004 20:17

Message le Mar Nov 22, 2005 20:51

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
WRInaute accro
 
Messages: 2899
Inscription: Ven Jan 16, 2004 19:47

Message le Mar Nov 22, 2005 21:04

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 impliqué
WRInaute impliqué
 
Messages: 314
Inscription: Mer Déc 29, 2004 20:17

Message le Mer Nov 23, 2005 9:29

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 ?

Grantome
WRInaute accro
WRInaute accro
 
Messages: 2899
Inscription: Ven Jan 16, 2004 19:47

Message le Mer Nov 23, 2005 10:41

J'utilise jamais easyphp ;-)

sebnutt
WRInaute accro
WRInaute accro
 
Messages: 1308
Inscription: Mer Déc 10, 2003 17:25

Message le Mer Nov 23, 2005 13:40

dans phpmyadmin, tu choisis ta table et en pas de page, tu as un lien "Insérer des données provenant d'un fichier texte dans la table"


xdeslandes
WRInaute impliqué
WRInaute impliqué
 
Messages: 314
Inscription: Mer Déc 29, 2004 20:17

Message le Mer Nov 23, 2005 18:32

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 :wink: .
Salut et merci à tous.

agencep
Nouveau WRInaute
 
Messages: 3
Inscription: Lun Fév 20, 2006 18:01

Message le Lun Fév 20, 2006 18:04

Votre script fonctionne a merveil en local mais sur le serveur non ??
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 impliqué
WRInaute impliqué
 
Messages: 357
Inscription: Mer Mai 04, 2005 21:42

Message le Lun Fév 20, 2006 19:17

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 ? :)


xdeslandes
WRInaute impliqué
WRInaute impliqué
 
Messages: 314
Inscription: Mer Déc 29, 2004 20:17

Message le Lun Fév 20, 2006 20:38

Tu ferais pas du splogging, par hasard ?

du quoi 8O 8O 8O ???

Grantome
WRInaute accro
WRInaute accro
 
Messages: 2899
Inscription: Ven Jan 16, 2004 19:47

Message le Mar Fév 21, 2006 12:43

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: Lun Fév 20, 2006 18:01

Message le Mar Fév 21, 2006 12:48

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
WRInaute accro
 
Messages: 2899
Inscription: Ven Jan 16, 2004 19:47

Message le Dim Fév 26, 2006 11:53

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...

agencep
Nouveau WRInaute
 
Messages: 3
Inscription: Lun Fév 20, 2006 18:01

Message le Dim Fév 26, 2006 12:01

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>&nbsp;</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&eacute;e.</a></p>
  <p><a href="test_recette.txt">T&eacute;l&eacute;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">';
?>


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité