Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MPDF]mPDF error: Some data has already been output to browser, can't send PDF file
BuncolPL
post 3.07.2011, 12:25:44
Post #1





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 19.12.2008
Skąd: Poland

Ostrzeżenie: (0%)
-----


Witam,

Szukałem na forum, ale czegoś podobnego nie udało mi się znaleźć. Próbuję wygenerować plik .pdf . Wszystko ładnie pięknie dopóki nie muszę wrzucić danych z bazy danych. Przy wyciąganiu pojedynczych rekordów nie ma problemu, ale problem pojawia mi się przy wyciąganiu danych za pomocą while.

Jeśli wstawiam pojedynczą zmienną i robię to $html = 'kod w html'.$zmienna.'kod ciąg dalszy'; to problem się nie pojawia, ale jeśli biore

$html = 'kod w html'.
$result = mysql_query(...);
while ($row = mysql_fetch_assoc($result))
{
echo $row['costam'];
}
'kod ciąg dalszy';

Wtedy mam błąd: mPDF error: Some data has already been output to browser, can't send PDF file

Rozumie, że to jest przez echo, które wyświetla dane. Ale jak to obejść, aby było ok ?


Kod pliku wygląda mniej więcej tak:

  1. $html = 'kod w html';
  2.  
  3. include("pdf/mpdf.php");
  4.  
  5. $mpdf=new mPDF('A4');
  6.  
  7. $mpdf->WriteHTML($html);
  8.  
  9. $mpdf->Output();


--------------------
:)
Go to the top of the page
+Quote Post
nospor
post 3.07.2011, 12:28:25
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




echo $row['costam'];
PLujesz do przeglądarki jakimś danymi. Po co? Przecież chcesz generować pdf więc nie możesz do przeglądarki pluć czym popadnie - to jest Twój błąd.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
BuncolPL
post 3.07.2011, 12:31:19
Post #3





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 19.12.2008
Skąd: Poland

Ostrzeżenie: (0%)
-----


No wiem smile.gif ale jak sobie z tym poradzić ?


--------------------
:)
Go to the top of the page
+Quote Post
nospor
post 3.07.2011, 12:35:14
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




zamiat
echo $row['costam'];
daj:
//echo $row['costam'];

tongue.gif

No przepraszam, a skad ja mam wiedzieć co ty chcesz mieć z tego, że walisz coś do przeglądarki? Wyjaśniam ci, jak robisz PDF to nie wal nic do przeglądarki. ALbo jedno albo drugie.

A jeśli te dane ci są potrzebne do generowania PDF no to chyba są potrzebne jako zmienne a nie jako dane plute do przeglądarki.

ps: moja szklana kula mówi mi, że ty chyba chcesz mieć tak:
$html.=$row['costam'];

Skoro więc chcesz dane mieć w zmiennej to skąd pomysł by robić echo?


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
BuncolPL
post 3.07.2011, 12:36:49
Post #5





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 19.12.2008
Skąd: Poland

Ostrzeżenie: (0%)
-----


No to jeszcze inaczej smile.gif

Jak w $html = 'kod w html'; wstawić dynamiczne dane smile.gif


--------------------
:)
Go to the top of the page
+Quote Post
nospor
post 3.07.2011, 12:42:08
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Napisałem ci w moim poprzednim poście. zaraz po PS

ps2: skoro chcesz do zmiennej wkładać dane to pytam się ponownie: skąd pomysł by użyc do tego echo?


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
BuncolPL
post 3.07.2011, 12:47:47
Post #7





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 19.12.2008
Skąd: Poland

Ostrzeżenie: (0%)
-----


Cytat
ps: moja szklana kula mówi mi, że ty chyba chcesz mieć tak:
$html.=$row['costam'];


No właśnie nie smile.gif

Chce mieć tak:

$html = 'kod html'.dane z while.'kod html';

Gdy w while robie $zmienna = $row['costam']; to kod mam taki:
$html = 'kod html'.$zmienna.'kod html';

Tylko, że wtedy pojawia mi się ostatni rekord z bazy a nie wszystkie :/

P.S Jak nie chce używać tego echo.


--------------------
:)
Go to the top of the page
+Quote Post
nospor
post 3.07.2011, 12:50:43
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ja ci napisałem:
$html.=$row['costam'];
a ty wstawiłeś:
$html = 'kod html'.$zmienna.'kod html';

No już ctrl+c oraz ctrl+v nie umiesz wcisnąć?

zamiast
echo $row['costam'];
ma być:
$html.=$row['costam'];


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
BuncolPL
post 3.07.2011, 13:06:22
Post #9





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 19.12.2008
Skąd: Poland

Ostrzeżenie: (0%)
-----


Cytat
Ja ci napisałem:
$html.=$row['costam'];
a ty wstawiłeś:
$html = 'kod html'.$zmienna.'kod html';


