Autor Zpráva
tee.vee
Profil
Dobrý den,
řeším jednu (možná strašně jednoduchou) věc. Mám jednu komponentu (MPDF), která mi generuje hezké PDF soubory. Podklady pro vytvoření tisk jsou klasicky ve stringu $html = "Vse_co_se_ma_tisknout";

Aby se do toho PDFka daly naimportovat veškeré údaje, které si posbírám všude okolo, může to vypadat v přkladu následovně:

$html = "
<h1>Nadpis</h1>
<p>Clanek cislo ".$cisloclanku." je zde</p>
";

Teď přichází to nejpodstatnější, když potřebuji vypsat data třeba z databáze pomocí while cyklu - například potřebuji do obsahu k tisku dostat tabulku informací (např. přehledy...). Napadlo mě nejprve uložit si celý cyklus do strigu a ten pak vypsat v kódu pro tisk, něco takového:

$clanky = 
    $sql = mysql_query("SELECT * FROM polozky ORDER BY id ASC");
    while($data = MySQL_Fetch_Array($sql)):
            echo "<tr>\n";
        echo "<td>".$data['nazev']."</td>\n";
        echo "<td>".$data['popis']."</td>\n";
        echo "<td>".$data['datum']."</td>\n";
        echo "<td>".$data['autor']."</td>\n";
        echo "</tr>\n";
    endwhile;
                
$html = "
<h1>Seznam polozek</h1>
<p>Zde se nachazi seznam vsech polozek:</p>
<table>
".$clanky."
</table>
";

Asi se dopouštím nějaké (školácké) chyby, ale pořád mi to nedochází. Něco takového musí určitě fungovat, na podobném principu musí být udělané i generování faktur v eshopech... Prosím prosím o nasměrování nebo o drobnou pomoc :) děkuji.
mimochodec
Profil
Nevím, jestli nejde o překlep. Když si odmyslím ten první řádek, jde o standardní kód, který získá z databáze nějaké informace a vypíše je. Ten první řádek to ale totálně staví na hlavu. Do té proměnné se přesně snažíš dostat co? Jen trochu se zamysli, co ten kód dělá. Je tam nějaké přiřazení, nějaký cyklus, nějaký dotaz do databáze. Ty se toto všechno snažíš dát do proměnné??

Ten první řádek smaž a pak všechny výpisy na stránku (echo) nahraď připojením textu k nějaké proměnné, kterou pak vypíšeš.
Ještě dodám, že kromě $clanky = $clanky."toto přidat";, které tě určitě napadne nejdřív, existuje i elegantnější zápis $clanky .= "toto přidat";.
tee.vee
Profil
Takhle - proč je tam $html - vlastně veškerý obsah tohoto stringu se právě vytiskne do PDF pomocí té komponenty mpdf. Takže cílem je to, abych do $html dostal všechno, co potřebuji. Proto, jak jsem psal - jsem si myslel že bych tam měl nějaký pevný html kód (například strukturu jak to pdfko bude vypadat) a pak bych k tomu přidal jen výstup z toho mysql dotazu. Tak jsem si (asi špatně :) ) myslel, že bych si udělal základní html šablonu, a doprostřed bych dal už ten výstup z databáze (který mi vypíše ty požadované položky).

Myslel jsem, že $clanky bude už interpretovat výsledný html kód (z toho dotazu do databáze) - tzn něco jako:

$clanky = "
<tr>
<td>Clanek1</td>
<td>Clanek o autech</td>
<td>14.11.2012</td>
<td>Petr</td>
</tr>
<tr>
<td>Clanek2</td>
<td>Clanek o lodich</td>
<td>14.11.2012</td>
<td>Martin</td>
</tr>";
panther
Profil
tee.vee:
$clanky = '';
    $sql = mysql_query("SELECT * FROM polozky ORDER BY id ASC");
    while($data = MySQL_Fetch_Array($sql)):
        $clanky .= "<tr>\n";
        $clanky .= "<td>".$data['nazev']."</td>\n";
        $clanky .= "<td>".$data['popis']."</td>\n";
        $clanky .= "<td>".$data['datum']."</td>\n";
        $clanky .= "<td>".$data['autor']."</td>\n";
        $clanky .= "</tr>\n";
    endwhile;
tee.vee
Profil
Perfektní! to je naprosto to, co jsem potřeboval :) děkuji!

Jen pro informaci, v čem je elegantnější $string .= '';?

Tím myslím konkrétně .=
panther
Profil
tee.vee:
Jen pro informaci, v čem je elegantnější $string .= '';?
rychlost to moc (spíš vůbec, pokud ano) neovlivní. Ale zápis je kratší a přehlednější, tobě se to nezdá?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: