Avatar billede nyst Nybegynder
30. august 2006 - 13:32 Der er 26 kommentarer og
1 løsning

printervenlig versionsfil udfra array - igen

Hi there,

har tidligere fået klarhed på dette ved:

http://www.eksperten.dk/spm/600985

men nu virker den ikke eller er ustabil.

Kan nogen hælpe - kommer her med lidt kode:

først javaen:

<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function printPage() {
if (window.print) {
agree = confirm('Klik OK og udprintning \naf denne side starter.');
if (agree) window.print();

}
//  End -->
</script>

<body OnLoad="printPage()">

denne giver ikke mere automatisk printbox ???

---------------------------

så php:

<?php
$array = unserialize( gzuncompress( base64_decode( $_GET['data'] ) ) );
$array = $array[0];
extract( $array, EXTR_SKIP | EXTR_PREFIX_ALL, 'data' );
echo "<table border=0 cellpadding=0 cellspacing=0 width=540>";
echo "<tr><td>";
echo "<h1>$data_overskrift</h1>";
echo "$data_tekst";
echo "<br><br></td></tr></table>";
?>

som aktiveres ved dette link:

<?php echo '<a href="elements/udskriv.php?data=' . base64_encode( gzcompress( serialize( $udskriv ) ) ) . '"><img src="images/icon_print.gif" alt="Print" width="30" height="30" hspace="0" vspace="0" border="0" align="right"></a>'; ?>

til sidst koden øverst på alle sider:

<?php
require("elements/db_funk.inc");
open_db();
$array = respons("SELECT * FROM `sider`WHERE indeks=0101");
for ($i = 0; $i < sizeof($array); $i++) {
  extract($array[$i]);
}
$udskriv = $array;
close_db();
?>

og fra db_funk.inc

<?php

### Diverse funktioner ###

## Åbn en forbindelse og vælg en database

function open_db() {
  $server = "localhost";
  $user = "xx";
  $pass = "yy";
  $db = "zz";

if (!mysql_connect("$server","$user","$pass")) {
  udskriv_fejl("Kunne ikke oprette en forbindelse til MySQL.");
}

if(!mysql_select_db("$db")) {
  udskriv_fejl("Kunne ikke vælge databasen: $db");
}
}

## Forespørgelser der returnerer data

function respons($query) {
  $result = mysql_query($query);

if(!$result) {
  udskriv_fejl("Kunne ikke udføre: $query");
}

while($row = mysql_fetch_array($result)) {
  $result_array[] = $row;
}

return $result_array;
}

## Forespørgelser der IKKE returnerer data

function question($query) {
  $result = mysql_query($query);

if(!$result) {
  udskriv_fejl("Kunne ikke udføre: $query");
}
}

## Luk forbindelsen til MySQL

function close_db() {
  if(!mysql_close()) {
    udskriv_fejl("Kunne ikke lukke forbindelsen til MySQL.");
  }
}

## Udskriv fejl

function udskriv_fejl($fejl) {
  echo "<br><br>$fejl";

if ($mysql_fejl = mysql_error()) {
  echo "<br>Fejlen er: $mysql_fejl";
}

exit;
}
?>

-------------------------------

håber dette er nok.

Kan få vist udskriv.php men uden boksen der giver mulighed for at klikke ok eller ej, samt den viser heller ikke selve indholdet, altså $data_tekst, men underligt nok $data_overskrift

Har også en anden version der er meget ustabil og nogle gange er ok andre ikke, men tager udgangspunkt i samme kode.

Findes der hælp til dette???
Avatar billede nyst Nybegynder
30. august 2006 - 13:33 #1
PS. den her ligger på b-one og den der virker nogle gange andre ikke ligger et andet sted!!!
Avatar billede coderdk Praktikant
31. august 2006 - 13:01 #2
I printPage() prøv at ændre:

if (window.print) {

til:

if (typeof(window.print) == "function") {

Prøv i udskriv.php, lige efter:

$array = $array[0];

at smide:

echo "<pre>"; var_dump( $array ); echo "</pre>";die;
Avatar billede coderdk Praktikant
31. august 2006 - 13:02 #3
For at se om der ikke er data_tekst - Ellers skal vi have fat i der hvor du bygger dit $udskriv array som du sender til udskriv.php
Avatar billede nyst Nybegynder
31. august 2006 - 13:45 #4
Hi coderdk - hyggeligt...

denne> if (typeof(window.print) == "function") {
hjalp ikke, ingen boks

denne> echo "<pre>"; var_dump( $array ); echo "</pre>";die;
udskriver> NULL
og stopper så siden så der ikke kommer retur-knap mm med

???
Avatar billede nyst Nybegynder
31. august 2006 - 13:48 #5
$data_tekst

kommer fra:

<?php
echo "<table cellspacing=10 cellpadding=0 border=0 /><tr /><td />";
echo "<h1 />$overskrift</h1 />";
echo "$tekst";
echo "</td /></tr /></table />";
?>

som igen kommer fra:

<?php
require("elements/db_funk.inc");
open_db();
$array = respons("SELECT * FROM `sider`WHERE indeks=0101");
for ($i = 0; $i < sizeof($array); $i++) {
  extract($array[$i]);
}
$udskriv = $array;
close_db();
?>

og db_funk.inc har du oppe i mit ?

:-)
Avatar billede nyst Nybegynder
31. august 2006 - 13:51 #6
hov glemte selve udskrivnings-linket:

<td align="right"><?php echo '<a href="elements/udskriv.php?data=' . base64_encode( gzcompress( serialize( $udskriv ) ) ) . '"><img src="images/icon_print.gif" alt="Print" width="30" height="30" hspace="0" vspace="0" border="0" align="right"></a>'; ?></td>
Avatar billede coderdk Praktikant
31. august 2006 - 14:23 #7
I javascriptfuntionen mangler du en slut }

Prøv i udskriv.php, lige efter:

$array = $array[0];

at smide:

echo "<pre>"; var_dump( $array ); echo "</pre>";die;

og paste hvad den skriver... :)
Avatar billede nyst Nybegynder
31. august 2006 - 14:37 #8
hvor mangler en slut }

