17. marts 2005 - 10:45
Der er
58 kommentarer og 1 løsning
printervenlig versionsfil udfra array
Hej, jeg henter fra database et $array, som så placeres i designet. På siden vil jeg gerne have et link 'Udskriv' som så sender $array til udskriv.php som er en printervenlig version af siden. Det jeg søger er at jeg kun behøver en fil nemlig udskriv.php, som så udskriver det som sendes via linket fra 'main-siden'. F.eks. har jeg dette <?php require("db_funk.php"); open_db(); $array = respons("SELECT afdeling, overskrift, indhold, kopi, dag FROM `sider`WHERE indeks=040000"); for ($i = 0; $i < sizeof($array); $i++) { extract($array[$i]); } close_db(); ?> hvor så $afdeling osv kaldes nede i html'en og her skal så være linket 'Udskriv' som tager de samme værdier med til udskriv.php. Kan nogen overskue dette i kun 1 fil ??? :-)
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
17. marts 2005 - 10:50
#1
Nu er jeg lidt off topic, men hvorfor ikke bare bruge den aktuelle fil? Altså lave et printer-specifikt style sheet som skjuler alle de elementer der ikke skal printes? :)
17. marts 2005 - 10:51
#2
glemte at udskriv.php skal så kunne udskrive alle sider og ikke kun en side, men f.eks gælde for 10 eller 100 forskellige sider.
17. marts 2005 - 10:53
#3
hej coderdk - hyggeligt*S* ja, det lyder da meget godt men hvad er lige det*G* :-)
17. marts 2005 - 10:57
#4
:) Ligesom du har: <link rel="stylesheet" type="text/css" href="ditstylesheet.css"> kan du lave: <link rel="stylesheet" type="text/css" media="print" href="tilprint.css"> Så bør man nok lave den først om til: <link rel="stylesheet" type="text/css" media="screen" href="ditstylesheet.css"> Hvis du f.eks. har en menu der ikke skal printes ud, som ligger i en DIV med ID "menu", så definerer du bare i tilprint.css at #menu skal have display: none f.eks. - Så fjerner du bare alt hvad du ikke synes skal printes ud - Det kræver at man har lidt struktur på sine sider dog ;)
17. marts 2005 - 10:58
#5
pt laver jeg en xxx2.php-fil for hver side og det er nemt nok men lidt usmart synes jeg, så hvis man kunne klare det med et link på hver side og så bare en printfil ville det jo være smart, men det er måske det du mener med printer-specifikt style sheet
17. marts 2005 - 11:02
#6
ja, det kræver skisme en del alle billeder skal jo også have en DIV så!!! og hvad med baggrundsfarver i TD'er osv
17. marts 2005 - 11:54
#8
hej coderdk, jeg kan godt se ideen i det og det er ret smart og ikke så meget der skal laves om idet man åbenbart kan give en 'tr' en 'id' og det letter jo. Men ved du hvordan man i css får noget tekst indført som bliver printet med ud, jeg tænker på f.eks navn foroven og adresse forneden, når nu disse ligger som billeder?? Og hvordan for jeg linket 'udskriv' til at printe i php :-)
17. marts 2005 - 12:07
#9
Ja, ID'er og classes er rigtig gode! :) Du kan lave et print link sådan: <a href="java script:window.print()">Print side</a>
17. marts 2005 - 13:34
#10
næsten alt funker dog har jeg problemer med højre side her bider den bogstaver af har du haft samme problem???
17. marts 2005 - 13:42
#11
underligt der er stor forskel i explorer og netscape exploreren bider bogstaver af netscape ikke men skriver her med blåt !!!!!!!!!!!!
17. marts 2005 - 14:37
#12
har prøvet at rette denne #wrapper, #content { width: auto; margin: 0 7%; fra margin: 0 5%; men ved du om det er det korrekte eller bare et tilfælde det virker bedre???
17. marts 2005 - 18:05
#13
Ja, jeg ved at de opfører sig lidt forskelligt - Men du skal nok prøve at lege lidt med de margins... Fungerer det ellers som du vil have det? Det skal også lige siges at jeg ikke har lavet særligt meget med print style sheets... Jeg har bare læst lidt om det, og synes at det er klart den mest optimale måde :)
18. marts 2005 - 09:29
#14
ja det kræver lidt pluslerier, da der er stor forskel i de forskellige browsere - som sædvanligt desværre... Kunne man ellers gøre som jeg efterlyste sende de samme $værdier til en og samme fil, hvor så linket laves som en template lige til at include???
18. marts 2005 - 09:37
#15
Jooh, men det ville da kræve at dit indhold var rimeligt ens struktureret? Men jo! Du er så nødt til at finde en måde at overføre alle data fra filen til udskriv.php...
18. marts 2005 - 09:40
#16
Fedt nok, det var kun den øverste del af det jeg skrev der kom med :P
18. marts 2005 - 09:42
#17
Nå, men man kunne jo lave denne om: for ($i = 0; $i < sizeof($array); $i++) { extract($array[$i]); } til: $afdelinger = array(); for ($i = 0; $i < sizeof($array); $i++) { $afdelinger[] = $array; extract($array[$i]); } Så har du al data der skal med over - Men hvis der er meget kan du ikke overføre dem i URL'en til en $_GET - så der kunne du måske bruge en sessionsvariabel - Du kunne også formattere data i den aktuelle fil, og gemme det der skal skrives ud (samme princip som det andet) i en sessionsvariabel...
18. marts 2005 - 10:04
#18
ja for jeg har denne i bodyen <?php echo "<table border=0 cellpadding=0 cellspacing=0>"; echo "<tr><td>"; echo "<tr><td>"; echo "<h3>$afdeling</h3>"; echo "<h1>$overskrift</h1>"; echo "$indhold<br><br>"; echo "$kopi $dag"; echo "<br><br></td></tr></table>"; ?> så det er jo $afdeling $overskrift $indhold $kopi $dag som kun indeholder en værdi hver og er ens for alle sider, dvs der er ikke f.eks. 2 eller 3 $afdeling på hver side - kun den ene og de er jo gemt øverst i: $array = respons("SELECT afdeling, overskrift, indhold, kopi, dag FROM `sider`WHERE indeks=040000"); for ($i = 0; $i < sizeof($array); $i++) { extract($array[$i]); } ???? :-) så hvis man kunne 'overføre' disse $'s vis et telstlink til udskriv.php ville det jo være smart.
18. marts 2005 - 10:09
#19
<a href="udskriv.php?data=<?= serialize( $array ) ?>">Udskriv</a> Og i udskriv.php: $array = unserialize( $_GET['data'] ); extract( $array ); Bemærk at extract'en er farlig! Den ville jeg nok lave om til: extract( $array, EXTR_SKIP | EXTR_PREFIX_ALL, 'data_' ); Så kommer $afdeling til at hedder $data_afdeling...
18. marts 2005 - 10:10
#20
For at gøre det mindre synligt ville jeg måske endda gøre sådan: <a href="udskriv.php?data=<?= base64_encode( serialize( $array ) ) ?>">Udskriv</a> Og i udskriv.php: $array = unserialize( base64_decode( $_GET['data'] ) ); extract( $array, EXTR_SKIP | EXTR_PREFIX_ALL, 'data_' );
18. marts 2005 - 10:28
#21
virker ikke helt men skal der så ikke rettes i $array = respons("SELECT afdeling, overskrift, indhold, kopi, dag FROM `sider`WHERE indeks=040000"); for ($i = 0; $i < sizeof($array); $i++) { extract($array[$i]); } når du har ændret extract'en det andet sted???
18. marts 2005 - 10:33
#22
Nej, men jeg antager at du ikke efter det stykke kode du har vist, ændrer $array - det er jo deri dine data ligger - Dem serializer vi så længere nede på siden med linjen: <a href="udskriv.php?data=<?= base64_encode( serialize( $array ) ) ?>">Udskriv</a> Eller i PHP: echo '<a href="udskriv.php?data=' . base64_encode( serialize( $array ) ) . '">Udskriv</a>'; Den anden kode skal være i udskriv.php
18. marts 2005 - 10:42
#23
jeg er med på hovedfil men ikke udskriv'en skal det ikke være noget ligende dette <?php $array = unserialize( base64_decode( $_GET['data'] ) ); extract( $array, EXTR_SKIP | EXTR_PREFIX_ALL, 'data_' ); echo "<table border=0 cellpadding=0 cellspacing=0>"; echo "<tr><td>"; echo "<tr><td>"; echo "<h3>$afdeling</h3>"; echo "<h1>$overskrift</h1>"; echo "$indhold<br><br>"; echo "$kopi $dag"; echo "<br><br></td></tr></table>"; ?>
18. marts 2005 - 10:44
#24
kan det være pga PHP Version 4.1.2
18. marts 2005 - 10:45
#25
Med den extract jeg har skrevet skal du have prefix på... <?php $array = unserialize( base64_decode( $_GET['data'] ) ); extract( $array, EXTR_SKIP | EXTR_PREFIX_ALL, 'data_' ); echo "<table border=0 cellpadding=0 cellspacing=0>"; echo "<tr><td>"; echo "<tr><td>"; echo "<h3>$data_afdeling</h3>"; echo "<h1>$data_overskrift</h1>"; echo "$data_indhold<br><br>"; echo "$data_kopi $data_dag"; echo "<br><br></td></tr></table>"; ?>
18. marts 2005 - 10:53
#26
når jeg klikker på <?php echo '<a href="udskriv.php?data=' . base64_encode( serialize( $array ) ) . '">Udskriv</a>'; ?> sker der intet andet end jeg kan se linket med en masse sjove bogstaver nederst i browseren. Kalder jeg udskriv.php direkte får jeg Warning: extract() expects first argument to be an array ??? :-)
18. marts 2005 - 11:12
#27
Weird, prøv lige i udskriv.php efter $array = unserialize( base64_decode( $_GET['data'] ) ); at lave: var_dump( $array );
18. marts 2005 - 11:21
#28
virker ikke kommer slet ikke til udskriv.php heller ikke med <a href="udskriv.php?data=<?= serialize( $array ) ?>">Udskriv</a> den skriver alle data igen bare ved siden af designet - kommer ikke over på udskrive'en repeterer lige: har øverst i hovedfil <?php require("db_funk.php"); open_db(); $array = respons("SELECT afdeling, overskrift, indhold, kopi, dag FROM `sider`WHERE indeks=040000"); for ($i = 0; $i < sizeof($array); $i++) { extract($array[$i]); } close_db(); ?> i body <?php echo "<table border=0 cellpadding=0 cellspacing=0>"; echo "<tr><td>"; echo "<tr><td>"; echo "<h3>$afdeling</h3>"; echo "<h1>$overskrift</h1>"; echo "$indhold<br><br>"; echo "$kopi $dag"; echo "<br><br></td></tr></table>"; ?> så linket <?php echo '<a href="udskriv.php?data=' . base64_encode( serialize( $array ) ) . '">Udskriv</a>'; ?> i udskriv.php's body $array = unserialize( base64_decode( $_GET['data'] ) ); var_dump( $array ); extract( $array, EXTR_SKIP | EXTR_PREFIX_ALL, 'data_' ); echo "<table border=0 cellpadding=0 cellspacing=0>"; echo "<tr><td>"; echo "<tr><td>"; echo "<h3>$data_afdeling</h3>"; echo "<h1>$data_overskrift</h1>"; echo "$data_indhold<br><br>"; echo "$data_kopi $data_dag"; echo "<br><br></td></tr></table>"; ?> problem link giver ikke udskriv-siden og kalder jeg den får jeg nu bool(false) Warning: extract() expects first argument to be an array
18. marts 2005 - 11:26
#29
skal der ikke i udskriv være nogle {} ved extract før echo?
18. marts 2005 - 11:37
#30
Mnææh jeg forstår det ikke lige... Forøvrigt skal: extract( $array, EXTR_SKIP | EXTR_PREFIX_ALL, 'data_' ); Ændres til: extract( $array, EXTR_SKIP | EXTR_PREFIX_ALL, 'data' ); Den smider selv et _ på...
18. marts 2005 - 11:42
#31
ændret men hjælper ikke men kan du se hvorfor linket heller ikke virker så man i det mindste får åbnet udskriv.php'en???
18. marts 2005 - 11:43
#32
Her er en lille test app, den bruger gzcompress og gzuncompress, så hvis du ikke har zlib installeret, så fjern kaldende til dem... $test = array( "hej" => "med", "dig" => "du", "heheh" => "fedt" ); if ( !empty( $_GET['data'] ) ) { echo "<pre><b>Før</b>\n\n"; var_dump( $_GET['data'] ); echo "\n<b>Unserialized</b>:\n\n"; $hej = unserialize( gzuncompress( base64_decode( $_GET['data'] ) ) ); var_dump( $hej ); extract( $hej, EXTR_SKIP | EXTR_PREFIX_ALL, "data" ); echo "\$data_hej = $data_hej\n"; echo "</pre>"; } echo "<a href=\"{$_SERVER['PHP_SELF']}?data=" . base64_encode( gzcompress( serialize( $test ) ) ) . "\">Test</a>"; Den illustrerer hvad jeg mener!
18. marts 2005 - 11:48
#33
smider jeg den i en fil og klikker 'Test' får jeg Før string(72) "eJxLtDK2qi4GEkoZqVlK1mBWbmoKlJWSmQ5iGQFZpSCGKUgZEILYJlZKaakpJUrWtQCfQhO4" Unserialized: array(3) { ["hej"]=> string(3) "med" ["dig"]=> string(2) "du" ["heheh"]=> string(4) "fedt" } $data_hej = med Test :-)
18. marts 2005 - 11:55
#34
Jeg kan ikke rigtig regne ud hvorfor det ikke virker i den anden fil - Du siger at der kommer noget i URL'en til udskriv.php?
18. marts 2005 - 12:00
#35
Prøv lige at smide: var_dump( $array ); LIGE før udskriv.php linket bliver skrevet ud
18. marts 2005 - 12:01
#36
ja kilkker jeg sker der intet holder jeg muse over kommer masser af bogstvaer i statusbar men kan du se der er 3 ) i ( gzcompress( serialize( $test ) ) ) og " i stedet for ' !!!!!
18. marts 2005 - 12:06
#37
ikke forstået?
18. marts 2005 - 12:11
#38
nå ja det er fordi der er gzcompress det giver jo ekstra ) og så anvendes " i stedet for ' ellers ser det ens ud !!!
18. marts 2005 - 12:13
#39
smider jeg 'Test' ind på min egen side virker den fint nok !!!
18. marts 2005 - 12:18
#40
Prøv lige i hovedfilen: $array = respons("SELECT afdeling, overskrift, indhold, kopi, dag FROM `sider`WHERE indeks=040000"); for ($i = 0; $i < sizeof($array); $i++) { extract($array[$i]); } Lige efter den, tilføj: $tiludskrift = $array; Og ændr: echo '<a href="udskriv.php?data=' . base64_encode( serialize( $array ) ) . '">Udskriv</a>'; til: var_dump( $tiludskrift ); echo '<a href="udskriv.php?data=' . base64_encode( gzcompress( serialize( $tiludskrift ) ) ) . '">Udskriv</a>'; Og udskriv.php: $array = unserialize( gzuncompress( base64_decode( $_GET['data'] ) ) ); var_dump( $array ); extract( $array, EXTR_SKIP | EXTR_PREFIX_ALL, 'data_' ); echo "<table border=0 cellpadding=0 cellspacing=0>"; echo "<tr><td>"; echo "<tr><td>"; echo "<h3>$data_afdeling</h3>"; echo "<h1>$data_overskrift</h1>"; echo "$data_indhold<br><br>"; echo "$data_kopi $data_dag"; echo "<br><br></td></tr></table>";
18. marts 2005 - 12:30
#42
nu sker der noget hvis jeg fjerner var_dump( $tiludskrift ); i var_dump( $tiludskrift ); echo '<a href="udskriv.php?data=' . base64_encode( gzcompress( serialize( $tiludskrift ) ) ) . '">Udskriv</a>'; så virker linket men i udskriv går det galt den viser tekst 2 gange og noget kode grimsgrams feks starter den med array(1) { [0]=> array(10) { [0]=> string(20) "Anæstesi - bedøvelse" ["afdeling"]=> string(20) "Anæstesi - bedøvelse" [1]=> string(20) "Afdelingen varetager" ["overskrift"]=> string(20) "Afdelingen varetager" [2]=> string(601) " men vi er da videre...'s*
18. marts 2005 - 12:32
#43
Nej det er med vilje - Det er nemlig det som dit array indeholder - Du bruger mysql_fetch_array i stedet for mysql_fetch_assoc ;) Så det lader til at virke
18. marts 2005 - 12:36
#44
med vilje???? *G* jo men det skal jo ikke med og heller ikke tekst 2 gange!!!
18. marts 2005 - 12:38
#45
Så må du jo ændre din respons() til at bruge mysql_fetch_assoc() i stedet for mysql_fetch_array()...
18. marts 2005 - 12:46
#46
det hjalp ikke helt der er stadig nogle array(1) { [0]=> array(5) { ["afdeling"]=> i top og ["kopi"]=> string(42) før kopitekst og ["dag"]=> string(9) før datoen !!!
18. marts 2005 - 12:50
#47
det er kun $data_indhold den udskriver rigtigt???
18. marts 2005 - 12:52
#48
What?! Ok lav lige udskriv.php om til dette og paste hvad var_dump kommer med: $array = unserialize( gzuncompress( base64_decode( $_GET['data'] ) ) ); echo "<pre>"; var_dump( $array ); echo "</pre>"; extract( $array, EXTR_SKIP | EXTR_PREFIX_ALL, 'data' ); echo "<table border=0 cellpadding=0 cellspacing=0>"; echo "<tr><td>"; echo "<tr><td>"; echo "<h3>$data_afdeling</h3>"; echo "<h1>$data_overskrift</h1>"; echo "$data_indhold<br><br>"; echo "$data_kopi $data_dag"; echo "<br><br></td></tr></table>";
18. marts 2005 - 12:57
#49
den starter med array(1) { [0]=> array(5) { ["afdeling"]=> string(20) "bla bla" ["overskrift"]=> string(20) "blabla bal" ["indhold"]=> string(601) " så viser den korrekt 'indhold' men så igen ["kopi"]=> string(42) "sidst revideret" ["dag"]=> string(9) "12.5.2003"
18. marts 2005 - 12:59
#50
Hvad er der forkert i det?
18. marts 2005 - 13:00
#51
Oooh, det er et array i et array?! Der er mere end 1 i det "yderste" array? Og prøv lige: $array = unserialize( gzuncompress( base64_decode( $_GET['data'] ) ) ); $array = $array[0]; echo "<pre>"; var_dump( $array ); echo "</pre>"; extract( $array, EXTR_SKIP | EXTR_PREFIX_ALL, 'data' ); echo "<table border=0 cellpadding=0 cellspacing=0>"; echo "<tr><td>"; echo "<tr><td>"; echo "<h3>$data_afdeling</h3>"; echo "<h1>$data_overskrift</h1>"; echo "$data_indhold<br><br>"; echo "$data_kopi $data_dag"; echo "<br><br></td></tr></table>";
18. marts 2005 - 13:05
#52
du er bare fed *S* fjerner jeg echo "<pre>"; var_dump( $array ); echo "</pre>"; er den helt ok - godt og ihærdigt gået en lille ting kan jeg nemt lave et returlink på udskriv tilbage til den den nu kom fra uden java goto
18. marts 2005 - 13:07
#53
virker nu også med while($row = mysql_fetch_array($result)) { $result_array[] = $row; } *SS*
18. marts 2005 - 13:07
#54
Du kan sende en URL med ;) eller bruge java script:history.back() eller prøve at bruge $_SERVER['HTTP_REFERER'] - den vil dog ikke virke for alle.
18. marts 2005 - 13:09
#55
Hvis du kun tilgår databasefelter med navn, altså $row['feltnavn'] så brug ALTID mysql_fetch_assoc i stedet for mysql_fetch_array - fetch_array giver dig et dobbelt array, så du både kan tilgå med tal og med navn...
18. marts 2005 - 13:09
#56
Og et svar!
18. marts 2005 - 13:09
#57
Bah, et svar jo! ;)
18. marts 2005 - 13:11
#58
den er sgu' ellers fra webcafe men jeg retter til assoc*S* Takker igen og håber du må få en god weekend. :-)
18. marts 2005 - 13:13
#59
Jo, tak i lige måde %)
Vi tilbyder markedets bedste kurser inden for webudvikling