Gjest Slettet+6132 Skrevet 20. juni 2006 Del Skrevet 20. juni 2006 Sitter nå og klør høl i huet. Jeg prøver å finne ut den enkleste måten å gå over fra vanlig output med echo til å bruke et template-system som smarty. Har ikke satt med så forferdeligt mye inn i smarty, men jeg kan vise min nåværende kode så ser dere raskt hvorfor jeg må gå over til template-system Skjult tekst: (Marker innholdet i feltet for å se teksten): function dvd_get($start = 0) { global $config, $lng; $start = intval($start); if($start == 0) { $start = 1; } $maxrows = $config['dvd_count']; $offset = ($start - 1) * $maxrows; $query = mysql_query("SELECT d.*, c.title as col_title FROM dvd d LEFT JOIN collections c ON (d.collection = c.id) WHERE d.owner = '{$_SESSION['id']}' ORDER BY c.title ASC, d.colnum ASC, d.title ASC LIMIT {$offset}, {$maxrows}"); echo " <table id=\"dvd\">\n"; echo " <tr class=\"dvd-top\">\n"; echo " <td width=\"150\">{$lng['dvd']['dvd_c']}</td>\n"; echo " <td width=\"580\">{$lng['dvd']['title']}</td>\n"; echo " <td width=\"60\" align=\"center\">{$lng['dvd']['type']}</td>\n"; echo " <td width=\"70\" align=\"center\">IMDb</td>\n"; echo " <td width=\"80\" align=\"center\">{$lng['dvd']['cover']}</td>\n"; echo " <td width=\"30\" align=\"center\">{$lng['dvd']['edit_short']}</td>\n"; echo " <td width=\"30\" align=\"center\">{$lng['dvd']['delete_short']}</td>\n"; echo " </tr>\n"; if(mysql_num_rows($query) > 0) { while($row = mysql_fetch_assoc($query)) { echo " <tr class=\"dvd\">\n"; echo " <td class=\"dvd\">" . $row['col_title'] . "</td>\n"; if($row['colnum'] != 00 && !empty($row['colnum'])) { $colnum = $row['colnum'] . ": "; } else { $colnum = ""; } if($row['prodyear'] != "" && $row['prodyear'] != 0) { $prodyear = " ({$row['prodyear']})"; } else { $prodyear = ""; } if($config['mod_rewrite'] != true) { echo " <td class=\"dvd\">{$colnum}<a href=\"{$config['baseurl']}index.php?module=dvd&action=read&target=single&id={$row['id']}\" title=\"{$lng['dvd']['details']}\">" . htmlspecialchars(stripslashes($row['title'])) . "</a>{$prodyear}</td>\n"; } else { echo " <td class=\"dvd\">{$colnum}<a href=\"{$config['baseurl']}dvd/single/{$row['id']}\" title=\"{$lng['dvd']['details']}\">" . htmlspecialchars(stripslashes($row['title'])) . "</a>{$prodyear}</td>\n"; } echo " <td class=\"dvd\" align=\"center\">{$row['type']}</td>\n"; echo " <td class=\"dvd\" align=\"center\">"; if($row['imdb']) { $imdb = htmlspecialchars($row['imdb']); echo "<a href=\"$imdb\" title=\"IMDb\" target=\"_blank\"><img height=\"13\" width=\"27\" alt=\"IMDb\" src=\"{$config['baseurl']}static/img/imdb.gif\" /></a>"; } else { echo "--"; } echo "</td>\n"; echo " <td class=\"dvd\" align=\"center\">"; if($row['cover'] != "no") { echo "<a href=\"{$config['baseurl']}covers/{$row['cover']}\" title=\"{$lng['dvd']['cover']}\" target=\"_blank\"><img height=\"16\" width=\"16\" alt=\"Cover\" src=\"{$config['baseurl']}static/img/icons/download.gif\" /></a>"; echo " <a href=\"{$config['baseurl']}index.php?module=dvd&action=cover_delete&target=showform&id={$row['id']}\" title=\"{$lng['dvd']['cover_del']}\"><img height=\"16\" width=\"16\" alt=\"{$lng['dvd']['delete_long']}\" src=\"{$config['baseurl']}static/img/delete.png\" /></a>"; } else { echo "<a href=\"{$config['baseurl']}index.php?module=dvd&action=cover_add&target=showform&id={$row['id']}\" title=\"{$lng['dvd']['cover_add_2']}\"><img height=\"16\" width=\"16\" alt=\"{$lng['dvd']['cover_add_1']}\" src=\"{$config['baseurl']}static/img/icons/new.gif\" /></a>"; } echo "</td>\n"; echo " <td class=\"dvd\" align=\"center\"><a href=\"{$config['baseurl']}index.php?module=dvd&action=edit&target=showform&id={$row['id']}\" title=\"{$lng['dvd']['edit_long']}\"><img height=\"16\" width=\"16\" alt=\"{$lng['dvd']['edit_long']}\" src=\"{$config['baseurl']}static/img/edit.png\" /></a></td>\n"; echo " <td class=\"dvd\" align=\"center\"><a href=\"{$config['baseurl']}index.php?module=dvd&action=delete&target=showform&id={$row['id']}\" title=\"{$lng['dvd']['delete_long']}\"><img height=\"16\" width=\"16\" alt=\"{$lng['dvd']['delete_long']}\" src=\"{$config['baseurl']}static/img/delete.png\" /></a></td>\n"; echo " </tr>\n"; } } else { echo " <tr>\n"; echo " <td colspan=\"6\">{$lng['dvd']['nodvd']}</td>\n"; echo " </tr>\n"; } echo " </table>\n\n"; echo " <div class=\"text\">\n"; echo " <p style=\"margin-top: 10px;\">\n"; $query = mysql_query("SELECT COUNT(id) AS rows FROM dvd WHERE owner = '{$_SESSION['id']}'"); $row = mysql_fetch_assoc($query); $rows = $row['rows']; $maxpages = ceil($rows/$maxrows); $paging = ''; for($page = 1; $page <= $maxpages; $page++) { if($page == $start) { $paging .= " [ $page ] \n"; } else { if($config['mod_rewrite'] != true) { $paging .= " <a href=\"{$config['baseurl']}index.php?module=dvd&action=read&target=all&start={$page}\" title=\"{$lng['dvd']['paging_page']} {$page}\"> [ $page ] </a>\n"; } else { $paging .= " <a href=\"{$config['baseurl']}dvd/all/{$page}\" title=\"{$lng['dvd']['paging_page']} {$page}\"> [ $page ] </a>\n"; } } } if($start > 1) { $page = $start - 1; if($config['mod_rewrite'] != true) { $prev = " <a href=\"{$config['baseurl']}index.php?module=dvd&action=read&target=all&start={$page}\" title=\"{$lng['dvd']['paging_page']} {$page}\"> [ {$lng['dvd']['paging_prev']} ] </a>\n"; $first = " <a href=\"{$config['baseurl']}index.php?module=dvd&action=read&target=all&start=1\" title=\"{$lng['dvd']['paging_page']} 1\"> [ {$lng['dvd']['paging_first']} ] </a>\n"; } else { $prev = " <a href=\"{$config['baseurl']}dvd/all/{$page}\" title=\"{$lng['dvd']['paging_page']} {$page}\"> [ {$lng['dvd']['paging_prev']} ] </a>\n"; $first = " <a href=\"{$config['baseurl']}dvd/all/1\" title=\"{$lng['dvd']['paging_page']} 1\"> [ {$lng['dvd']['paging_first']} ] </a>\n"; } } else { $prev = " [ {$lng['dvd']['paging_prev']} ] \n"; $first = " [ {$lng['dvd']['paging_first']} ] \n"; } if($start < $maxpages) { $page = $start + 1; if($config['mod_rewrite'] != true) { $next = " <a href=\"{$config['baseurl']}index.php?module=dvd&action=read&target=all&start={$page}\" title=\"{$lng['dvd']['paging_page']} {$page}\"> [ {$lng['dvd']['paging_next']} ] </a>\n"; $last = " <a href=\"{$config['baseurl']}index.php?module=dvd&action=read&target=all&start={$maxpages}\" title=\"{$lng['dvd']['paging_page']} {$maxpages}\"> [ {$lng['dvd']['paging_last']} ] </a>\n"; } else { $next = " <a href=\"{$config['baseurl']}dvd/all/{$page}\" title=\"{$lng['dvd']['paging_page']} {$page}\"> [ {$lng['dvd']['paging_next']} ] </a>\n"; $last = " <a href=\"{$config['baseurl']}dvd/all/{$maxpages}\" title=\"{$lng['dvd']['paging_page']} {$maxpages}\"> [ {$lng['dvd']['paging_last']} ] </a>\n"; } } else { $next = " [ {$lng['dvd']['paging_next']} ] \n"; $last = " [ {$lng['dvd']['paging_last']} ] \n"; } echo $first . $prev . $paging . $next . $last; echo " </p>\n"; echo " </div>\n"; } Fælt, ikke sant? Så jeg vil nå prøve å gjøre denne koden litt mer leselig og brukbar ved å bruke et template-system istedenfor. Problemet er bare hvor jeg skal starte, har ingen anelse! Er dette et sted å begynne? test.php <?php require '../libs/Smarty.class.php'; $smarty = new Smarty; $smarty->assign("dvd_titles", array("dvd1", "dvd2", "dvd3")); $smarty->assign("dvd_imdbs", array("http://lol/", "http://lol/", "http://lol/")); $smarty->display("test.tpl"); ?> test.tpl {section name=test loop=$dvd_titles} {$dvd_titles[test]} {$dvd_imdbs[test]} {/section} For å angi alle tittlene, må jeg da hente dem ut fra databasen og gjøre noe ala dette? $dvd_titles = array(); while(solen skinner) { $dvd_titles[] = $row['title']; } $smarty->assign("dvd_titles", $dvd_titles); ...eller blir det feil? Og hva med paging-systemet, vil ikke det bli noe av det samme? På forhånd takk for alle svar, jeg har virkelig kjørt meg i grøfta her Lenke til kommentar
Gjest Slettet+6132 Skrevet 20. juni 2006 Del Skrevet 20. juni 2006 Tror faktisk jeg kan klare dette, har prøvd mye frem og tilbake nå og puslespillet begynner å sette seg sammen. test.php <?php mysql_connect('localhost', 'root', ''); mysql_select_db('atreyu'); require '../libs/Smarty.class.php'; $smarty = new Smarty; $collections = array(); $titles = array(); $types = array(); $imdbs = array(); $covers = array(); $prodyears = array(); $query = mysql_query("SELECT d.*, c.title as col_title FROM dvd d LEFT JOIN collections c ON (d.collection = c.id) WHERE d.owner = '0001' ORDER BY c.title ASC, d.colnum ASC, d.title ASC LIMIT 0, 30"); while($row = mysql_fetch_assoc($query)) { $collections[] = $row['col_title']; $titles[] = $row['title']; $types[] = $row['type']; $imdbs[] = $row['imdb']; $covers[] = $row['cover']; $prodyears[] = $row['prodyear']; } $smarty->assign("dvd_collections", $collections); $smarty->assign("dvd_titles", $titles); $smarty->assign("dvd_types", $types); $smarty->assign("dvd_imdbs", $imdbs); $smarty->assign("dvd_covers", $covers); $smarty->assign("dvd_prodyears", $prodyears); $smarty->display("test.tpl"); ?> test.tpl <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <title>Atreyu DVD Manager</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="content-language" content="en" /> <link rel="stylesheet" href="http://atreyu.dev.lan/themes/default/default.css" type="text/css" media="all" /> </head> <body> <table id="dvd"> <tr class="dvd-top"> <td width="150">Collection</td> <td width="580">Title</td> <td width="60" align="center">Type</td> <td width="70" align="center">IMDb</td> <td width="80" align="center">Cover</td> <td width="30" align="center">E</td> <td width="30" align="center">D</td> </tr> {section name=test loop=$dvd_titles} <tr class="dvd"> <td class="dvd">{$dvd_collections[test]}</td> <td class="dvd">{$dvd_titles[test]} ({$dvd_prodyears[test]})</td> <td class="dvd" align="center">{$dvd_types[test]}</td> <td class="dvd" align="center">{if $dvd_imdbs[test]}<a href="{$dvd_imdbs[test]}" title="IMDb">IMDb</a>{else}-{/if}</td> <td class="dvd" align="center">{$dvd_covers[test]}</td> <td class="dvd" align="center">-</td> <td class="dvd" align="center">-</td> </tr> {/section} </table> </body> </html> Har jeg rett fremgangsmåte her? (Hvorfor brukte jeg ikke template-system helt fra starten av? Mye ryddigere! ) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå