Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2113 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Stockage des données d'un formulaire php dans un fichier csv

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Stockage des données d'un formulaire php dans un fichier csv

n°2137033
scribou
Posté le 17-04-2012 à 08:34:56  profilanswer
 

Bonjour à tous,
 
Alors comme indiqué dans le titre j'aimerai stocker les données d'un formulaire php dans un fichier .csv (.xls serait le top mais j'ai pu voir après de nombreuses recherches qu'il était visiblement plus simple de le faire dans un .csv)
 
Je m'explique, j'ai un projet à réaliser qui est de permettre le suivis d'éléments d'amélioration suite à des dysfonctionnements sur des chantiers.  
Bref, j'ai créé des pages en PHP qui permettent l'accès à un formulaire composé de listes déroulantes, suite à la validation de ce formulaire via un bouton "submit" l'utilisateur est redirigé vers un nouveau formulaire composé lui de "textarea" afin de saisir la description du dysfonctionnement rencontré.
J'aurai besoin que les données de ces deux formulaires soient enregistrées dans un fichier.csv ou .xls qui serait déjà existant et qui s'implémenterai à chaque nouvelle saisie. Cependant le problème majeur et que je ne peux pas passer par une SGBD traditionnelle, je n'ai pas accès a la base de données de l'entreprise.  
J'espère que mon problème est clair et surtout qu'il est résolvable.
 
PS: Il est possible qu'un topic répondre à mon problème existe mais j'ai fait de nombreuses recherches et je n'ai rien trouvé ...
 
Voici quelques petits bout de code:
 
Un code qui me permet de mettre des données dans un fichier.csv:
 
<?php
class FichierExcel {
 
private  
 $csv = Null;
 // Cette fontion est exactement la même que la fonction insertion, mais pour un soucis de clarté je préfère la garder
 // pour implanter les en-têtes de colonne
 function Colonne($file) {
 
  $this->csv.=$file."\n";
  return $this->csv;
 
 }
 
 // Insertion des lignes dans le fichiers Excel, il faut introduire les données sous formes de chaines
 // de caractères.
 // Attention a séparer avec une virgule.
 
 function Insertion($file){
 
  $this->csv.=$file."\n";
  return $this->csv;
 }
 
 
 // fonction de sortie du fichier avec un nom spécifique.
 
 function output($NomFichier){
 
  header("Content-type: application/vnd.ms-excel" );
  header("Content-disposition: attachment; filename=$NomFichier.csv" );
  print $this->csv;
  exit;
 }
}
?>
 
 
 
 
<?php
     include('FichierExcel.php');
     $description = $_GET['description'];
     $fichier = new FichierExcel();
     $fichier->Colonne("Col1;Col2;Col3" );
     $fichier->Insertion("$description ;SALUT;BONJOUR" );//ici on peut faire une boucle si nécessaire.
     $fichier->output('DysfonctionnementNord');
?>
 
