| 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: 14 let
|
|||
0