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
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 5
    Points
    5
    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
    Expert confirmé
    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
    Points : 4 853
    Points
    4 853
    Par défaut
    Bonjour,

    Peux tu tester ceci ? https://github.com/djpate/docxgen
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 5
    Points
    5
    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
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 5
    Points
    5
    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
    Expert confirmé
    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
    Points : 4 853
    Points
    4 853
    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
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 5
    Points
    5
    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
    Expert confirmé
    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
    Points : 4 853
    Points
    4 853
    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");
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 5
    Points
    5
    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
    Expert confirmé
    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
    Points : 4 853
    Points
    4 853
    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#
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 5
    Points
    5
    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 : 263
Taille : 6,3 Ko

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

    Cordialement,

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

    Informations professionnelles :
    Activité : Étudiant

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

    Mes destinations de fichiers qui étaient mauvaises.

    Merci beaucoup !

  12. #12
    Expert confirmé
    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
    Points : 4 853
    Points
    4 853
    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.
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  13. #13
    Expert confirmé
    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
    Points : 4 853
    Points
    4 853
    Par défaut
    Citation Envoyé par Magicarpe Voir le message
    Problème résolu !

    Mes destinations de fichiers qui étaient mauvaises.

    Merci beaucoup !
    Super !
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  14. #14
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2015
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    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
    Points : 1 509
    Points
    1 509
    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..
    Un fait toujours plaisir et encourage à l'entraide. Un n'est pas à négliger, pensez aux autres !

    Que la force soit avec Developpez.net
    Je ne suis pas un crack en informatique, loin de là, mais il n'y a pas que les mécaniciens qui sachent conduire une voiture

+ 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