11. oktober 2004 - 12:29Der er
8 kommentarer og 1 løsning
hjælp til fpdf
Jeg er stødt på et problem med fpdf, som jeg ikke kan genneskue hvodan jeg skal løse.
Jeg bruger nedenstående kode, til at hente alle de brugere de skal have udskrevet et velkomstbrev, den del virker fint nok. Efter at medlemsbrevet er udskrevet, så skal medlemstabellen opdateres, der indsætte en dato i medlem_info_udsendt. Og det er her problemet opstår.
Når jeg bruger min sql update sætning, så bliver alle de korrekte poster opdateret men der bliver ikke udskrevet noget fra pfd!
Min lommeteori er at posterne bliver opdateret inden de bliver hentet, og så er det jo rigtigt nok at der ikke er noget at udskrive. eller er det placeringen af update sætingen der er problemet? - fjerner jeg denne blive alt der skal laves til pdf lavet, men jeg få så ikke opdateret min tabel
$brevtekst = mysql_query("select * from tekster where id='3'") or die(mysql_error()); $rowtekst = mysql_fetch_array($brevtekst);
$pdf=new FPDF('P','mm','A4'); $pdf->SetMargins(18,35,20); $resultat = mysql_query("select id as tid, medlem_fornavn, medlem_efternavn, medlem_adresse, medlem_postnr, medlem_by, medlem_indmeldt, medlem_nummer from medlemmer2 where medlem_info_sendt='' and medlem_status='aktiv'") or die(mysql_error()); while ($raekke = mysql_fetch_array($resultat)) { extract($raekke);
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Slettet bruger
11. oktober 2004 - 19:43#1
Jeg tror ikke helt på din lommeteori, og mener at det er et ganske passende sted, du laver din update, men da du siger, at du kan få outputtet korrekt ved at fjerne den, så prøv med denne udgave i stedet:
$brevtekst = mysql_query("select * from tekster where id='3'") or die(mysql_error()); $rowtekst = mysql_fetch_array($brevtekst);
$pdf=new FPDF('P','mm','A4'); $pdf->SetMargins(18,35,20); $resultat = mysql_query("select id as tid, medlem_fornavn, medlem_efternavn, medlem_adresse, medlem_postnr, medlem_by, medlem_indmeldt, medlem_nummer from medlemmer2 where medlem_info_sendt='' and medlem_status='aktiv'") or die(mysql_error());
while ($raekker[] = mysql_fetch_assoc($resultat));
mysql_query("UPDATE medlemmer2 set medlem_info_sendt='$dagsdato' where id='$tid'") or die(mysql_error());
} $pdf->Output(); ?>
Der er kun 2 ændringer:
1) Først gennemkøres en løkke, der henter alle de relevanter medlemmer fra databasen - derefter gennemkøres en ny løkke på alle de hentede medlemmer. På den måde kan du være HELT sikker på at hentningen fra databasen er helt færdig, når du opdaterer. (NB! Jeg tror ikke, det vil gøre nogen forskel - men så er din teori da afprøvet.) Jeg bruger forresten mysql_fetch_assoc i stedet for _array, der er jo ingen grund til at PHP skal lave numerisk indeks, når vi alligevel kun bruger tekst-indeks i arrayet.
2) Har rettet "Mysql_query (" til "mysql_query(" - dvs. med lille og uden mellemrum.
$resultat = mysql_query("select id as tid, medlem_fornavn from medlemmer2 WHERE medlem_info_sendt=''"); while ($raekker[] = mysql_fetch_assoc($resultat));
print_r($raekker); echo "\n\nStart på udtræk\n\n";
foreach($raekker as $raekke) { print_r($raekke); extract($raekke);
$pdf->AddPage(); $pdf->SetFont('Arial','B',16); $pdf->Cell(40,10,$medlem_fornavn); mysql_query("UPDATE medlemmer2 set medlem_info_sendt='done' where id='$tid'") or die(mysql_error());
}
//$pdf->Output();
Det giver et output der ser sådan ud (Det er ikke fejl at alle medlemmerne hedder søren)
Den fejl, var min skyld så. Når der ikke er flere rækker, vil mysql_fetch-funktionerne returnerne værdien false, og den bliver også puttet i arrayet. Når det array bagefter bliver gennemløbet, vil der derfor komme den Warning efter at alle de almindelige rækker er klaret.
Løsning: Ret
while ($raekker[] = mysql_fetch_assoc($resultat));
til
while ($row = mysql_fetch_assoc($resultat)){ $raekker[]=$row; }
Og så skulle du kunne fjerne print_r og echo-linierne, og så burde det virke.
Det virker sådan set fint nok, bortset fra at det ikke virker :-)
Det ovenstående virker fint i ren php/html, ligesom mit udgangspunkt. Problemet er når det bliver koblet sammen med fpdf, så går det galt.
De rigtig tabeller bliver opdateret, men der bliver ikke udskrevet nogen pdf-fil. Jeg har forsøgt at skrive til udviklere af fpdf, med det har ikke hjulpet mig meget videre
Selvom jeg ikke fatter hvad forskellen er, men det er jo også irelevant, bare det virker.
Smid et svar og du skal få point
Synes godt om
Slettet bruger
18. oktober 2004 - 16:23#9
Det var jo godt. Jeg ved nu heller ikke med sikkerhed, hvad der gik galt. (Muligvis skulle du have sat en Content-Type...)
Synes godt om
Ny brugerNybegynder
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.