[PHP] "Kaal" bericht uit formulier afdrukken.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een formuliertje gebouwd waarin een gebruiker de voorbereiding van een activiteit kan samenvatten. Feitelijk is het een gewoon contact-formuliertje dat is uitgebouwd. Nu krijgt de gebruiker na het invullen en nieuw scherm te zien, waarin hij het bericht ($bericht) krijgt te zien. De output van het formulier is een kort stukje html dat direct via een wysiwyg-editor op de site kan worden gepubliceerd.

Nu heb ik er een knop onder geplaatst zodat dit door de gebruiker uitgeprint kan worden. Nu vroeg ik me af of ik met een simpel commando alléén $bericht af kan drukken zonder dat ook opmerkingen, site-adressen, de knop zelf e.d. ook worden afgedrukt.

Dit brengt het volgende scherm:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  if(mail($naar, $_POST['programma'],$bericht,$headers)) // Als de mail naar de webmaster is verstuurd
            { 
                echo '';
            } 
            else // Anders
            { 
                echo 'Het bericht is helaas niet verstuurd en zal dus niet worden geplaatst op de website'; 
            } 
            $ond = "Jouw bericht, verzonden naar ". $naar;
            if(mail($_POST['email'], $ond,$bericht,$headers)) // Als de mail naar de verzender is verstuurd
            { 
                echo $bericht;
                echo '<form><input type="button" onclick="javascript: window.print()" value="Druk deze pagina af en neem hem mee naar de blokhut!"></form>';
                
            } 
            else // Anders
            { 
                echo 'Je ontvangt zelf geen programmavoorbereiding.'; 
            } 
        } 
    } 
} 
else 
{

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je kunt een (extra) print-css opgeven waarin je alle andere elementen verbergt ;) Daar is het media attribuut op de style tag voor bedoeld ;)

