JeuWeb - Crée ton jeu par navigateur
excel et mysql - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : excel et mysql (/showthread.php?tid=7132)

Pages : 1 2


excel et mysql - hercull - 02-09-2014

Bonjour,

je dois mettre en place un formulaire qui me permet d'envoyer un document excel et d'enregistrer son contenu dans une bdd mysql.

En cherchant sur le net j'ai trouver un script qui est censé faire ce dont j'ai besoins , je l'ai un peu modifier pour qu'il corresponde à ce que je veux.

Seulement le script utilise des variable qu'il n'initialise pas, donc quand je lance le script j'ai un message d'erreur me disant Undefined variable forcement.

Donc j'aimerai savoir si la méthode utilisé est bonne ou non, dans le cas ou cela ne l'est pas quel solution me proposez vous?

Dans le cas ou cela est bon que faire pour que le script fonctionne?

Cordialement.

HTML:

Code :
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
      <input type="text" name="date"  placeholder="Date..." /><br /><br />
      <input type="text" name="titre" style="width:550px;" maxlength=255 placeholder="Titre..."/><br /><br />
      <input type="text" name="description" style="width:550px;" maxlength=255 placeholder="Description..."/><br /><br />
      <h2>2) Importer nouvelle liste de produit</h2>
      <input name="file" type="file" /><br/><br/><br/>
      <input type="submit" value="Valider" style="width:150px; height:30px;" class="btn btn-primary"/><br/><br/><br/><br/>
     </form>

PHP mysql:

Code :
if(file_exists($file))
                {
                    $fp = fopen("$file", "r");
                    
                    while(!feof($fp))
                    {
                        $ligne = fgets($fp,4096);
                        $liste  = explode( ";",$ligne);
                        echo $date_vente = $liste[0];
                        echo $code_vente = $liste[1];
                        echo $num_lot = $liste[2];
                        echo $titre = $liste[3];
                        echo $description_produit = $liste[4];
                        echo $estimation = $liste[5];
                        echo $icone_produit = $liste[6];
                        echo $photo_produit = $liste[7];
                                
                $req = 'INSERT INTO produits(date_vente,code_vente,num_lot,titre,description_produit,estimation,icone_produit,photo_produit)
                    VALUES ("'.$date_vente.'","'.$code_vente.'","'.$num_lot.'","'.$titre.'","'.$description_produit.'","'.$estimation.'","'.$icone_produit.'","'.$photo_produit.'");';                                              
                $req2 = mysql_query($req) or die (mysql_error());



RE: excel et mysql - Ter Rowan - 02-09-2014

je vais poser une question con mais dans toc code... qu'est ce que $file ?


RE: excel et mysql - Xenos - 02-09-2014

Citation :d'enregistrer son contenu dans une bdd mysql.
Donc, pas enregistrer le fichier dans un champ de la BDD, mais enregistrer les lignes dans la BDD sql?
Hmmm cela me semble très (trop) délicat: les colonnes sont peut-être dans le désordre, voir il pourrait y en manquer, je ne suis pas certain qu'on puisse différencier "" (chaine vide) et NULL,...

Il me semble que PHPMyAdmin permet d'importer/Exporter en XSL: peut-être peux tu soit t'en servir directement, soit comprendre le fonctionnement de cette importation?

Sinon, dans ton snippet, $file devrait venir de $_FILES[] et de l'upload. C'est certainement cette définition qui manque. Après, je ne sais pas si le "explode ;" est fonctionnel... le format .xlsx est un format compressé (type zip) je crois...


( Je crois qu'il suffit d'un "." dans la valeur de form/@action plutôt que du PHP_SELF )
( input/@type=date est là pour cela )


RE: excel et mysql - hercull - 02-09-2014

Ter Rowan
$file est une variable qui va être utilisé dans le script mais qui n'est pas initialisé, et donc le script ne peux pas fonctionner, ce code ne viens pas de moi donc j'ai du mal à le modifier à ma guise pour qu'il fonctionne.

ils s'agirait apparemment de la valeur récupérer depuis le input <input name="file" type="file" />

Mais dans ce cas il manquerai alors une ligne du type $file = $_POST['file'];

ou plutôt comme le dit Xenos $file = $_FILES['file'];

Le probleme viendrait il de la?



Xenos

Oui le but est d'enregistrer les lignes dans la BDD sql.

Le but est d'automatiser l’opération d'envoi du fichier excel et de l'importation des lignes dans la bdd, pour qu'une personne qui n'ai pas de connaissance en programmation puisse envoyer son fichier, donc je ne peux pas passer par le code ou par phpmyadmin pour cette opération.

Pour le fichier excel il sera toujours fait de la même manière, même nombre de colonne, même ordre, pas de case vide.

Pour le format xls il est possible d'enregistrer plutôt le document en .csv, cela faciliterai surement la tache non?


RE: excel et mysql - SorenS - 02-09-2014

Quand on doit faire ça au boulot on utilise la lib phpoffice/phpexcel --> https://github.com/phpoffice/phpexcel

Facilement instable via composer et ça fait son job nickel


RE: excel et mysql - niahoo - 02-09-2014

Bah il te manque tout simplement le code qui récupère le chemin du fichier uploadé pour pouvoir le lire. Y a des tutos pour ça sur openclassrooms par exemple.


RE: excel et mysql - Ter Rowan - 02-09-2014

oui ma question con n'était pas une question con, c'était un élément de réflexion

pour que ca marche il faut au moins que $file soit initialisé


RE: excel et mysql - hercull - 03-09-2014

Après modification cela ne fonctionne pas, voici le code :

Quand je met "." dans action cela me redirige vers la page d’accueil et ce n'est pas ce que je veux.

Le probleme vient du if(file_exists($file)) car cela me renvoi le message: " Fichier introuvable, importation stoppée" ainsi que : "Undefined index: file"

Il ne trouve pas mon fichier envoyer en upload.


Code :
<form method="post" action="">
      echo'<input type="text" name="date"  placeholder="Date..." /><br /><br />
      <input type="text" name="titre" style="width:550px;" maxlength=255 placeholder="Titre..."/><br /><br />
      <input type="text" name="description" style="width:550px;" maxlength=255 placeholder="Description..."/><br /><br />
      <h2>2) Importer nouvelle liste de produit</h2>
      <input type="text" name="nom_dossier" style="width:550px;" maxlength=255 placeholder="Nom du dossier qui contiendra les images..."/><br /><br />
      <input name="file" type="file" id="file"/><br/><br/><br/>
      <input type="submit" value="Valider" style="width:150px; height:30px;" class="btn btn-primary"/><br/><br/><br/><br/>
     </form>

Code :
$file = $_FILES['file'];

                
                if(file_exists($file))
                {
                    $fp = fopen("$file", "r");
                    
                    while(!feof($fp))
                    {
                        $ligne = fgets($fp,4096);
                        $liste  = explode( ";",$ligne);
                        echo $date_vente = $liste[0];
                        echo $code_vente = $liste[1];
                        echo $num_lot = $liste[2];
                        echo $titre = $liste[3];
                        echo $description_produit = $liste[4];
                        echo $estimation = $liste[5];
                        echo $icone_produit = $liste[6];
                        $path = "www.zzz.com/images";
                        echo $icone_produit_final = $path/$nom_dossier/$liste[6];
                        echo $photo_produit = $liste[7];
                        echo $photo_produit_final = $path/$nom_dossier/$liste[7];
                                
                $req = 'INSERT INTO produits(date_vente,code_vente,num_lot,titre,description_produit,estimation,icone_produit,photo_produit)
                    VALUES ("'.$date_vente.'","'.$code_vente.'","'.$num_lot.'","'.$titre.'","'.$description_produit.'","'.$estimation.'","'.$icone_produit.'","'.$photo_produit.'");';                                              
                $req2 = mysql_query($req) or die (mysql_error());

                    }
                }
                else{
                    echo'Fichier introuvable, importation stoppée';
                }
                
                fclose($fp);
                
                echo '<br/><center><span style="color:green; font-size:16px; font-weight:bold;">La Nouvelle ventes a bien été creer!</span></center><br/>';
                
                }


Avez vous une solution à me proposer?

SorenS je ne sais pas du tout comment installer cela , je code en procédural et apparemment ce que tu me propose est en objet et requiert un framework.


RE: excel et mysql - niahoo - 03-09-2014

que renvoie var_dump($_FILES); ?


RE: excel et mysql - hercull - 03-09-2014

var_dump($file) renvoi "null"
var_dump($_FILES) renvoi array (size=0)
empty