Foros del Web » Programando para Internet » PHP »

Problema con while,mysql y plantillas

Estas en el tema de Problema con while,mysql y plantillas en el foro de PHP en Foros del Web. BUenas El problema que tengo es que yo utilizo una clase para poder utilizar plantillas, concretamente la siguiente: Código PHP: <?php /**************************************************** *                class.plantillas.php * *   Creado por: Gaatake ...
  #1 (permalink)  
Antiguo 28/02/2007, 22:44
 
Fecha de Ingreso: octubre-2005
Mensajes: 11
Antigüedad: 18 años, 6 meses
Puntos: 0
Problema con while,mysql y plantillas

BUenas
El problema que tengo es que yo utilizo una clase para poder utilizar plantillas, concretamente la siguiente:
Código PHP:
<?php
/****************************************************
*                class.plantillas.php
*
*   Creado por: Gaatake
*    Versión: 1
*
****************************************************/
class Plantilla
{
    var 
$_plant_vars = array();
    
    
// La carpeta en la que estan los archivos de las plantillas
    
var $carpeta "plantillas";
    
    
/* Funcion asignar */
    
function asignar($plant_var$valor=null)
    {
        if (
is_array($plant_var)) {
            foreach (
$plant_var as $key => $val) {
                if (
$key != '') {
                    
$this->_plant_vars[$key] = $val;
                }
            }
        }else{
            if (
$plant_var != '') {
                
$this->_plant_vars[$plant_var] = $valor;
            }
        }
    }
    
    
/* Funcion mostrar */
    
function mostrar($nombre_plant)
    {
        if (
$contenido = @file_get_contents($this->carpeta'/' .$nombre_plant)) {
            foreach (
$this->_plant_vars as $plant_var => $valor) {
                
$contenido ereg_replace("{{".$plant_var."}}"$valor$contenido);
            }
            print 
$contenido;
        }else{

            print 
"El archivo de plantilla <strong>" .$nombre_plant"</strong> no existe en la carpeta <strong>" .$this->carpeta"</strong>.";
        }
    }
}
?>
Yo estoy utilizando esa clase de este modo:
Código PHP:
<?php
$contenido 
"Variable normal que obtengo de mysql,etc";
$plantilla->asignar("contenido","$contenido");
?>
y luego en el template por ejemplo index.html pongo {{contenido}} para mostrar $contenido.
Ahora mi problema es el siguiente:
Yo obtengo datos de una base de datos mysql de la forma while($row = mysql_fetch_array($consulta)){} y el tema es que me devuelve muchas cosas, en mi caso yo selecciono el titulo. Concretamente yo quiero que utilizando el sistema de plantillas yo pueda poner en mi index.html
{{contenido}} y me aparezca los resultados de la consulta sql.

espero haberme explicado bien
el script que utilizo es el siguiente:
Código PHP:
<?php
include("class.plantillas.php");
$plantilla = new Plantilla;
$sql3 mysql_query("SELECT titulo FROM $tablareviews WHERE serie='$serie'");
while(
$rew mysql_fetch_array($sql3))
{
    
$contenidos $rew[titulo];
    
$contenido '<tr><td class="Estilo9">'.$contenidos.'</td></tr>';
    
$plantilla->asignar("contenido","$contenido");
}
$plantilla->mostrar("index.html");
?>
Index.html:
Código HTML:
<table>{{contenido}}</table> 
saludos y gracias por responder y ayudar
  #2 (permalink)  
Antiguo 28/02/2007, 23:59
Avatar de carlosmbrizuela  
Fecha de Ingreso: enero-2007
Ubicación: La Plata (Argentina)
Mensajes: 490
Antigüedad: 17 años, 3 meses
Puntos: 1
Re: Problema con while,mysql y plantillas

