Autor | Zpráva | ||
---|---|---|---|
Majkelju Profil |
#1 · Zasláno: 19. 6. 2012, 16:08:21
Dobrý den,
potřebuji exportovat stránku s vygeneroanými daty z databáze do formátu PDF. Skouknul jsem tutoriály, ale všude v příkladech uvádějí jen jednoduché tabulky. Když tabulku hodím do proměnné $html, tak, jak to všude ukazují, tak to nejede. Asi tomu vadí php kód uvnitř tabulky??? Přikládám onen kód... Předem děkuji za rady a připomínky... <?php include("../mpdf/mpdf.php"); $mpdf=new mPDF('c','A4','','' , 0 , 0 , 0 , 0 , 0 , 0); $mpdf->SetDisplayMode('fullpage'); $mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list $html= ' ?> <form id="obj_form" name="obj_form" method="post" action="?menu1=1&IDstavba= <? echo $IDstavba;?>&IdStStupen=<?echo $IdStStupen;?>"> <table cellpadding="0" cellspacing="0" border="0" class="display" id="tabulka_objekty_stavby_stupne"> <thead> <tr> <th></th> <th></th> <?if($stupen > 2){echo "<th></th>";}?> <th>Zatřídění</th> <th>Značka</th> <th>Název</th> <th>od KM</th> <th>do KM</th> <th>Množství</th> <th>mj</th> <th>JC<br /><p class="mensi"><?if(VratStupen($IdStStupen) == 1){echo '[ tis. Kč ]';}else{echo '[ Kč ]';}?></p></th> <th class="cena_min">Cena MIN<br /><p class="mensi">[ tis. Kč ]</p></th> <th class="cena_ex">Cena<br /><p class="mensi">[ tis. Kč ]</p></th> <th class="cena_max">Cena MAX<br /><p class="mensi">[ tis. Kč ]</p></th> </tr> </thead> <tbody> <?php $_SESSION["navstiveny_stupen"] = $IdStStupen; $navstiveny_objekt = $_SESSION["navstiveny_objekt"]; $cislo_radku=0; $counting = true; $result = $db->query(" SELECT `objekty`.`id` AS `id`, `objekty`.`znacka` AS `znacka`, `objekty`.`nazev` AS `nazev`, `objekty`.`k_zatrideni` AS `k_zatrideni`, `mnozstvi`, `priznak`, `km_od`, `km_do`, `objekty`.`cena` AS `cena`, `objekty`.`cena_min` AS `cena_min`, `objekty`.`cena_max` AS `cena_max`, `zatrideni`.`znacka` AS `zn_zatrideni`, `mj`.`znacka` AS `mj` FROM `objekty` JOIN `zatrideni` ON `zatrideni`.`id` = `objekty`.`k_zatrideni` JOIN `mj` ON `mj`.`id` = `zatrideni`.`k_mj` JOIN `stavby_stupen` ON `stavby_stupen`.`id` = `objekty`.`k_stavba_stupen` JOIN `stavby` ON `stavby`.`id` = `stavby_stupen`.`k_stavba` JOIN `stavby_uzivatele` ON `stavby_uzivatele`.`k_stavby` = `stavby`.`id` WHERE `objekty`.`k_stavba_stupen` = '$IdStStupen' AND `stavby_uzivatele`.`k_uzivatele` = '$userID' ORDER BY `objekty`.`znacka` ASC, `objekty`.`nazev` ASC"); while($row = $result->fetch_assoc()){ if($counting) $cislo_radku++; if($row['id']==$navstiveny_objekt){ $counting = false; } ?> <tr <?if($row['id']==$navstiveny_objekt) echo 'class="vybrany_radek"';?>> <?if($stupen == 1){$Cena = SectiCenu_IZ_A ($IdStStupen);?> <td class="stred"> <? if((substr($row['zn_zatrideni'], 0, 2))!="B." && $row['zn_zatrideni'] != "A.4"){?> <?if($auth->get_prava_stavby($IDstavba, 'd')){?> <input name="objekt_checkbox[]" type="checkbox" value="<? echo $row['id']; ?>"> <?}?> <?}?> </td> <td class="stred"> <?if($auth->get_prava_stavby($IDstavba, 'e')){?> <?if((substr($row['zn_zatrideni'], 0, 2))!="B."){ if ($row['zn_zatrideni'] == "A.4"){?> <img class="rucka" src="./obrazky/stavby/Actions-document-edit-icon3.png" onclick="javascript:EditObjektMUK(<? echo $row['id']; ?>);" /> <?}else{?> <img class="rucka" src="./obrazky/stavby/Actions-document-edit-icon3.png" onclick="javascript:A_E_Objekt(<? echo $row['id']; ?>, 'EDIT');" /> <?} } else {?> <img class="rucka" src="./obrazky/stavby/Actions-document-edit-icon3.png" onclick="javascript:EditObjektIZ_B(<? echo $row['id']; ?>);" /> <?} }?> </td> <?}elseif($stupen == 2){?> <?if ($auth->get_prava_stavby($IDstavba, 'd')) {?> <td class="stred"><input name="objekt_checkbox[]" type="checkbox" value="<? echo $row['id']; ?>"></td> <?} else {?> <td></td> <?} if ($auth->get_prava_stavby($IDstavba, 'e')) {?> <td class="stred"><img class="rucka" src="./obrazky/stavby/Actions-document-edit-icon3.png" onclick="javascript:A_E_Objekt(<? echo $row['id']; ?>,'EDIT');" /></td> <?} else {?> <td></td> <?}?> <?}elseif($stupen == 3){?> <?if ($auth->get_prava_stavby($IDstavba, 'd')) {?> <td class="stred"><input name="objekt_checkbox[]" type="checkbox" value="<? echo $row['id']; ?>"></td> <?} else {?> <td></td> <?} if ($auth->get_prava_stavby($IDstavba, 'e')) {?> <td class="stred"><img class="rucka" src="./obrazky/stavby/Actions-document-edit-icon3.png" onclick="javascript:A_E_Objekt(<? echo $row['id']; ?>, 'EDIT');" /></td> <?} else {?> <td></td> <?}?> <td class="stred"> <?if($row['k_zatrideni'] != 0){?> <a href="?menu1=1&IDstavba=<?echo $IDstavba;?>&IdStStupen=<?echo $IdStStupen;?>&IDobjekt=<? echo $row['id'];?>"><img src="./obrazky/stavby/Continue2.png"></a> <?}?> </td> <?}?> <td><? echo $row['zn_zatrideni'];?></td> <td><? echo $row['znacka'];?></td> <td><? echo $row['nazev'];?></td> <td class="vpravo"><? echo $row['km_od'];?></td> <td class="vpravo"><? echo $row['km_do'];?></td> <td class="vpravo"> <?if(($row['zn_zatrideni'][0])=="B"){ if($row['priznak'] == 3){ echo number_format((($row['cena']/$Cena[1])*100) ,2 ,'.' ,$oddelovac_tisicu); }else{ echo number_format($row['cena'] ,2 ,'.' ,$oddelovac_tisicu); } } else{ switch(VratStupen($IdStStupen)){ case 1:{ if ($row['zn_zatrideni'] == "A.4"){ echo number_format($row['mnozstvi'] ,1 ,'.' ,$oddelovac_tisicu); }else{ echo number_format($row['mnozstvi'] ,3 ,'.' ,$oddelovac_tisicu); } } break; case 2:{ echo number_format($row['mnozstvi'] ,2 ,'.' ,$oddelovac_tisicu); } break; case 3:{ echo number_format($row['mnozstvi'] ,2 ,'.' ,$oddelovac_tisicu); } break; } }?> </td> <td><? echo $row['mj'];?></td> <td class="vpravo"> <?if(($row['zn_zatrideni'][0])=="B"){ if($row['priznak'] == 3){ echo number_format(($row['cena']/1000) ,0 ,'.' ,$oddelovac_tisicu ); }else{ echo number_format(((($row['cena']/100)*$Cena[1])/1000) ,0 ,'.' ,$oddelovac_tisicu); } }else{ if($row['mnozstvi']!=0){ $res=$row['cena']/$row['mnozstvi']; }else{ $res=0; } $del = 1; if(VratStupen($IdStStupen) == 1){ $del = 1000; } echo number_format(($res/$del) ,0 ,'.' ,$oddelovac_tisicu ); }?> </td> <td class="vpravo cena_min"><? if(($row['zn_zatrideni'][0])=="B"){if($row['priznak'] == 3){echo number_format(($row['cena_min']/1000) ,0 ,'.' ,$oddelovac_tisicu);}else{echo number_format(((($row['cena_min']/100)*$Cena[0])/1000) ,0 ,'.' ,$oddelovac_tisicu);}}else{echo number_format(($row['cena_min']/1000) ,0 ,'.' ,$oddelovac_tisicu);}?></td> <td class="vpravo cena_ex"><? if(($row['zn_zatrideni'][0])=="B"){if($row['priznak'] == 3){echo number_format(($row['cena']/1000) ,0 ,'.' ,$oddelovac_tisicu);}else{echo number_format(((($row['cena']/100)*$Cena[1])/1000) ,0 ,'.' ,$oddelovac_tisicu);}}else{echo number_format(($row['cena']/1000) ,0 ,'.' ,$oddelovac_tisicu);}?></td> <td class="vpravo cena_max"><? if(($row['zn_zatrideni'][0])=="B"){if($row['priznak'] == 3){echo number_format(($row['cena_max']/1000) ,0 ,'.' ,$oddelovac_tisicu);}else{echo number_format(((($row['cena_max']/100)*$Cena[2])/1000) ,0 ,'.' ,$oddelovac_tisicu);}}else{echo number_format(($row['cena_max']/1000) ,0 ,'.' ,$oddelovac_tisicu);}?></td> </tr> <?}?> </tbody> </table> <?$Celk_Cena = VratCenuStupne($IdStStupen, $oddelovac_tisicu);?> <table cellpadding="3" cellspacing="0" id="souhrn_ceny"> <tr> <th id="shn_popis">Celková cena stupně: </th> <th class="cena_min shn_cena vpravo" id="shn_min"><?echo $Celk_Cena[0];?></th> <th class="cena_ex shn_cena vpravo" id="shn_ex"><?echo $Celk_Cena[1];?></th> <th class="cena_max shn_cena vpravo" id="shn_max"><?echo $Celk_Cena[2];?></th> </tr> </table> <input id="delete" name="delete" type="hidden" value="0"> <input id="copy" name="copy" type="hidden" value="0"> </form> '; <? $mpdf->WriteHTML($html); $mpdf->Output(); exit; ?> |
||
Joker Profil |
#2 · Zasláno: 19. 6. 2012, 16:10:27
Majkelju:
Nejsou tam escapované apostrofy, viz i barvítko kódu tady na diskusi. |
||
Majkelju Profil |
#3 · Zasláno: 19. 6. 2012, 16:12:38 · Upravil/a: Majkelju
Ještě jsem zkoušel do mpdf načíst celou stránku, to sice skoro funguje, ale vypisuje to na tom pdfku nesmysly, a o formátování vůbec nemluvím.... :)
Joker: Díky.... takže stačí dosadit zpětná lomítka... |
||
Majkelju Profil |
#4 · Zasláno: 20. 6. 2012, 10:05:36
Ať escapuju jak escapuju, tak to nefachá...mohl by někdo názorně ukázat, jak to pořešit? Docela se v těch uvozokách a zpětných lomítkách ztrácím :(
|
||
Šéva Profil |
#5 · Zasláno: 20. 6. 2012, 10:32:27
mPDF taky používám a moje zkušenost je:
$html='nejaký kod vše v php a můžes zde použít klasické apostrofy " a uazvřeš zase takhle '; $mpdf=new mPDF('UTF-8','A4','','' , 0 , 0 , 0 , 0 , 0 , 0); potom si ten kód v případě že to nemáš psané v UTF-8 přes iconv(); převést do UTF-8 a kdyby ani to nešlo,tak ješte udělat $html=str_replace('"','\"',$html); tím nahradíš vššchny apostrofy escapovanými... |
||
Joker Profil |
#6 · Zasláno: 20. 6. 2012, 10:39:43
Majkelju:
„Docela se v těch uvozokách a zpětných lomítkách ztrácím :(“ Odkud kam sahá řetězec ukazuje zvýrazňovač syntaxe, takže stačí prostě escapovat tak dlouho, až řetězec bude končit tam kde má končit a případně nebude PHP editor hlásit, že na tom řádku je parse error. Případně na zadání dlouhého řetězce ve kterém jsou speciální znaky se hodí nowdoc syntaxe (od PHP 5.3): $html = <<<'EOD' kód co má být v řetězci EOD |
||
Majkelju Profil |
Děkuji za rady, ještě bych měl dotaz jak umístit php tagy...
<? $html = <<<'EOD' ?> kód co má být v řetězci <? EOD ?> |
||
Časová prodleva: 12 let
|
0