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

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Points : 4
    Points
    4
    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
    Points : 44 155
    Points
    44 155
    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.

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Points : 4
    Points
    4
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu pars d'un CSV les deux codes que tu nous montres sont valables.

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Points : 4
    Points
    4
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Quand je dis valable, je parle du principe seulement.
    Il faut les adapter et les remettre au gout du jour.

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Salut !

    Je viens ré-alimenter la discussion, car j'ai du nouveau.. Mais j'ai aussi un nouveau soucis

    J'ai donc mis sur ma page un input file et un bouton "Inserer", le tout d'un formulaire POST avec une action sur mon mon fichier action.php
    (Rien de fou fou)

    Voici mon code :

    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
    <?php 
    ini_set ('max_execution_time', 0); // Aucune limite d'execution 
    try{
    	$bdd = new PDO('mysql:host=localhost; dbname=ZOOM; charset=utf8','root','root');
    }
    catch(Exception $e){
    	die('Erreur : '.$e->getMessage());
    }
    if (isset($_POST['fichier_a_inserer']) && !empty($_POST['fichier_a_inserer']) && isset($_POST['table_a_remplir']) && !empty($_POST['table_a_remplir'])) {
    	//echo $_POST['fichier_a_inserer'].'<br>';
    	//echo $_POST['table_a_remplir'].'<br>';
    $sql = "LOAD DATA LOCAL INFILE '".$_POST['fichier_a_inserer']."'
            INTO TABLE ZOOM.".$_POST['table_a_remplir']."
    	FIELDS
    		TERMINATED BY ';'
    		ENCLOSED BY '\\\"'
    		ESCAPED BY '\\\\'
    	LINES
    		STARTING BY ''
    		TERMINATED BY '\\r\\n'
    		(### Mes 62 colonnes ###)
    ";
    $requete = $bdd->query($sql);
    if ($requete != NULL){
            header ("Refresh: 5;URL=utile_ajax.php?site=".$_GET['site']."");
    	echo 'Chargement réussi de la table '.$_POST['table_a_remplir'].' ! <br>';
    	echo 'Vous serez redirigé dans 5 secondes.. Veuillez patienter <br>';
    }
    else{
    	echo "Une erreur s\'est produite. Vérifiez que votre fichier soit bien conforme aux règles, et qu'une table est été choisie. <br>";
    	echo "<a onclick='history.back();'> Revenir à la page précédente </a><br>" ;
    }
    }
    ?>
    Dans mon input file, j'envoie un fichier CSV, de 62 colonnes, sur 50 lignes.. La, tout se passe bien, il s'insère en BDD..
    Cependant, quand j'essaye avec un fichier plus gros ( 100, 300, 1000 lignes, et toujours 62 colonnes ) ca ne passe pas.. :/

    Mes messages d'erreur :

    Voici le message d'erreur sur ma page : "Query was empty"
    Voici le message d'erreur en console : " mysql_query(): The mysql extension is deprecated and will be removed in the future "
    J'ai aussi celui la de temps en temps : mysql_query() expects parameter 1 to be string, object given in /Applications/MAMP/htdocs/

    Avez vous une idée de pourquoi un fichier de petit taille passe, et pas un de taille moyenne ?

    Si vous résolvez ce problème, j'aurai presque fini mon projet, je compte sur vous !

    Merci d'avance !

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    J'ai donc mis sur ma page un input file
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isset($_POST['fichier_a_inserer']) && !empty($_POST['fichier_a_inserer'])
    Il n'y a rien qui te choques là-dedans ( http://antoine-herault.developpez.co...ls/php/upload/) ?
    Et au passage, !empty() ça réunit les conditions isset() et non vide, donc si tu utilises !empty(), isset() est inutile.

  9. #9
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Désolé Bovino,

    Je ne suis pas du tout a l'aise avec les input file...
    Je regarde ton lien, j'essaye de tirer une conclusion et je reviens vers toi

    Merci beaucoup !

    PS : Si tu as LA solution, je la veux bien ! Histoire de pas passer 2h sur le tuto :p

    EDIT : Si mon code était si degeu.. Pourquoi 50 lignes c'est ok, et 100 non ?.. Etant donné que les tableaux sont construits de la meme maniere...

  10. #10
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    J'ai finalement réussi, grâce a ton lien

    Je pense que c'est relativement degeulasse.. Je veux bien un peu de "relecture" si possible :

    Formulaire :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="hidden" name="MAX_FILE_SIZE" value="500000000"><br>
    Selectionnez votre fichier : <input name="fichier_a_inserer" type="file" value="Chargez un fichier.."><br>
    <input type="submit" value="Inserer"><br>

    Traitement :
    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
    //#### Connexion
    if ( !empty($_FILES['fichier_a_inserer']) && !empty($_POST['table_a_remplir'])){
    	//echo $_POST['fichier_a_inserer'].'<br>';
    	//echo $_POST['table_a_remplir'].'<br>';
     
    $sql = "LOAD DATA LOCAL INFILE '".$_FILES['fichier_a_inserer']['tmp_name']."'
              INTO TABLE ZOOM.".$_POST['table_a_remplir']."
    		FIELDS
    			TERMINATED BY ';'
    			ENCLOSED BY '\\\"'
    			ESCAPED BY '\\\\'
    		LINES
    			STARTING BY ''
    			TERMINATED BY '\\n'
    			(### Mes 62 champs ###)";
    echo $sql.'<br> Requete SQL <br>';
    echo $_FILES['fichier_a_inserer']['tmp_name'].' <- FICHIER <br>';
    echo $_POST['table_a_remplir'].' <- TABLE <br>';
    $requete = $mysqli->query($sql);
    if
    ## bla bla

  11. #11
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    On ne met pas directement dans une requête des données externes.
    Prépare ta requête.

  12. #12
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par sabotage Voir le message
    On ne met pas directement dans une requête des données externes.
    Prépare ta requête.
    D'accord.. Un lien ou un script "basique"..

    Je croyais connaitre.. Mais les essai que je fais avec la doc ne sont pas concluant.. Il me manque quelque chose je crois :/

    En tout cas merci, je met résolu quand meme, mais j'attends, si possible, un dernier petit coup de pouce sabotage

    EDIT:

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $req = $bdd->prepare( "LOAD DATA LOCAL INFILE '".$_FILES['fichier_a_inserer']['tmp_name']."'
              REPLACE INTO TABLE ZOOM.".$_POST['table_a_remplir']."
    		FIELDS
    			TERMINATED BY ';'
    			ENCLOSED BY '\\\"'
    			ESCAPED BY '\\\\'
    		LINES
    			STARTING BY ''
    			TERMINATED BY '\\r\\n'
    			IGNORE 1 LINES
    			(### Mes 62 colones ###)");
     
    $req->execute();

    Je crois que ca marche.. Mais.. Je doute sur la forme :/

+ 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