DBI versus HTML::Template

Honza Pazdziora adelton na informatics.muni.cz
Pondělí Listopad 25 15:55:52 MET 2002


On Mon, Nov 25, 2002 at 02:38:57PM +0100, Jan Kasprzak wrote:
> 
> 	potreboval bych vypisovat obsah tabulky z databaze
> pomoci HTML::Template. Nejjednodussi varianta mi prijde ve stylu
> 
> $tabulka = $dbh->selectall_arrayref(q!
> 	SELECT neco from tabulka WHERE podminka
> !);
> 
> a v HTML::Template pak mit
> 
> <TMPL_LOOP NAME=tabulka>
> ..
> </TMPL_LOOP>
> 
> Problem je, ze selectall_arrayref vraci odkaz na pole poli, zatimco
> TMPL_LOOP vyzaduje odkaz na pole hashu. Jak ziskat co nejjednoduseji
> z SQL dotazu pole hashu? Neco jako fetchall_arrayref({}), ale abych
> nemusel vytvaret extra $sth.

Ve starsich verzich DBI to tusim delalo selectall_hashref, ale ta
semantika se nyni zmenila. Pokud by Ti vyhovoval hashref hashrefu,
indexovany poradim, tak by mohlo pomoci

	$tabulka = $dbh->selectall_hashref(q!
		select tabulka.*, rownum from tabulka where podminka
		!, "ROWNUM");'

kde za rownum dosad vhodnou funkci/pseudosloupec, kterym Tvoje RDBMS
generuje poradi. Do tvaru arrayref hashrefu to pak dostanes

	$tabulka = [ map $tabulka->{$_}, sort keys %$tabulka ];

Ja vim, neni to idealni ...

-- 
------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
      ... all of these signs saying sorry but we're closed ...
------------------------------------------------------------------------


Další informace o konferenci Perl