1:<?php
   2://clase que contiene a smarty
   3:include_once('theme.php');
   4://PEAR::DB
   5:include_once("DB.php");
   6:
   7://parametros de conexión
   8:define("TYPE","mysql");
   9:define("USER","root");
  10:define("PASSWORD","password");
  11:define("SERVER","localhost");
  12:define("DATABASE","smartytest");
  13:
  14://idioma
  15:define("LANG", "en");
  16://tema
  17:define("THEME", "one");
  18:
  19:$db = DB::connect(TYPE."://".USER.":".PASSWORD."@".SERVER."/".DATABASE);
  20:
  21:// verificar que se puede realizar la conexion, de otro modo termina el script
  22:if (DB::isError($db)) {
  23:    die($db->getMessage());
  24:}
  25:
  26://modofetch por default
  27:$db->setFetchMode(DB_FETCHMODE_ASSOC);
  28:
  29:$query = 'SELECT news_id, news_title FROM news';
  30:$result = $db->query($query);
  31:
  32:$entries = array();
  33:
  34:while ($row = $result->fetchRow()) {
  35:    $entries[] = $row;
  36:}
  37:
  38:if (DB::isError($db)) {
  39:     die($db->getMessage());
  40:}
  41:
  42:$theme = new Theme(THEME);
  43:
  44:$theme->setTemplate('menu');
  45:$theme->_smarty->assign('self', $_SERVER['PHP_SELF']);
  46:$theme->_smarty->assign('entries', $entries);
  47:
  48://el menú es el mismo para cada caso de id
  49:$menu = $theme->fetch();
  50:
  51:$theme->setTemplate('index');
  52:$theme->_smarty->assign('menu', $menu);
  53:
  54://para la tabla
  55:$theme->_smarty->assign('data',array(1,2,3,4,5,6,7,8,9));
  56:$theme->_smarty->assign('tr',array('bgcolor="#eeeeee"','bgcolor="#bbbbbb"'));
  57:
  58://para los radio, checkboxes y el select
  59:$theme->_smarty->assign('cust_options', array(
  60:            1001 => 'Joe Schmoe',
  61:            1002 => 'Jack Smith',
  62:            1003 => 'Jane Johnson',
  63:            1004 => 'Charlie Brown'));
  64://id del dato preseleccionado
  65:$theme->_smarty->assign('customer_id', 1003);
  66:
  67://si no existe en cache, traerlo desde la DB
  68:if(!$theme->isCached($_GET['id'].THEME)){
  69:    echo "<div style='background-color:cornflowerblue;'><p>tomando desde la base de datos</div>";
  70:    //el id de la noticia
  71:    //funciona tambien para identificar el cache
  72:    if(isset($_GET['id'])){
  73:        $query = "SELECT news_content FROM news WHERE news_id='".$_GET['id']."'";
  74:        $result = $db->query($query);
  75:        $row = $result->fetchRow();
  76:        $content = $row['news_content'];
  77:
  78:        if (DB::isError($db)) {
  79:            die($db->getMessage());
  80:        }
  81:    }
  82:    $theme->_smarty->assign('content', $content);
  83:}
  84:
  85:$theme->display($_GET['id']);
  86:
  87:$db->disconnect();
  88:?>