[PHP][MYSQL] gegevens koppelen aan een word-document

Pagina: 1
Acties:
  • 197 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voor een school zijn we bezig met het ontwikkelen van een website. De bedoeling is dat docenten standaard brieven kunnen genereren en printen voor studenten.(en het moet dus overal kunnen). Het adres van een student moet dus vanuit mysql DB op een standaard brief komen in een een word-document. Dus als er 200 studenten in DB staan dan moet er dus ook 200 brieven gegenereert worden. a.d.h van een 'standaard' brief (word-document) die op een Novell server te vinden is.

Brieven voor studenten worden dus niet opgeslagen op de server.
Een docent krijgt eerst te zien wat er gegenereert is en vervolgens kan het document geprint worden. Gegenereerde Brieven moeten dus in 1 doc file getoont worden op het web.

Ik heb tot nu toe dit gedaan:
<?php
$word = new com("word.application") or die("Unable to instantiate Word");
$word->Visible = 1;
$word->Documents->Add();
$word->Selection->InsertFile("brief.php");
?>

Hoe krijg ik MYSQL adres gegevens binnen standaard brief: brief.php?
Is dit wel de juiste manier? Heb ik VBA nodig (in verband met TAGS met velden in DB)?
Weet iemand hoe dit moet?

Acties:
  • 0 Henk 'm!

  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 20:05
Verwijderd schreef op dinsdag 28 december 2004 @ 19:59:
Voor een school zijn we bezig met het ontwikkelen van een website. De bedoeling is dat docenten standaard brieven kunnen genereren en printen voor studenten.(en het moet dus overal kunnen). Het adres van een student moet dus vanuit mysql DB op een standaard brief komen in een een word-document. Dus als er 200 studenten in DB staan dan moet er dus ook 200 brieven gegenereert worden. a.d.h van een 'standaard' brief (word-document) die op een Novell server te vinden is.

Brieven voor studenten worden dus niet opgeslagen op de server.
Een docent krijgt eerst te zien wat er gegenereert is en vervolgens kan het document geprint worden. Gegenereerde Brieven moeten dus in 1 doc file getoont worden op het web.

Ik heb tot nu toe dit gedaan:
<?php
$word = new com("word.application") or die("Unable to instantiate Word");
$word->Visible = 1;
$word->Documents->Add();
$word->Selection->InsertFile("brief.php");
?>

Hoe krijg ik MYSQL adres gegevens binnen standaard brief: brief.php?
Is dit wel de juiste manier? Heb ik VBA nodig (in verband met TAGS met velden in DB)?
Weet iemand hoe dit moet?
Nu heb ik nog nooit met php op een windows doos gespeeld, dus weet ik ook niet of je het hele word.application kunt benaderen, maar in principe lijkt dit te kunnen.

Je kunt dan het beste nadat je je brief gemaakt hebt, van die brief een samenvoegbestand maken, dat koppelen aan, bijv. een csv van de geadresseerden en daarmee je word document maken.

Hoe je dit allemaal doet, kun je in de VBA help van word terugvinden.

Was advocaat maar vindt het juridische nog steeds leuk


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Persoonlijk denk ik dat PDF sowieso voor dit soort zaken meer geschikt is omdat dit op elke computer aanwezig is. Verder is het eenvoudig om met een PDF class een tekst op een vastgestelde positie te plaatsen.

Acties:
  • 0 Henk 'm!

  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 18-09-2019
Het kan gewoon hoor..ik doe het zelf ook.
pas de volgende stappen toe :

1. maak een RTF op. (weet neit of het met DOC kan, maar zou maar zo kunnen)
stel je wil bovenaan de brief een variabele uit de database zetten.
zet op DIE plaats in je RTF (of DOC) het volgende :
%VARIABELE%

2. maak een php bestand met daarin een select waarmee je de waarden die je voor je Word-document wil gebruiken uit de database haalt.

3. open daaronder in je php-bestand het word-document :

PHP:
4
5
$userfile = "brief.rtf";
$fd = fopen ($userfile, "rb");


4. lees het hele document in , en zet het in een string.

PHP:
4
$content = fread ($fd, filesize ($userfile));


5. sluit het bestand weer
PHP:
4
fclose ($fd);



6. verander nu de waarden die je hebt gekenmerkt met %variabele% in je $content ($content is dus het hele document)
PHP:
4
$content = preg_replace("%NAAM%",$naam , $content);

enz..
enz..

7. Nu heb je na het veranderen van de variabelen in $content het vernieuwde Word-document staan..

open nu Word met de content op de volgende manier :

PHP:
4
5
6
header("Content-disposition: attachment; Filename=$filename");
header("Content-type: application/ms-word; name=".$filename);
echo $content;


alstublieft. :Y)

| www.everythingisspiritual.com | www.mosaic.org |


Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 10-08 02:59

Gerco

Professional Newbie

Whitehouse: Mooie uitleg, ik zou het misschien zelf ook zo doen, maar misschien is het beter om ipv application/ms-word, text/rtf (oid) mee te geven. Op die manier zal een rtf editor het bestand openen als er geen word is (desnoods wordpad), bijvoorbeeld op een non-windows machine. Ik ben een beetje allergisch voor dit soort mime-types :)

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!