IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Creation d'un bouton pour remplir ma BDD via un fichier excel


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Par défaut Creation d'un bouton pour remplir ma BDD via un fichier excel
    Bonjour a tous !

    Je me permets de poster un topic ici, car après 2 longues journées de recherche, je ne trouve rien sur le net qui me soit correct.

    J'expose mon probleme :

    J'ai d'un coté un fichier excel ( assez volumineux )

    J'ai d'un autre coté une base de données MySQL.

    J'ai d'un dernier coté mon site web.

    Je souhaite créer un bouton, permettant a l'utilisateur du site de charger ses tableaux Excel dans ma base. (Comme je le ferai avec l'importation de CSV dans le panel d'admin de MySQL.)

    Cependant, il ne doit pas avoir acces a cette dernière.

    J'ai trouvé un bout de code qui semble se rapprocher de ma demande.. Mais rien ne se passe et je peine a comprendre comment il fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
     
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    ********<fieldset>
    ************<legend>Pour ajouter ton serveur il suffit de remplir ce formulaire </legend>
    ****************<label>Table : <input type="text" name="table" /></label>
    ****************<label>Fichier : <input type="file" name="fichier" /></label>
    ****************<label>Créer table ? <input type="checkbox" name="creertable" checked="checked" /></label>
    ****************<input type="hidden" name="site" value="ajouter" />*
    ****************<input type="submit" name="submit" value="Et HoP !" />
    ********</fieldset>
    ****</form>
    *
    ****<?php // Variables de connexion
    $serveur = "localhost";
    $bddlogin = "root";
    $mdp = "root";
    $bdd = "MonTest";
    *
    mysql_connect($serveur, $bddlogin, $mdp) or die('Impossible de se connecter à la base de données.'.mysql_error());
    mysql_select_db($bdd);
    *
    *
    if ($creertable) // Si la variable existe, on créé la table
    {
    **$sql = " CREATE* TABLE* $bdd.$table (* `id` int( 10* )* NOT* NULL* AUTO_INCREMENT , `titre` varchar( 255* ) NOT* NULL default* '', `numero` int( 10* )* NOT* NULL default* '0', `reccueil` varchar( 255* )* NOT* NULL default* '', `auteur` varchar( 255* )* NOT* NULL default* '', `transparent` varchar( 10* )* NOT* NULL default* '', `copyright` varchar( 10* )* NOT* NULL default* '', KEY* `id` (* `id`* )* ) ENGINE* =* MYISAM DEFAULT CHARSET* = latin1";
    **$result= mysql_query($sql);
    }
    ?>
    *
    <?php
    if (file_exists($fichier)) // On ouvre le fichier à importer en lecture seulement
    *****$fp = fopen("$fichier", "r");
    else // le fichier n'existe pas
    {
    *******echo 'Fichier introuvable ! Importation stoppée.';
    *******exit();
    }
    ?>
    *
    <?php
    while (!feof($fp)) // Le fichier est ouvert, on se prépare à l'importer !
    {
    $ligne = fgets($fp,4096); // Tant qu'on n'atteint pas la fin du fichier On lit une ligne . 4096 est un grand nombre au hasard. Pas trop grand quand même^^
    *
    $liste = explode( ";",$ligne);* // On récupère les champs séparés par ; dans liste. On les met dans un tableau grâce à explode().
    *****// On assigne des variables simples à chaque case du tableau // Grâce à str_replace() on supprime les trémas en trop.
    if(isset($liste[0])) { $titre = htmlentities(addslashes(str_replace('"', '', $liste[0]))); } else { $titre = ""; }
    if(isset($liste[1])) { $numero = htmlentities(addslashes(str_replace('"', '', $liste[1]))); } else { $numero = ""; }
    if(isset($liste[2])) { $reccueil = htmlentities(addslashes(str_replace('"', '', $liste[2]))); } else { $reccueil = ""; }
    if(isset($liste[3])) { $auteur = htmlentities(addslashes(str_replace('"', '', $liste[3]))); } else { $auteur = ""; }
    if(isset($liste[7])) { $transparent = htmlentities(addslashes(str_replace('"', '', $liste[7]))); } else { $transparent = ""; }
    if(isset($liste[8])) { $copyright = htmlentities(addslashes(str_replace('"', '', $liste[8]))); } else { $copyright = ""; }
    *****// Finit on ajoute l'enregistrement à la table
    $query = "INSERT INTO $table VALUES('', '$titre', '$numero', '$reccueil', '$auteur', '$transparent', '$copyright')";
    $result= MYSQL_QUERY($query);
    ***
    **if(mysql_error()) // s'il y a une erreur on stop le processus
    {
    ***********print "Erreur dans la base de données : ".mysql_error();
    ***********print "Importation stoppée.";
    ***********exit();
    }
    else // Tout se passe bien, on affiche le résultat
    **echo '<tr><td>' . stripslashes($titre) . '</td><td>' .stripslashes($numero).'</td><td>' .stripslashes($reccueil).'</td><td>' .stripslashes($auteur).'</td><td>' .stripslashes($transparent).'</td><td>' .stripslashes($copyright).'</td></tr>';
    *
    }
    ?>
    *
    *
    <? // Si des variables POST existent, on les met dans des variables simples.
    if(isset($_POST['creertable']))
    ***$creertable = $_POST['creertable'];
    else
    ***$creertable = '';
    if(isset($_POST['fichier']))
    ***$fichier = $_POST['fichier'];
    if(isset($_POST['table']))
    ***$table = $_POST['table'];
    if(isset($_POST['site']))
    ***$action = $_POST['site'];
    else
    ***$action = '';
    *
    *
    switch($action)
    {
    ***// LECTURE ET AJOUT DES DONNEES DANS LA TABLE
    ***case "ajouter": // On commence par créer le début du tableau pour affiche les données.
    *****echo '
    *****<table border="1" cellpadding="1">
    ********<caption>Données converties :</caption>
    ********<thead>
    ************<tr>
    ****************<th>Titre</th>
    ****************<th>N°</th>
    ****************<th>Reccueil</th>
    ****************<th>Auteur</th>
    ****************<th>Transparent</th>
    ****************<th>Copyright</th>
    ************</tr>
    ********</thead>
    ********<tfoot>
    ************<tr>
    ****************<th>Titre</th>
    ****************<th>N°</th>
    ****************<th>Reccueil</th>
    ****************<th>Auteur</th>
    ****************<th>Transparent</th>
    ****************<th>Copyright</th>
    ************</tr>
    ********</tfoot>
    ********<tbody>';
    // Variables de connexion
    $serveur = "localhost";
    $bddlogin = "root";
    $mdp = "root";
    $bdd = "MonTest";
    *
    mysql_connect($serveur, $bddlogin, $mdp) or die('Impossible de se connecter à la base de données.'.mysql_error());
    mysql_select_db($bdd);
    *
    *
    if ($creertable) // Si la variable existe, on créé la table
    {
    **$sql = " CREATE* TABLE* $bdd.$table (* `id` int( 10* )* NOT* NULL* AUTO_INCREMENT , `titre` varchar( 255* ) NOT* NULL default* '', `numero` int( 10* )* NOT* NULL default* '0', `reccueil` varchar( 255* )* NOT* NULL default* '', `auteur` varchar( 255* )* NOT* NULL default* '', `transparent` varchar( 10* )* NOT* NULL default* '', `copyright` varchar( 10* )* NOT* NULL default* '', KEY* `id` (* `id`* )* ) ENGINE* =* MYISAM DEFAULT CHARSET* = latin1";
    **$result= mysql_query($sql);
    }
    ***
    if (file_exists($fichier)) // On ouvre le fichier à importer en lecture seulement
    *****$fp = fopen("$fichier", "r");
    else // le fichier n'existe pas
    {
    *******echo 'Fichier introuvable !Importation stoppée.';
    *******exit();
    }
    *
    while (!feof($fp)) // Le fichier est ouvert, on se prépare à l'importer !
    {
    $ligne = fgets($fp,4096); // Tant qu'on n'atteint pas la fin du fichier On lit une ligne . 4096 est un grand nombre au hasard. Pas trop grand quand même^^
    *
    $liste = explode( ";",$ligne);* // On récupère les champs séparés par ; dans liste. On les met dans un tableau grâce à explode().
    *****// On assigne des variables simples à chaque case du tableau // Grâce à str_replace() on supprime les trémas en trop.
    if(isset($liste[0])) { $titre = htmlentities(addslashes(str_replace('"', '', $liste[0]))); } else { $titre = ""; }
    if(isset($liste[1])) { $numero = htmlentities(addslashes(str_replace('"', '', $liste[1]))); } else { $numero = ""; }
    if(isset($liste[2])) { $reccueil = htmlentities(addslashes(str_replace('"', '', $liste[2]))); } else { $reccueil = ""; }
    if(isset($liste[3])) { $auteur = htmlentities(addslashes(str_replace('"', '', $liste[3]))); } else { $auteur = ""; }
    if(isset($liste[7])) { $transparent = htmlentities(addslashes(str_replace('"', '', $liste[7]))); } else { $transparent = ""; }
    if(isset($liste[8])) { $copyright = htmlentities(addslashes(str_replace('"', '', $liste[8]))); } else { $copyright = ""; }
    *****// Finit on ajoute l'enregistrement à la table
    $query = "INSERT INTO $table VALUES('', '$titre', '$numero', '$reccueil', '$auteur', '$transparent', '$copyright')";
    $result= MYSQL_QUERY($query);
    ***
    **if(mysql_error()) // s'il y a une erreur on stop le processus
    {
    ***********print "Erreur dans la base de données : ".mysql_error();
    ***********print "Importation stoppée.";
    ***********exit();
    }
    else // Tout se passe bien, on affiche le résultat en tableau.
    **echo '<tr><td>' . stripslashes($titre) . '</td><td>' .stripslashes($numero).'</td><td>' .stripslashes($reccueil).'</td><td>' .stripslashes($auteur).'</td><td>' .stripslashes($transparent).'</td><td>' .stripslashes($copyright).'</td></tr>';
    *
    }
    // On affiche la fin du tableau est un message explicitant que l'importation est terminé.
    echo '</tbody></table>Importation terminée, avec succès.<a href="convertion.php">Refaire une importation</a>';
    ********// Fermeture
    fclose($fp);
    mysql_close();
    ****
    ***break;
    *
    ***// Si les variables POST n'existe pas, on affiche le formulaire d'importation.
    ***default:
    ***?>*
    **<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    ********<fieldset>
    ************<legend>Pour ajouter ton serveur il suffit de remplir ce formulaire </legend>
    ****************<label>Table : <input type="text" name="table" /></label>
    ****************<label>Fichier : <input type="file" name="fichier" /></label>
    ****************<label>Créer table ? <input type="checkbox" name="creertable" checked="checked" /></label>
    ****************<input type="hidden" name="site" value="ajouter" />*
    ****************<input type="submit" name="submit" value="Et HoP !" />
    ********</fieldset>
    ****</form>
    ***<?
    ***break;
    ***} // On termine le Switch
    **?>
    Je vous laisse me poser des questions ou autre, et merci d'avance pour l'aide !


    Un code plus court semble aussi pouvoir me donner ce que je veux ( en partie graphique uniquement ^^ )

    Je vous le donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
     
    <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 = "ZOOM"; /* Base de données */
    ***$host= "localhost"; /* Hote (localhost en principe) */
    ***$user= "root"; /* Utilisateur */
    ***$pass= "root"; /* 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 */
    *******$nom = $liste[0];
    *******$prenom = $liste[1];
    *****
    *******/* 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, surement 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 "$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\">"; ?>
    *****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="file" 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>
    Merci d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Les deux codes que tu nous montres traitent des CSV.

    Pour manipuler un format Excel, tu peux utiliser PHPExcel.
    Sinon le principe est le même : lecture du document et insertion ligne par ligne dans la base de données.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Par défaut
    Oui, le CSV peut aussi m'aller

    En ce qui concerne PHPExcel.. J'ai regarder/lu plusieurs tutos.. Et en terme de connaissance, je dois être court, car je ne comprend absolument pas comment utiliser cette librairie :s

    Je ne comprend pas comment l'appeler dans mes fichiers et comment m'en servir a bon escient..

    Peux-tu m'éclairer ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si tu pars d'un CSV les deux codes que tu nous montres sont valables.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Par défaut
    A vrai dire, je peux me servir des deux. Mon client sait comment fonctionne les CSV..

    Cependant, dans les codes que je t'ai donné, quand je les execute (quand je clique sur le bouton quoi.. ) il ne se passe rien.. Hors, je ne suis pas a l'aise avec ce genre de code, et je t'avoue ne pas tout comprendre.. As-tu une idée du pourquoi ca ne fonctionnerai pas chez moi ?

    Merci du temps que tu prends pour me répondre

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Quand je dis valable, je parle du principe seulement.
    Il faut les adapter et les remettre au gout du jour.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Bouton pour transférer des données d'un fichier Excel vers un autre
    Par Alfred23 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 07/09/2011, 16h46
  2. [AC-2007] Bouton pour remplir champs
    Par puledad1 dans le forum Access
    Réponses: 1
    Dernier message: 07/09/2011, 08h44
  3. Réponses: 2
    Dernier message: 03/06/2010, 17h29
  4. [XML] Parser du XML pour remplir une BDD SQL
    Par LePueblo dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 08/10/2008, 12h44
  5. creation d'un bouton pour excel 2007
    Par AnozerOne dans le forum Excel
    Réponses: 2
    Dernier message: 06/07/2007, 15h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo