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

Langage PHP Discussion :

Modifier .docx via formulaire


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Par défaut Modifier .docx via formulaire
    Bonjour à tous,

    Dans le cadre de mon travail, je dois réalisé un devis personnalisé.

    C'est à dire qu'une personne remplit un formulaire, et ces données doivent modifier le template .docx associé à ce devis en fonction de ses entrées.

    Cela dit, comment faire cela? J'ai vu phpWord, mais y à t'il autre chose?

    Cordialement,

  2. #2
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Bonjour,

    Peux tu tester ceci ? https://github.com/djpate/docxgen

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Par défaut
    Bonjour,

    Merci à vous pour votre réponse. Après des tests, tout est censé marcher comme il se doit.

    Cela dit, je cherche à faire une nouvelle chose, télécharger ce fichier via un input (submit) de mon formulaire. J'ai testé plusieurs choses qui me téléchargent bien mon fichier, mais lors de l'ouverture de ce dernier, soit il est corrompu (quand il est sous format .docx), soit il y à un échec de l'ouverture de son contenu (sous .pdf).

    Merci d'avance,

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Par défaut
    Note :

    Mon fichier téléchargé n'a pas la même taille que l'original.. Il est de 2ko au lieu de 693. Soit quasiment vide.

    Après ouverture dans notepad, j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    "<br />
    <font size='1'><table class='xdebug-error xe-warning' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
    <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Warning: readfile(file/lol.pdf): failed to open stream: No such file or directory in C:\wamp\www\Glassero-master\Glassero-master\php\download.php on line <i>20</i></th></tr>
    <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
    <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
    <tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.2440</td><td bgcolor='#eeeeec' align='right'>137800</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp\www\Glassero-master\Glassero-master\php\download.php' bgcolor='#eeeeec'>..\download.php<b>:</b>0</td></tr>
    <tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.2460</td><td bgcolor='#eeeeec' align='right'>137976</td><td bgcolor='#eeeeec'>forcerTelechargement(  )</td><td title='C:\wamp\www\Glassero-master\Glassero-master\php\download.php' bgcolor='#eeeeec'>..\download.php<b>:</b>27</td></tr>
    <tr><td bgcolor='#eeeeec' align='center'>3</td><td bgcolor='#eeeeec' align='center'>0.2960</td><td bgcolor='#eeeeec' align='right'>138832</td><td bgcolor='#eeeeec'><a href='http://www.php.net/function.readfile' target='_new'>readfile</a>
    (  )</td><td title='C:\wamp\www\Glassero-master\Glassero-master\php\download.php' bgcolor='#eeeeec'>..\download.php<b>:</b>20</td></tr>
    </table></font>
    "

  5. #5
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Salut,

    tu reçois quasiment un message d'erreur assez claire :
    Warning: readfile(file/lol.pdf): failed to open stream: No such file or directory in C:\wamp\www\Glassero-master\Glassero-master\php\download.php on line

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Par défaut
    Bonsoir,

    En effet, je n'avais pas vu ce message d'erreur qui est dorénavant résolu.

    Je suis désormais sur docxGen et une question me vient. La création des différents blocs est-elle obligatoire? Dans le template fourni, ils ne sont pas utilisés.

    J'essaie donc de mapper différentes zones de textes comprises entre #, mais cela ne fonctionne pas. Le remplacement n'est tout simplement pas effectué.

    Merci de votre aide,

  7. #7
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Citation Envoyé par Magicarpe Voir le message
    La création des différents blocs est-elle obligatoire? Dans le template fourni, ils ne sont pas utilisés.
    Non, les blocs sont utilisés en vue de réutilisation, les données dans les tableaux sont affichés séquentiellement mais tu n'es pas obligé de les utiliser. Si, ils sont bien utilisés ils permettent de délimité l'affichage. Dans l'exemple suivant le bloc members est bien utilisé...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $phpdocx->assignBlock("members",array(array("#NAME#"=>"John","#SURNAME#"=>"DOE"),array("#NAME#"=>"Jane","#SURNAME#"=>"DOE")));
    Citation Envoyé par Magicarpe Voir le message
    J'essaie donc de mapper différentes zones de textes comprises entre #, mais cela ne fonctionne pas. Le remplacement n'est tout simplement pas effectué.
    Tu peux tester le template suivant (template2.docx):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Votre Nom : #NOM#
    Votre Age : #AGE#
    Votre Pseudo : #PSEUDO#
    avec le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    require("phpDocx.php");
     
    $phpdocx = new phpdocx("template2.docx");
     
    list($nom, $age, $pseudo) = array("Patrick", 25, "TheGuy");
     
    $phpdocx->assign("#NOM#", $nom);
    $phpdocx->assign("#AGE#", $age);
    $phpdocx->assign("#PSEUDO#", $pseudo);
     
    $phpdocx->save("test3.docx");

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Par défaut
    Bonjour,

    Merci de tes réponses que je prends sérieusement en compte à chaque fois.

    Ici, "template2.docx" est un fichier qui se créé? Ou déjà existant?

    Cordialement,

  9. #9
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Salut,

    C'est un fichier word normal que j'ai crée et où j'ai saisi le contenu avec une mise en forme de mon choix

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Votre Nom : #NOM#
    Votre Age : #AGE#
    Votre Pseudo : #PSEUDO#

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Par défaut
    Bonjour,

    Je me permets de fournir un bout de 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
    <?php
     
    	require("phpDocx.php");
    	$phpdocx = new phpdocx("Devis_test.docx");
     
     
      function forceDownload($name, $location, $size)
      {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Length: '. $size);
        header('Content-disposition: attachment; filename='. $name);
        header('Pragma: public');
    	header('Content-Transfer-Enconding: binary');
        header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
        header('Expires: 0');
    	header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        readfile($location);
        exit();
      }
     
    	if (isset($_POST['download'])) {
    		$phpdocx->assign("#NOM#", "Dupond");
    		$phpdocx->save("Devis_test.docx");
    		forceDownload('Devis_test.docx', 'file/Devis_test.docx', 6000000);
    	}
     
     
     
    ?>
    Ici donc, une fois que l'utilisateur valide le formulaire, son nom (qu'il à dû rentrer par lui-même) doit être changer dans mon template .docx qui est sous cette forme :

    Nom : aide.png
Affichages : 320
Taille : 6,3 Ko

    J'ai changé que la variable #NOM# pour essayer donc.

    Cordialement,

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Par défaut
    Problème résolu !

    Mes destinations de fichiers qui étaient mauvaises.

    Merci beaucoup !

  12. #12
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Salut,

    Tu ne peux pas utiliser un modèle et puis le changer en même temps.... si ton modèle est le fichier Devis_test.docx, le fichier géneré devrait être Devis_test1.docx par exemple...
    et puis tu dois vérifier que tu as le droit en écriture sur le disque.

  13. #13
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Citation Envoyé par Magicarpe Voir le message
    Problème résolu !

    Mes destinations de fichiers qui étaient mauvaises.

    Merci beaucoup !
    Super !

  14. #14
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2015
    Messages : 644
    Par défaut
    Bonjour,

    Je reviens vers vous par rapport à un problème que je n'arrive pas à résoudre.

    J'ai en arborescence de fichier cela :

    Un fichier "Racine" qui contient "php" et "file". Dans "php", j'ai mon get_file.php qui me génère le docx ("Devis.docx") bien comme il faut dans "file/Devis.docx", mais lors du téléchargement, soit j'ai un téléchargement corrompu, soit un warning du readfile "Failed to open stream".

    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
    <?php
     
    	require("phpDocx.php");
    	$phpdocx = new phpdocx("../file/Devis.docx");
     
      function forceDownload($name, $location, $size)
      {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Length: '. $size);
        header('Content-disposition: attachment; filename='. $name);
        header('Pragma: public');
    	header('Content-Transfer-Enconding: binary');
        header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
        header('Expires: 0');
    	header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        readfile($location);
        exit();
      }
     
    	if (isset($_POST['download'])) {
    		$date = date("F j Y");
     
     
    		$phpdocx->assign("#NOM#", "Dupond");
    		$phpdocx->save("../file/Devis1.docx");
    		forceDownload("Devis_final.docx", "../file/Devis1.docx", 6000000);
    	}
     
     
     
    ?>
    Mon problème est lors de l'appel à forceDownload, soit mes chemins sont bons et il y à autre chose, soit je me trompe..

    Merci d'avance..

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

Discussions similaires

  1. Modifier produit via formulaire + bdd
    Par fredaster31 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/12/2012, 16h45
  2. [SimpleXML] Modifier attribut via formulaire
    Par Bulb0 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 12/02/2012, 18h11
  3. [AC-2007] Modifier valeur de table via formulaire
    Par amartik dans le forum IHM
    Réponses: 2
    Dernier message: 12/01/2010, 11h44
  4. modifier champs requetes via formulaire
    Par QUALIF dans le forum IHM
    Réponses: 1
    Dernier message: 12/02/2008, 21h07
  5. [SQL] Modifier donnés base via formulaire
    Par rane dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 26/07/2007, 14h44

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