Lors de l'execution de ce script le fichier.csv s'ouvre mais ne prend pas la valeur 'description' il me dit qu'elle n'est pas déclarée. ('description' est le nom de la textarea présente dans le formulaire qui exécute ce code.)
 
 
Ce code n'est là qu'à titre d'information, et les autres codes ne sont que des formulaires "basiques"
 
 
Voilà le premier formulaire composé uniquement de listes déroulantes (il n'est pas complet mais inutile de surcharger encore plus ce message) :  
 
echo"<table>
 <tr>
  <td>Rédacteur : </td>
  <td>
   <select style=\"BACKGROUND-POSITION: left 50%; WIDTH: 200px\" name=\"redacteur\">
   <option name=\"redacteur1\"> Dupont Julien </option>
   <option name=\"redacteur2\"> Martin Pierre </option>
   <option name=\"redacteur3\"> Hebert Dimitri </option>
   </select>
  </td>
  <td></td>
  <td>Responsable Curatif : </td>
  <td>
   <select style=\"BACKGROUND-POSITION: left 50%; WIDTH: 200px\" name=\"responsableCur\">
   <option name=\"respCur1\"> Dupont Julien </option>
   <option name=\"respCur2\"> Martin Pierre </option>
   <option name=\"respCur3\"> Hebert Dimitri </option>
   </select>
  </td>  
 </tr>
 
 <tr>
  <td>Service Concerné : </td>
  <td>
   <select style=\"BACKGROUND-POSITION: left 50%; WIDTH: 200px\" name =\"Service\">
   <option name =\"service1\"> Service1 </option>
   <option name =\"service2\"> Service2 </option>
   <option name =\"service3\"> Service3 </option>
  </td>
  <td></td>
  <td>Responsable du Service : </td>
  <td>
   <select style=\"BACKGROUND-POSITION: left 50%; WIDTH: 200px\" name=\"responsableSer\">
   <option name=\"respSer1\"> RespService1 </option>
   <option name=\"respSer2\"> RespSerice2 </option>
   <option name=\"respSer3\"> RespSerice3 </option>
   </select>
  </td>
 </tr>
 
De plus voilà le formulaire de saisie de description :
echo"<form action =\"test.php\" method = \"get\"><table>
  <tr><td>Description : </td></tr>
  <div class=\"texte\">
  <tr><td><textarea class=\"texte\" name\"description\" id=\"description\">Tapez votre description</textarea></td></tr>
  <div>
  <tr><td><input type=\"submit\" value=\"Valider\">
    <input type=\"reset\" value=\"Annuler\">
  </td></tr>
  </table></form>";
 
 
J'espère que mon message est clair et pas trop chargé, j'ai essayé de faire au mieux afin de faciliter la lecture.
Merci d'avance à ceux qui prendront le temps de me répondre.
Scribou

mood
Publicité
Posté le 17-04-2012 à 08:34:56  profilanswer
 

n°2137042
rufo
Pas me confondre avec Lycos!
Posté le 17-04-2012 à 09:12:34  profilanswer
 

Utilises la balise [code] pour mettre ton code ;)
 
Si j'ai bien compris, tu veux que chaque nouveau dysfonctionnement donne lieu à un fichier csv. Donc, y'aura pas de lecture dans ton IHM PHP du contenu de ces fichiers csv. Je veux dire par là que tu comptes pas te servir de ces fichiers CSV comme une pseudo BD et que tu ferais des recherche dedans. Si c'est le cas, laisse tomber, les perfs vont être désastreuses.
 
Par  contre, si c'est juste "exporter" le contenu du formulaire en csv, ben oui, c'est bon et c'est facile à faire. par contre, ton implémentation du CSV n'est pas bonne. Déjà, y'a pas que le ; comme séparateur (mais c'est souvent celui utilisé). mais surtout, vu que ton contenu va venir d'un textarea, tu ne gère pas les \n ni l'échappement du séparateur (ben oui, il se passe quoi si l'utilisateur saisit dans son texte un ;). :o
 
Tu ferais mieux d'utiliser fputcsv() ( http://www.php.net/manual/fr/function.fputcsv.php ) pour générer ton csv (et fgetcsv() pour la lecture) ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2137050
scribou
Posté le 17-04-2012 à 09:26:59  profilanswer
 

D'abord merci de ta réponse, (et de l'astuce pour la balise code je ne l'avais pas vu :/)
Alors en fait il faudrait que chaque fois qu'un formulaire est validé il aille s'enregistrer colonne par colonne (pré-définie) dans le fichier .csv mais un seul fichier, il ne faut pas en créer un a chaque fois :/
 
Et oui j'aurai voulu m'en servir comme une pseudo-base de données en récupérant les données à l'intérieur pour les réafficher (mais en non modifiable) dans un formulaire pour la réponse au dysfonctionnement. Et je précise que le .csv sera non modifiable (sauf administrateur) c'est pour ça que j'ai pensé que c'était possible.
Au pire je peux aussi juste vérifié si la colonne de description est bloquée ou pas (pour savoir si elle a déjà été utilisée et si le formulaire doit afficher la suite), mais est-ce possible ?
 
Si non as-tu une autre idée ? (à tout hasard ;) )

n°2137063
rufo
Pas me confondre avec Lycos!
Posté le 17-04-2012 à 09:55:59  profilanswer
 

Pourquoi tu mets pas un sgbd (qui a souvent une fonction d'export en CSV) :??: un Mysql ou un sqlite, irait très bien...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2137067
scribou
Posté le 17-04-2012 à 10:01:33  profilanswer
 

Ben j'aimerais bien mettre un SGBD Mysql mais la c'est dans le cadre d'un stage en entreprise et je n'ai pas accès a la base de donnée parce qu'en fait l'informatique est géré par un sous-traitant de l'entreprise et mon tuteur voudrait que mon logiciel soit autonome du sous-traitant.  
Mais je suis vraiment ouvert à toutes les idées ... ;)
Si tu pense qu'il y à faire une SGBD Mysql sur un poste en serveur local je suis preneur mais il me faudra deux-trois explications :) (théoriquement je devrais comprendre assez vite)

n°2137072
rufo
Pas me confondre avec Lycos!
Posté le 17-04-2012 à 10:09:55  profilanswer
 

Ben ton sgbd, tu le mets au tu veux. De toute manière, il te faut bien un serveur pour faire tourner ton appli php :/ Tu peux donc mettre Mysql ou sqlite (qui a l'intérêt d'être un sgbd très léger et ou la BD est un seul fichier) dessus...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2137076
scribou
Posté le 17-04-2012 à 10:14:30  profilanswer
 

Ben j'ai jamais fait de la sgbd autre qu'à l'IUT et c'était du via psql
Donc je suppose que Mysql est peut être plus simple pour moi ?
Sinon peux-tu me donner quelques explications de comment procéder pour établir ma sgbd et l'utiliser stp ?

n°2137081
rufo
Pas me confondre avec Lycos!
Posté le 17-04-2012 à 10:22:18  profilanswer
 

Ben ça dépend de quel sgbd tu vas prendre. J'ai jamais bossé avec sqlite, moi, c'est surtout avec Mysql. Mais rien de bien compliqué, surtout si t'es sous Windows. Tu télécharges l'installeur, tu l'exécutes, et hop, c'est fini. Tu peux même télécharger un WampServer qui contient apache, php et Mysql et qui te fournit un environnement prêt à être utilisé. Pour créer la BD et ses tables, ben Mysql Workbench ou phpmyadmin (fourni avec WamServer).
 
Pour les requêtes, Mysql support le sql standard. Pour les fonctions spécifiques, ben RTFM :o
 
Pour la connexion depuis php, y'a pleins de tutos sur le ben.
 
Donc rien de bien compliqué...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2137086
scribou
Posté le 17-04-2012 à 10:34:07  profilanswer
 

Ok ben je vais essayer de faire tout ça ! =)
Merci beaucoup pour tes réponses !
Si j'ai un soucis j'irais RTFM et si j'ai toujours un problème après ça je te redemanderai si tu es d'accord (en pv). ;)
Bonne journée !

n°2137089
rufo
Pas me confondre avec Lycos!
Posté le 17-04-2012 à 10:36:14  profilanswer
 

pas besoin de me contacter en pv, fait-le ici, t'auras plus de réponses (je suis au boulot, j'ai pas forcément tout le temps du temps à consacrer à ce forum)...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Stockage des données d'un formulaire php dans un fichier csv

 

Sujets relatifs
Modifier le fichier xml avec un feuille XSLTOrganisation de tout plein de données
Batch - Copie de fichier selon leur date de modificationcréation et gestion d'une base de données.
explication et lecture d'un fichier binaire(C3D)Utiliser le contenu d'un fichier XML
Shell Unix : Extraire une valeur d'un fichierExtraction de données
Base de données en réseau.erreur d'importation sauvegarde base de données SQL
Plus de sujets relatifs à : Stockage des données d'un formulaire php dans un fichier csv


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR