Ver Mensaje Individual
  #16 (permalink)  
Antiguo 23/08/2007, 15:59
Avatar de webdesignsite
webdesignsite
 
Fecha de Ingreso: enero-2007
Mensajes: 155
Antigüedad: 17 años, 3 meses
Puntos: 1
Pregunta Re: Mostrar correctamente resultados de BD!!!

Cita:
Iniciado por GatorV Ver Mensaje
No se que estructura tenga tu archivo de template, de seguro debe de tener un problema al parsear bloques recursivos.

Saludos.

Es este:

template.php

Código PHP:
<?php

//                           +----------------------------------------------------+
//                           | Autor:  Dardo Guiodobono <[email protected]>|
//                           +----------------------------------------------------+
//
// ************************************************************************************************************
// * FUNCION:                                                                                                 *
// *         ESTE MODULO PERMITE ACCEDER A LAS PLANTILLAS POR MEDIO DEL PHP                                   *
// *                                                                                                          *
// *  en el script se debe hacer include("../Copia%20de%20Clase_7_3/template.php3");                                                    *
// *  tenemos 4 funciones basicas;                                                                            *
// *                                                                                                          *
// * --set_file($nombrepagina,$path);                                                                         *
// *                                                                                                          *
// *   con esto busca el archivo /templates/."$path"                                                          *
// *   y ahora en mas lo referenciamos con el nombre $nombrepagina                                            *
// *                                                                                                          *
// * --set_var($var,$value)                                                                                   *
// *                                                                                                          *
// *   esta funcion sirve para cambiar  lo que pusimos en la plantilla entre llaves {var} por valor           *
// *   pero esta variable debe estar dentro de un bloque en la plantilla o sea dentro de                      *
// *   <!-- BEGIN nombrebloque -->                                                                            *
// *   <!-- END nombrebloque -->                                                                              *
// *                                                                                                          *
// * --parse(nombrebloque,nombrebloque,true o false)                                                          *
// *                                                                                                          *
// *    anexas a la plantilla un bloque pero con los datos pasados en set_var()                               *
// *   se puede ejecutar muchas veces para hacer un listado por ejemplo.                                      *
// *                                                                                                          *
// * --pparse($nombredepagina)                                                                                *
// *                                                                                                          *
// *   basicamente termina de imprimir el template pero con todos los bloques y variables cambiados.          *
// *                                                                                                          *
// *  Este software esta bajo la licencia GPL.                                                                *
// *                                                                                                          *
// ************************************************************************************************************
//
// Fecha=04-05-2001


if(defined("TEMPLATE")) return;
define("TEMPLATE"1);

   
$classname "Template";
   
$root "./templates/";
   
$blocks = array();
   
$vars = array();
   
$unknowns "keep";  // "remove" | "comment" | "keep"
   
$halt_on_error "yes";   // "yes" | "report" | "no"


    
function set_file($name$filename) {
          
extract_blocks($nameload_file($filename));
       }



    function 
set_var($var$value) {
       global 
$vars;
         
$vars["/\{$var}/"] = $value;
    }

    
/*
     * string parse(string $target, [string $block], [bool $append]);
     * Procesa el bloque especificado por $block y almacena el resultado en
     * $target. Si $block no se ha especificado se asume igual a $target.
     * $append especifica si se debe a�dir o sobreescribir la variable
     * $target(sobreescribir por defecto).
     */
    
function parse($target$block ""$append false) {
       global 
$blocks,$vars,$unknowns,$regs;
        if(
$block == "") {
            
$block $target;
        }
        
        if(isset(
$blocks["/\{$block}/"])) {
            if(
$append) {
                
$vars["/\{$target}/"] .= @preg_replace(array_keys($vars), array_values($vars), $blocks["/\{$block}/"]);
                if(
$vars["/\{$target}/"]{0}=="\\"){
                   
$vars["/\{$target}/"]=str_replace("\\","",$vars["/\{$target}/"]);
                }
            } else {
                
$vars["/\{$target}/"] = @preg_replace(array_keys($vars), array_values($vars), $blocks["/\{$block}/"]);
                if(
$vars["/\{$target}/"]{0}=="\\"){
                    
$vars["/\{$target}/"]=str_replace("\\","",$vars["/\{$target}/"]);
                }
            }
            switch(
$unknowns) {
                case 
"keep":
                break;

                case 
"comment":
                
$vars["/\{$target}/"] = preg_replace('/{(.+)}/'"<!-- UNDEF: \\1 -->"$vars["/\{$target}/"]);
                break;

                case 
"remove":
                default:
                
$vars["/\{$target}/"] = preg_replace('/{\w+}/'""$vars["/\{$target}/"]);
                break;
            }
        } else {
            
halt("parse: No existe ningun bloque llamado \"$block\"." serialize($blocks));
        }
        return 
$vars["/\{$target}/"];
    }


    function 
pparse($target$block=""$append false) {
        return print(
parse($target$block$append));
    }


    function 
p($block) {
       global 
$vars;
        return print(
$vars[$block]);
    }


    function 
get_vars() {
       global 
$vars;
        
reset($vars);
        while(list(
$k,$v) = each($vars)) {
            
preg_match('/^{(.+)}$/'$k$regs);
            
$vars[$regs[1]] = $v;
        }
        return 
$vars;
    }


    function 
get_var($varname) {
       global 
$vars;

            return 
$vars["/\{$varname}/"];

    }


    function 
get($varname) {
       global 
$vars;
        return 
$vars["/\{$varname}/"];
    }



    function 
load_file($filename) {
       global 
$root;
        if((
$fh fopen("$root/$filename""r"))) {
            
$file_content fread($fhfilesize("$root/$filename"));
            
fclose($fh);
        } else {
            
halt("load_file: No se puede abrir $root/$filename.");
        }
        return 
$file_content;
    }


    function 
extract_blocks($name$block) {
       global 
$blocks,$regs;
        
$level 0;
        
$current_block $name;
        
$blocksa explode("<!-- "$block);
        if(list(, 
$block) = @each($blocksa)) {
            
$blocks["/\{$current_block}/"] = $block;
            while(list(, 
$block) = @each($blocksa)) {
                
preg_match('/^(BEGIN|END) (\w+) -->(.*)$/s'$block$regs);
                switch(
$regs[1]) {
                    case 
"BEGIN":

                        
$blocks["/\{$current_block}/"] .= "\{$regs[2]}";


                    
$block_names[$level++] = $current_block;
                    
$current_block $regs[2];
                    
$blocks["/\{$current_block}/"] = $regs[3];
                    break;

                    case 
"END":
                    
$current_block $block_names[--$level];
                    
$blocks["/\{$current_block}/"] .= $regs[3];
                    break;

                    default:
                    
$blocks["/\{$current_block}/"] .= "<!-- $block";
                    break;
                }
                unset(
$regs);
            }
        } else {
            
$blocks["/\{$current_block}/"] .= $block;
        }
    }

    function 
halt($msg) {
      global 
$halt_on_error,$last_error;

        
$last_error $msg;
        if (
$halt_on_error != "no")
            
haltmsg($msg);
        if (
$halt_on_error == "yes")
            die(
"<b>Halted.</b>\n");
        return 
false;
    }

    function 
haltmsg($msg) {
       print(
"<b>Template Error:</b> $msg<br>\n");
    }



?>

Salu2!
__________________
WebDesignSite
Diseño Web - Altas Buscadores Gratis - Intercambio de Banners - Foros de soporte
http://webdesignsite.bolhost.com/