Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

PHP OO Problema con Clase, Funcion y BD

Estas en el tema de Problema con Clase, Funcion y BD en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola Les cuento un problema, no manejo PHP OO pero estoy manipulando una clase y me esta dando errores. Yo tengo mi archivo de conexion ...
  #1 (permalink)  
Antiguo 05/04/2012, 20:30
Avatar de nicolyto77  
Fecha de Ingreso: marzo-2007
Ubicación: Buenos Aires
Mensajes: 782
Antigüedad: 17 años, 1 mes
Puntos: 12
Pregunta Problema con Clase, Funcion y BD

Hola

Les cuento un problema, no manejo PHP OO pero estoy manipulando una clase y me esta dando errores.

Yo tengo mi archivo de conexion a la base de datos: Configuracion.php

Tengo una clase en PHP que se encarga de manejar plantillas: Plantilla.php

Y luego tengo la pagina de ejemplo que uso donde aplico la plantilla y la conexion a la BD: myUser.php



En el fichero de la clase Plantilla.php tengo algo como esto:

Código PHP:
require_once('Configuracion.php');

class 
Plantilla {
    function 
plantilla($template_file){
        
$this->tpl_file 'directorio/' $DIR '/' $template_file '.tpl';
    }

Bueno, la cuestion es que yo necesito es que lea la plantilla desde el directorio (dinamico) que hay en la variable $DIR (La cual se encuentra en el fichero de Configuracion que incluyo arriba) pero que logicamente no lee.

Lo mas cercano que logre fue incluir el fichero dentro de la funcion asi:

Código PHP:
class Plantilla {
    function 
plantilla($template_file){
        require_once(
'Configuracion.php');
        
$this->tpl_file 'directorio/' $DIR '/' $template_file '.tpl';
    }

Y lo lee bien. Pero el problema me surge cuando luego yo necesito usar nuevamente el fichero Configuracion.php para obtener otras variables desde el fichero myUser.php

Como que incluyendo el fichero ahi dentro de la clase solo me lo toma alli dentro, y cuando preciso volverlo a incluir en otros ficheros el archivo de Configuracion.php, me da error:

Código:
Notice: Undefined variable: _DIR in C:\...

Fatal error: Maximum function nesting level of '100' reached, aborting! in C:\...
Quizas no me sepa explicar bien, pero resumiendo, lo que preciso es poder usar mis variables del fichero Configuracion.php dentro de la clase Plantilla.php, y a la vez, en todos los ficheros que use la clase, tambien poder usar las variables de Configuracion.php sin que me de error

Gracias por todo ! Saludos
__________________
CabaSoft Networks

Última edición por nicolyto77; 05/04/2012 a las 20:42
  #2 (permalink)  
Antiguo 05/04/2012, 21:39
Avatar de elarrieux  
Fecha de Ingreso: abril-2012
Ubicación: Uruguay
Mensajes: 67
Antigüedad: 12 años, 1 mes
Puntos: 26
Respuesta: Problema con Clase, Funcion y BD

Hola!

Podrias mostrarnos el codigo de configuracion.php?

Sds.
  #3 (permalink)  
Antiguo 05/04/2012, 22:08
Avatar de nicolyto77  
Fecha de Ingreso: marzo-2007
Ubicación: Buenos Aires
Mensajes: 782
Antigüedad: 17 años, 1 mes
Puntos: 12
Respuesta: Problema con Clase, Funcion y BD

Holas

Gracias por responder

El de configuracion solo tiene esto:

Código PHP:
$nnb_host "localhost";

$nnb_user "root";

$nnb_password "*****";

$nnb_data "demo";

$CONEXION = @mysql_connect($nnb_host$nnb_user$nnb_password) or die('No se puede conectar con la base de datos');

$YEAH = @mysql_select_db($nnb_data$CONEXION) or die('No se puede trabajar con la base de datos');

$INFO = @mysql_query("SELECT * FROM nnb"$CONEXION) or die('Error en la consulta !');

$_DIR mysql_fetch_assoc($INFO);

$DIR $_DIR['directory'];

// Copyrights //

$COPY "Algunos derechos registrados &copy; 2011 - <strong>NNB</strong>"
Digamos, dentro de la tabla nnb yo tengo mas informacion ademas del directorio. Entonces quizas en la pagina myUser.php quiero usar otros datos, pero cuando hago el require_once('Configuracion.php'); ya me da ese error que mencionaba anteriormente.

Y si no lo pongo, no hay problema, se muestra perfectamente, aunque sin poder usar las variables de ese archivo... Cosa que veo mal y necesito corregir.

Gracias y saludos nuevamente
__________________
CabaSoft Networks
  #4 (permalink)  
Antiguo 06/04/2012, 02:36
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Problema con Clase, Funcion y BD

Que tal nicolyto77,

Te sugiero que leas la documentación de php y veas como funciona lo que quieres utilizar http://php.net/manual/en/function.include.php.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 06/04/2012, 07:44
Avatar de nicolyto77  
Fecha de Ingreso: marzo-2007
Ubicación: Buenos Aires
Mensajes: 782
Antigüedad: 17 años, 1 mes
Puntos: 12
Respuesta: Problema con Clase, Funcion y BD

Gracias masterpuppet !

Parece una tonteria, pero me hiciste volver a revisar la funcion hasta sacarle el jugo y pude corregir el problema !

Pero, ahora me viene otro tema... No se que sucede con la plantilla, ya que yo le hago un die(); al error para ver hasta donde llega el problema y me encuentro con que la funcion de leer la plantilla le llegan las mismas rutas hacia distintos archivos pero uno no los lee y el otro si, cuando las rutas son correctas y los dos ficheros existen:

Código PHP:
$this->tpl_file 'directorio/' $_DIR '/' $template_file '.tpl'
Yo mas adelante le hago un die($this->tpl_file); para ver la ruta de la plantilla a cargar, y en ambos casos figuran ficheros validos y existentes.

En el raiz de mi sitio cargo la plantilla por ejemplo en el fichero register.php asi:

Código PHP:
<?php
    
include_once("template.php");
    
$Contenido=new Plantilla("register");
    
$Contenido->asigna_variables(array(
                    
"w_register_msg" => "Registrate Gratis en la Web"
                    
));
    
$ContenidoString $Contenido->muestra();
    echo 
$ContenidoString;
?>
Ahora, dentro del directorio de las plantillas html tengo el fichero register.tpl en el cual muestro el html con esas variables (w_register_msg) y todo va bien.

Código HTML:
Ver original
  1. <body><p>{w_register_msg}</p></body>

Y funciona perfecto! En el die($this->tpl_file); me muestra el directorio perfectamente: directorio/14251/register.tpl

Ahora, quiero cargar otra plantilla, pero en vez de estar en el raiz del sitio, esta en otra carpeta, ya que intenta ser un bloque aparte:

/bloques/hello.php

Y esta todo igual que en el register.php salvo el path hacia los ficheros, ya que esta nivel por encima:

Código PHP:
<?php
    
include_once("../template.php");
    
$Contenido=new Plantilla("hello");
    
$Contenido->asigna_variables(array(
                    
"w_hello" => "Hola Mundo !!!"
                    
));
    
$ContenidoString $Contenido->muestra();
    echo 
$ContenidoString;
?>
Y en el directorio tengo tambien su respectivo directorio/14251/hello.tpl donde muestro la variable en php como antes:

Código HTML:
Ver original
  1. <body><p>{w_hello}</p></body>

Pero en este caso, si bien el die($this->tpl_file); me muestra la ruta correctamente, la mencionada arriba y existe tambien, pero me da error asi:

Código:
Warning: fopen(directorio/14251/hello.tpl) [function.fopen]: failed to open stream: No such file or directory in C:\...
Ahora me quede sorprendido... No se donde estoy fallando, a ver si me pueden dar una manita y soluciono esto que me tiene despierto de hace dias

Gracias nuevamente, un saludon
__________________
CabaSoft Networks
  #6 (permalink)  
Antiguo 06/04/2012, 08:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problema con Clase, Funcion y BD

El problema es ese, al cambiar de directorio y al no usar rutas absolutas el código va a leer a partir del directorio donde estés, es mejor que uses una ruta absoluta a tus plantillas para que no tengas ese problema, de lo contrario vas a tener que estar moviéndote entre directorios usando ../ antes de tu path para cambiar de directorio.

Saludos.
  #7 (permalink)  
Antiguo 06/04/2012, 14:56
Avatar de nicolyto77  
Fecha de Ingreso: marzo-2007
Ubicación: Buenos Aires
Mensajes: 782
Antigüedad: 17 años, 1 mes
Puntos: 12
Respuesta: Problema con Clase, Funcion y BD

Muchas gracias GatorV !

Ya lo solucione, te agradezco mucho la ayuda.

Ademas tenia otros errores que me fui dando cuenta mientras me basaba en este error.

Un saludo!
__________________
CabaSoft Networks

Etiquetas: bd, clase, class, funcion, php
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 04:29.