<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function printPage() {
if (typeof(window.print) == "function") {
agree = confirm('Klik OK og udprintning \naf denne side starter.');
if (agree) window.print();
}
//  End -->
</script>

--------------------------------------------------------

echo "<pre>"; var_dump( $array ); echo "</pre>";die;

giver: NULL

:-)
Avatar billede coderdk Praktikant
31. august 2006 - 15:05 #9
I function:

<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function printPage() {
if (typeof(window.print) == "function") {
agree = confirm('Klik OK og udprintning \naf denne side starter.');
if (agree) window.print();
}
}
//  End -->
</script>

Det ses når man indenter:

<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function printPage()
{
  if (typeof(window.print) == "function")
  {
    agree = confirm('Klik OK og udprintning \naf denne side starter.');
    if (agree) window.print();
  }
}
//  End -->
</script>

Altid indent! ;-)

Prøv lige for debugings skyld at lave udskriv.php om til:

<?php
$decoded = base64_decode( $_GET['data'] );
$uncompressed = gzuncompress( $decoded )
$array = unserialize( $uncompressed );

echo "Data: $_GET[data]<hr>";
echo "Decoded: $decoded<hr>";
echo "Uncompressed: $uncompressed<hr><pre>";
var_dump( $array );
echo "</pre>";
$array = $array[0];
extract( $array, EXTR_SKIP | EXTR_PREFIX_ALL, 'data' );
echo "<table border=0 cellpadding=0 cellspacing=0 width=540>";
echo "<tr><td>";
echo "<h1>$data_overskrift</h1>";
echo "$data_tekst";
echo "<br><br></td></tr></table>";
?>
Avatar billede nyst Nybegynder
31. august 2006 - 15:23 #10
så blir' den helt thomas - blank side

adressen er stadig med alle de der du ved:

/elements/udskriv.php?data=eJztUj1PwzAQ3ZH4D9YNTKix81Gqa2qxMVRiYI0YnNpJTRMnckwlhPrfsVNaQRUJViQG++6e/d5Z9yyQ4btGuhS4OCaDR2AOPsYIWsIZ0Mh8niLQjLIAz/25kWo3wFdcYxwonrPujBM7R9p2NqpQhG6v7LCzunIwdUljEqTiO4TcibJRZKOaZujFRpt6BRTGuhdSnuqys1LZkPLrq9zZcZe8MM/kxpRDv8wjXx7Bp66pyMOLkoNT8oRHnnPmkb1odG1W4LoeeCEmRB7ftmJvSJLcpnlpOaMZI+tyG/JxTcnywk0oJQljJKUs+81T2gmBlMaUxIuY/tBcTXBzQbZWVStohW5ch9bP5r7+nM1MvQK/RPJIfGswhuARD1ZmCM7/hNHWf//+mn+HwwcydTMs