Zrobiłem tak ponieważ trochę przerobiłem strukturę jak mówiłeś o tym, że muszą być tam zmienne smile.gif

Tylko, że mój kod też jest nie do końca ok, bo daje mi tylko jeden rekord a nie wszystkie :/

  1. $result = mysql_query(...);
  2. while ($row = mysql_fetch_assoc($result))
  3. {
  4. $zmienna = $row['costam'];
  5. }
  6.  
  7. $html = 'kod html'.$zmienna.'kod html';
  8.  
  9. include("pdf/mpdf.php");
  10. $mpdf=new mPDF('A4');
  11. $mpdf->WriteHTML($html);
  12. $mpdf->Output();


--------------------
:)
Go to the top of the page
+Quote Post
nospor
post 3.07.2011, 13:17:55
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




proszę, zwracaj uwagę co ci piszą....

ja użyłem .=
ty używasz =

Jak nie wiesz co oznacza .= to albo zajrzyj do manuala albo się dopytaj anie to olewasz.

Robiąc
$zmienna = $row['costam'];
nadpisujesz za każdym razem $zmienna więc nic dziwnego, że zawiera tylko ostatni rekord - logiczne.
Ty masz dopisywać a nie nadpisywać czyli ma być:
$zmienna.= $row['costam'];
Powód edycji: [nospor]:


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
BuncolPL
post 3.07.2011, 13:38:27
Post #11





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 19.12.2008
Skąd: Poland

Ostrzeżenie: (0%)
-----


To dopisanie, ale to też w 100% nie rozwiązuje mojego problemu, ponieważ kod html się wyświetla, a dane z while nie.

Mam tak:
  1. $html = 'kod html';
  2.  
  3. $result = mysql_query("...");
  4. while ($row = mysql_fetch_assoc($result))
  5. {
  6.  
  7. $html .= $row['costam'];
  8. }
  9.  
  10. $html .= 'dalsza część kodu html';
  11.  


--------------------
:)
Go to the top of the page
+Quote Post
nospor
post 3.07.2011, 13:43:04
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Zmieniasz ten kod co 5 minut. Raz dane zapisujesz w zmiennej i potem doklejasz, to znów wracasz do tego co ci na początku pisałem. No weź się zdecyduj na jakąś wersje smile.gif

No jeśli teraz kod co podałeś jest taki co masz w rzeczywistości, i dane z pętli ci się nie dopisują do $html to wniosek jest taki, że w ogóle ci do pętli nie wchodzi, bo albo nie ma danych z zapytania, albo zapytanie zwraca błąd.

Wątpie jednak, byś dokładnie taki kod miał u siebie, więc jest jeszcze jedna możliwośc: coś źle napisałeś smile.gif


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
BuncolPL
post 3.07.2011, 13:46:55
Post #13





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 19.12.2008
Skąd: Poland

Ostrzeżenie: (0%)
-----


Kod jest ten co napisałem wyżej, czyli wróciłem do tego co mówiłeś na początku smile.gif

Zapytanie jest dobre, zwraca rekordy jak testuje to z echo.


--------------------
:)
Go to the top of the page
+Quote Post
nospor
post 3.07.2011, 13:48:16
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




To pokaż dokładnie kod jaki masz. Dokładnie.

Bo to co tu pokazałeś powinno działać.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
BuncolPL
post 3.07.2011, 13:56:47
Post #15





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 19.12.2008
Skąd: Poland

Ostrzeżenie: (0%)
-----


  1. $html = ' ......</tr>';
  2.  
  3. $wynik2 = mysql_query("select * from projekty");
  4. while ($row = mysql_fetch_assoc($wynik2))
  5. {
  6.  
  7. $html .= $row['title'];
  8. }
  9.  
  10. $html .= '</table>jakiś tekst


To co jest przed i po while się wyświetla. Dane z while mi się nie wyświetlają. Jak biorę print_r($row); w while to dane są.


--------------------
:)
Go to the top of the page
+Quote Post
nospor
post 3.07.2011, 13:59:27
Post #16





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to najwidoczniej generujesz trefny kod html, który się nie wyświetla.
Wiesz jak on po wygenerowaniiu wygląda? O tak:

....</tr>Jakiś tytuł 1 Jakis tytul2 Jakis tytuł n</table>

Nic więc dziwnego, ze klasa, która generuje pdf na podstawie html olewa taki śmieć.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
BuncolPL
post 3.07.2011, 14:11:39
Post #17





Grupa: Zarejestrowani
Postów: 75
Pomógł: 0
Dołączył: 19.12.2008
Skąd: Poland

Ostrzeżenie: (0%)
-----


Zgadza się smile.gif

Już wszystko jest ok smile.gif

nospor wielkie dzięki za pomoc smile.gif


--------------------
:)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.06.2025 - 01:52