[ Voor 47% gewijzigd door RobIII op 23-07-2008 10:07 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik was eigenlijk meer benieuwd naar een los commando. Een apart print.css geeft veel problemen op de site. Het formulier is ingebouwd in een iframe; het antwoordscherm komt in een target=" _blank". Het geheel is gepost in een soort van weblog.

Ik heb alles in 1 .php kunnen stouwen, en wil dat commando er ook liever bij in hebben. De vraag is meer van cosmetische aard, omdat er alleen een webadres boven staat en de knop en opmerking zichtbaar zijn. Voor de rest werkt het goed. Ik zou alleen dat adres en de knop kwijt willen op papier.

Ik heb even zitten stoeien met een alertbox, maar dan heb ik nog het adres erboven staan.

[ Voor 7% gewijzigd door Verwijderd op 23-07-2008 10:20 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Ik zie niet in wat voor problemen een aparte print.css zou veroorzaken. Het enige wat je hoeft te doen is een aparte css maken en 1 regeltje in de html aan je head toevoegen. Ik vermoed dat je nog niet hebt uitgezocht wat het mediatype inhoud. Druk eens op het linkje in Rob's post.

PS: Als je de header en footer regel bedoelt, dan kun je alvast ophouden met zoeken naar een oplossing. Dat is een clientside instelling waar je vanaf de server niet veel invloed op hebt.

[ Voor 25% gewijzigd door Janoz op 23-07-2008 10:26 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Een aparte print CSS is ook de enige manier. Je kunt het JavaScript commando print() geen extra parameters of iets meegeven.

In het dialoogvenster afdrukken kan een gebruiker selecteren of 'ie alles wil afdrukken of alleen de geselecteerde tekst. Je zou van te voren met JavaScript bepaalde delen van je site kunnen selecteren en vervolgens de gebruiker adviseren te kiezen voor "selectie afdrukken".

Maar de enige manier waarop jij het als ontwikkelaar kunt "forceren" is middels een extra stylesheet.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Of je roept je eigen PHP aan met bla.php?print=true ofzo en dan laat je PHP enkel uitpoepen wat je wil zien (de rest dus achterwege latend) met een window.print() in de HTML op de onload ;)

Maar dat is hoe dan ook een lompe workaround voor een 'probleem' dat er niet is als je gewoon een media type opgeeft.

[ Voor 24% gewijzigd door RobIII op 23-07-2008 10:54 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nou ja, dat heb ik dus nu al. Zoals ik al zei, gooit die php in een nieuw venster een stukje html neer, zoals ik het later op de site ga zetten. De knop weggooien is geen problleem, maar in dat stukje html zocht ik juist een (voormijn part) style-tag die verdere referenties op de geprinte pagina's weglaat, dus alleen dat stukje html uitprint. Daar ben ik al naar aan het zoeken geweest, maar die kan ik niet vinden.

$bericht ziet er zo uit
PHP:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
            $bericht = " 
<html> 
<head> 
  <title>Programmavoorbereiding</title> 
</head> 
<body onload='javascript: window.print()'>
<h2>".$_POST['speltak'].", ".$_POST['programma']."</h2><br/>
<div align='justify'><strong><em>Algemene gegevens:</em></strong></div><br/> 
<table style='width: 546px; height: 64px' height='64' cellspacing='0' cellpadding='0' width='546' border='1'><tbody>
<tr>
<td width='114'>
<p>Programmapunt:</p>
</td>
<td width='229'>
<p>".$_POST['programma']."</p>
</td>
<td width='89'>
<p>Telefoonnr.:</p>
</td>
<td width='232'>
<p>".$_POST['telefoonnummer']."</p>
</td>
</tr>
<tr>
<td width='114'>
<p>Datum:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
</td>
<td width='229'>
<p>".$_POST['datum']."</p>
</td>
<td width='89'>
<p>Emailadres:</p>
</td>
<td width='232'>
<p>".$_POST['email']."</p>
</td>
</tr>
<tr>
<td width='114'>
<p>Organisator:</p>
</td>
<td width='229'>
<p>".$_POST['organisator']."</p>
</td>
<td width='89'>
<p>Uitgaven:</p>
</td>
<td width='232'>
<p>".$_POST['uitgaven']."</p>
</td>
</tr>
</tbody></table><br/>
<div align='justify'><strong><em>Doel:</em></strong></div>
<div align='justify'>".$_POST['doel']."</div><br/>
<div align='justify'><strong><em>Beschrijving:</em></strong></div>
<div align='justify'>".$_POST['beschrijving']."</div><br/>
<div align='justify'><strong><em>Tijdsindeling:</em></strong></div>
<div align='justify'>".$_POST['tijdsindeling']."</div><br/>
<div align='justify'><strong><em>Groepssamenstelling:</em></strong></div>
<div align='justify'>".$_POST['groepssamenstelling']."</div><br/>
<div align='justify'><strong><em>Locatie:</em></strong></div>
<div align='justify'>".$_POST['locatie']."</div><br/>
<div align='justify'><strong><em>Soort spel:</em></strong></div>
<div align='justify'>".$_POST['soortprogramma']."</div><br/>
<div align='justify'><strong><em>Benodigdheden:</em></strong></div>
</body> 
</html> 
";

[ Voor 71% gewijzigd door Verwijderd op 23-07-2008 11:15 ]


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Niet zo eigenwijs willen zijn en gewoon een print stylesheet gebruiken. Eigenlijk komt het erop neer dat je alle elementen op display:none zet behalve het element dat je wilt printen.

edit:
of je maakt er een PDF van en biedt die ter download aan... dan heb je geen adres boven- en onderaan je document.

[ Voor 25% gewijzigd door Cartman! op 23-07-2008 12:30 ]


Acties:
  • 0 Henk 'm!

  • Tarabass
  • Registratie: Februari 2008
  • Laatst online: 09-04 17:02

Tarabass

Webmaster

Inderdaad media gebruiken in je stylesheet. En scheidt je html-opmaak van je php, dat is echt lelijk en onnodig :'(
Pagina: 1