:-)

jeg tror ikke javaen kan virke før php'en er ok - det er ligemeget hvad jeg skriver så kommer boksen ikke - mon ikke den afventer php'en

:-)
Avatar billede coderdk Praktikant
31. august 2006 - 15:32 #11
Er al fejlmelding slået fra?

Prøv lige med:

<?php
error_reporting( E_ALL );
$decoded = base64_decode( $_GET['data'] );
$uncompressed = gzuncompress( $decoded );
$array = unserialize( $uncompressed );

echo "Data: $_GET[data]<hr>";
echo "Decoded: $decoded<hr>";
echo "Uncompressed: $uncompressed<hr><pre>";
var_dump( $array );
echo "</pre>";
$array = $array[0];
extract( $array, EXTR_SKIP | EXTR_PREFIX_ALL, 'data' );
echo "<table border=0 cellpadding=0 cellspacing=0 width=540>";
echo "<tr><td>";
echo "<h1>$data_overskrift</h1>";
echo "$data_tekst";
echo "<br><br></td></tr></table>";
?>
Avatar billede nyst Nybegynder
31. august 2006 - 15:47 #12
fejlmelding slået fra hvor???

nu skriver den da noget på siden men grims grams:

---------
Data: eJztUj1PwzAQ3ZH4D9YNTKix81Gqa2qxMVRiYI0YnNpJTRMnckwlhPrfsVNaQRUJViQG 6e/d5Z9yyQ4btGuhS4OCaDR2AOPsYIWsIZ0Mh8niLQjLIAz/25kWo3wFdcYxwonrPujBM7R9p2NqpQhG6v7LCzunIwdUljEqTiO4TcibJRZKOaZujFRpt6BRTGuhdSnuqys1LZkPLrq9zZcZe8MM/kxpRDv8wjXx7Bp66pyMOLkoNT8oRHnnPmkb1odG1W4LoeeCEmRB7ftmJvSJLcpnlpOaMZI tyG/JxTcnywk0oJQljJKUs 81T2gmBlMaUxIuY/tBcTXBzQbZWVStohW5ch9bP5r7 nM1MvQK/RPJIfGswhuARD1ZmCM7/hNHWf// mn HwwcydTMs
--------------------------------------------------------------------------------
Decoded: xœíR=OÃ0Ý‘øÖ L¨±óQªkj±1Tb`œÚIM'rL%„úß±SZA V$éïÝåŸrÉ´k¡Kƒ‚h4vãì`…¬! ‡Éâ-Ë ÿÛ™£|uÆ1‰ë>èÁ3´}§cj¥FêþË ;§#T–1*N#¸MÈ›%J9¦nŒTi· QLk¡u)î«+5-™.º½Í—{à þLiD;üÂ5ñìz꜌8¹(5?(Dyç>iÖ‡FÕn ¡ç‚dAíûf&ô‰-Êg–“š1’-ÈoÉÅ7'Ë 4 ”%Œ’”³ÍSÚ ”Ɣċ˜þÐ\MpsA¶VU+h…n\‡ÖÏæ¾ç3S/@¯Ñ<’Ì!¸CÕ™‚3¿á4uŸÿù§ ÉÔÌ
--------------------------------------------------------------------------------
Uncompressed:
--------------------------------------------------------------------------------

bool(false)

----------------

og javaen virker ikke

:-)
Avatar billede coderdk Praktikant
31. august 2006 - 21:35 #13
Javascriptet burde sgu virke nu, jeg har testet at den gør som den skal...
Det undrer mig at du ikke får fejl, har du sat den error_reporting linje ind?
gzuncompress burde give en "Warning: Data error"...
Jeg tror problemet er at du sender for meget data over i den $_GET, du er nødt til at bruge en form og POST'e til udskriv.php hvis du har så meget data...

Vi prøver at lave den om. udskriv.php:

<?php

    $array = unserialize( base64_decode( $_POST['data'] ) );
    $array = $array[0];
    extract( $array, EXTR_SKIP | EXTR_PREFIX_ALL, 'data' );
    echo "<table border=0 cellpadding=0 cellspacing=0 width=540>";
    echo "<tr><td>";
    echo "<h1>$data_overskrift</h1>";
    echo "$data_tekst";
    echo "<br><br></td></tr></table>";