la clase que manejas no la conozco, pero para pasarle toda la consulta puede ser algo asi:...
Código PHP:
if ($res->numRows() > 0)
  {  
while (
$res->fetchInto($linea))
       {
        
$matriz[]=array('arreglo'=>$linea['el campo que quieras']); 
        }
   
$plantilla->asignar("contenido","$matriz");
  

$matriz[] es el arreglo y siempre se le agrega al final.

Nota: es mas facil, para mi, usar smarty http://smarty.php.net/


saludos y espero que te ayude.


saludos
__________________
http://www.rollermountain.com
  #3 (permalink)  
Antiguo 01/03/2007, 08:04
 
Fecha de Ingreso: octubre-2005
Mensajes: 11
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: Problema con while,mysql y plantillas

desde ya, gracias por la rápida respuesta
ahora, yo como haría para utilizar ese código? ya que al utilizarlo copiando y pegandolo dentro del while($res = mysql_fetch_array($sql3)){Aca puse el codigo que mandaste} me da error:
Fatal error: Call to a member function numRows() on a non-object in on line 30
No se si tendré que establecer alguna variable o algo así, disculpa si la respuesta es muy facil, es que soy bastante torpe en esto xDDDD

saludos
  #4 (permalink)  
Antiguo 01/03/2007, 09:08
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: Problema con while,mysql y plantillas

HOla

Bueno, pues tu codigo inicial no tiene problema, lo unico es que mysql_fetch_array es una funcion de mysql en php que devuelve un arreglo, y por ende no puedes hacer esto

$contenidos = $rew[titulo];

sino deberias hacer esto

$contenidos = $rew[0];

y listo, te deberia funcionar sin problema, suerte.
  #5 (permalink)  
Antiguo 01/03/2007, 12:05
 
Fecha de Ingreso: octubre-2005
Mensajes: 11
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: Problema con while,mysql y plantillas

haciendo lo que tu dices de cambiar
$contenido = $rew['titulo'];
por
$contenido = $rew[0];
me queda totalmente igual.
Me parece que no me expliqué bien:
Yo lo que quiero es que me muestre todos los resultados, no uno solo.
Yo lo que más logré hacer es poniendo el
$plantilla->mostrar("index.html");
dentro del while($rew = mysql_fetch_array($sql3)){}
y ahi me muestra lo siguiente:
snake10[punto]kwikphp[punto]com/reviews/muestra.php
aqui, para mostrar mejor lo que quiero, puse en el index.html:
----------------------
<table>{{contenido}}</table>
----------------------
Como tengo los datos de mysql ahora, me deberia mostrar con eso:
----------------------
Historia
Personajes
----------------------
Pero haciendo como yo lo hago me muestra como ecsta en la direccion que di, es decir, me muestra el index.html cambiandole el valor a {{contenido}}.
No se si ahora me habre explicado bien, como ya dije, soy bastante torpe xDDD

saludos y gracias
  #6 (permalink)  
Antiguo 01/03/2007, 18:50
 
Fecha de Ingreso: octubre-2005
Mensajes: 11
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: Problema con while,mysql y plantillas

Nadie conoce la solución a mi problema?

disculpen que dobleposteo, es que hay post que ya están resueltos en la primera pagina y el mio no lo está y no lo verán muchos

saludos
  #7 (permalink)  
Antiguo 02/03/2007, 12:29
 
Fecha de Ingreso: octubre-2005
Mensajes: 11
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: Problema con while,mysql y plantillas

ninguna respuesta a mi pregunta??
si es imposible hacerlo diganmelo y me olvido del problema
  #8 (permalink)  
Antiguo 05/03/2007, 00:56
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: Problema con while,mysql y plantillas

Hola

Bueno, pues tu codigo funciona perfecto, tal vez es algo de la configuración de tu php que no te deja que funcione bien.

Yo lo subi a un servidor y funciona bien.

Suerte
  #9 (permalink)  
Antiguo 05/03/2007, 00:57
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: Problema con while,mysql y plantillas

Hola

Bueno, pues tu codigo funciona perfecto, tal vez es algo de la configuración de tu php que no te deja que funcione bien pues primero lo probe localmente en mi equipo pero no me funcionaba correctamente.

Sin embargo lo subi a un servidor y funciona bien.

Suerte
  #10 (permalink)  
Antiguo 05/03/2007, 22:39
Avatar de carlosmbrizuela  
Fecha de Ingreso: enero-2007
Ubicación: La Plata (Argentina)
Mensajes: 490
Antigüedad: 17 años, 3 meses
Puntos: 1
Re: Problema con while,mysql y plantillas

$contenidos = $rew[titulo]; asi no, es asi $contenidos = $rew['titulo']; te faltaron las comillas.

saludos
__________________
http://www.rollermountain.com
  #11 (permalink)  
Antiguo 05/03/2007, 23:18
 
Fecha de Ingreso: abril-2006
Ubicación: Colombia
Mensajes: 648
Antigüedad: 18 años
Puntos: 3
Re: Problema con while,mysql y plantillas

Hola

Pues tanto con $rew[0] como con $rew['titulo'] funciona perfecto, debe ser algo del php, pues como lo mencione antes lo subi a un servidor y funciono de maravilla.

Suerte
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:56.