?>

Denne:

<?php echo '<a href="elements/udskriv.php?data=' . base64_encode( gzcompress( serialize( $udskriv ) ) ) . '"><img src="images/icon_print.gif" alt="Print" width="30" height="30" hspace="0" vspace="0" border="0" align="right"></a>'; ?>

Laver vi om til:

<form method="post" action="elements/udskriv.php">
<input type="hidden" name="data" value="<?php echo base64_encode( serialize( $udskriv ) ); ?>">
<input type="image" name="print" src="images/icon_print.gif" width="30" height="30" hspace="0" vspace="0" border="0" align="right">
</form>

Se om det gør en forskel
Avatar billede nyst Nybegynder
01. september 2006 - 10:00 #14
hi coderdk,

nu funker php'en meeeeeennnnnnnn

ej javaen

<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function printPage()
{
  if (typeof(window.print) == "function")
  {
    agree = confirm('Klik OK og udprintning \naf denne side starter.');
    if (agree) window.print();
  }
}
//  End -->
</script>

</head>

<body OnLoad="printPage()">

:-)
Avatar billede nyst Nybegynder
01. september 2006 - 10:15 #15
mystisk, denne:

<a href="#" onclick="history.go(-1);">&nbsp; <img src="../images/icon_back.gif" alt="Retur forrige side" width="30" height="30" hspace="0" vspace="0" border="0" id="noprint"></a>

har også virket før (id="noprint") men nu printer den den med !!!???***+++
Avatar billede nyst Nybegynder
01. september 2006 - 10:18 #16
det kan da ikke være fordi det er PHP Version 5.1.5 ???
Avatar billede coderdk Praktikant
01. september 2006 - 12:46 #17
Underligt - Hvorfor vil du i det hele taget have en confirm-box på? Den kommer jo med en print-dialog som man skal trykke OK til?

Det har nok intet med php at gøre - Javascript er ren clientside...

Er du sikker på at du har #noprint til display: none i din print css? Er du sikker på at det ikke skal være class="noprint" - husk ID er til ét element, og class er til flere...
Avatar billede nyst Nybegynder
01. september 2006 - 13:02 #18
hej,

jo det er rigtigt nok, men hvis der ikke skal komme en confirm, så må den gerne begynde med at printe automatisk og derved kommer jo så printerens boks frem, men hvilken kode gør det??? og mon det virker...

nej har intet i print.css - men det har virket før på den måde...
hvis det skal i css - under hvad så body? eller
og skriver jeg bare som du har gjort...

:-)
Avatar billede nyst Nybegynder
01. september 2006 - 13:04 #19
sorry sorry har brugt forkert css vent lidt...
Avatar billede nyst Nybegynder
01. september 2006 - 13:13 #20
så nu virker id=noprint for billeder - jeg havde #noprint { display: none} i den korrekte css

meeen den f.... java !!!
Avatar billede coderdk Praktikant
01. september 2006 - 13:14 #21
Det kan man ikke, du kan ikke få den til at printe automatisk ud, det er brugeren der skal sættes deres browser op til det...
Avatar billede nyst Nybegynder
01. september 2006 - 13:18 #22
class virker ikke men id gør !!!
Avatar billede nyst Nybegynder
01. september 2006 - 13:19 #23
det er da underligt det virker det ene sted og ikek det andet

dog er det denne kode der virker det nadet sted

<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function printPage() {
if (window.print) {
agree = confirm('Klik OK og udprintning \naf denne side starter.');
if (agree) window.print();
  }
}
//  End -->
</script>

hvad tror du det kan være?
Avatar billede nyst Nybegynder
01. september 2006 - 13:21 #24
nu virker den skisme - altså den sidste her ikke den anden vi lavede

!!!***???
Avatar billede coderdk Praktikant
01. september 2006 - 13:22 #25
heheh spøjst - den kode har hele tiden virket ved mig... :)
Avatar billede nyst Nybegynder
01. september 2006 - 13:23 #26
jeg takker for din fantastiske hjælp som sædvanlig

smider du et svar

og så god weekend til dig

drager selv til Stones i Horsens *SS*
Avatar billede coderdk Praktikant
01. september 2006 - 16:17 #27
Ah lucky bastard :) God fornøjelse :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester