Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   Como llamar a una funcion dos veces en una misma pagina (http://www.forosdelweb.com/f68/como-llamar-funcion-dos-veces-misma-pagina-575770/)

kotosh 14/04/2008 07:28

Como llamar a una funcion dos veces en una misma pagina
 
Tengo una clase (DataGrid), la misma, que tengo necesidad de llamarla dos o mas veces veces en la misma pagina, pero me sale este error:

Fatal error: Cannot redeclare listadogrid() (previously declared in F:\Apache\v2\erp\Controles\DataG\GridFunciones.php :5) in F:\Apache\v2\erp\Controles\DataG\GridFunciones.php on line 21

Alguien podria darme alguna idea para no ver este conflicto?

Observacion: Si creo el objeto una vez funciona.
Gracias

usermax 14/04/2008 07:37

Re: Como llamar a una funcion dos veces en una misma pagina
 
Claro, no puedes incluir una clase dos veces. POr eso PHP te está diciendo que no la redeclares.

Pero igualmente no tiene sentido.
EN vez de incluir la clase dos veces, inicia dos objetos así

$objeto1 = new DataGrid;
$objeto2 = new DataGrid;

Y ya tienes dos objetos que cuentas con todas las funciones de la clase y con variables independientes.
Esa es la ventaja de trabajar con POO (programación orientada a objetos).-

SAludos

usermax 14/04/2008 07:39

Re: Como llamar a una funcion dos veces en una misma pagina
 
Ahh ademas estuve viendo el error y no es de la reclaración de una clase, sino más bien de una funcíón.

Tampoco hace falta incluir una funcion dos veces (no se puede)... para qué necesitas eso, si lo explicas podremos exlicarte cuál es la forma correcta de hacerlo.

Saludos

kotosh 14/04/2008 08:03

Re: Como llamar a una funcion dos veces en una misma pagina
 
Tienes razon USERMAX, creando dos objetos se soluciona el problema:

$objeto1 = new DataGrid;
$objeto2 = new DataGrid;

Sin embargo surge otro: Esta clase por ser un data grid, hace una consulta a una DB, por lo cual como parametro envio el SQL, sin embargo cuando creo dos objetos dentro de una misma pagina se confunden las variables y al final me salen dos grid con la misma consulta.

Se requiere mostrar en una sola pagina dos GRID con consultas a diferentes tablas.

Nota: cuando creo los objetos envio los parametro SQL particulares
$obj1 = new DataGrid();
$obj1->DataView($Sql1);

$obj2 = new DataGrid();
$obj2->DataView($Sql2);

Espero puedan darme alguna idea.
Gracias

kotosh 16/04/2008 17:23

Re: Como llamar a una funcion dos veces en una misma pagina
 
alguien q me de alguna pista?

mgusdl 17/04/2008 01:14

Re: Como llamar a una funcion dos veces en una misma pagina
 
Y si eliminas el objeto, ya sea mediante alguna propiedad o "$objeto = null", y lo vuelves a crear?

kotosh 17/04/2008 15:33

Re: Como llamar a una funcion dos veces en una misma pagina
 
No puedo hacer eso, ya que deseo que los dos grid se muestren en simultaneo, pero ingresando a diferentes tablas. En otras palabras reutilizando la clase GRID.

El problema consiste en que la variable $SQL de un objeto se convina con la misma variable del otro objeto y al final tengo dos grid que accden a la misma tabla.

GatorV 17/04/2008 15:42

Re: Como llamar a una funcion dos veces en una misma pagina
 
Hola kotosh,

El problema es de tu clase DataGrid, ya que si esta mezclando los valores, entonces no esta encapsulada.

Contacta al autor de la clase y que verifique como está programada.

Saludos.

Tema trasladado a PHP Orientado a Objetos.

kotosh 17/04/2008 21:54

Esta es mi clase.
 
Yo soy el autor de dicha clase, pero soy novato en esto...ya que estoy acostumbrado a la programación estructurada, pero gracias por el dato...tendre que aprender como "encapsular" mis variables en PHP.

Mi clase en sitesis tiene esto:

class Grid{
function DataGrid($Sql, $DemasParametros){
//todo el cofigo para que funcione mi clase...
// (reordenamiento de columnas, paginador, ancho y altura, buscador,etc)
}
}

//------- Pagina.php--------------
//Creo mi objeto 1:
$obj3 = new Grid();
$obj3->DataGrid($Sql,$DemasParametros);

//Creo mi objeto 2:
$obj4 = new Grid();
$obj4->DataGrid($Sql,$DemasParametros);

Soy enemigo de los que esperan recibir todo servido, por lo cual me dedicare a investigar mas sobre POO, sin embargo si por alli alguien me da una mano, lo agradecere mucho, ya que estoy contra el tiempo. Gracias.

GatorV 18/04/2008 08:03

Re: Como llamar a una funcion dos veces en una misma pagina
 
Sin saber la estructura de tu clase, es un poco complicado que te pueda asesorar en como podrías buscar ese encapsulamiento.

Saludos.


La zona horaria es GMT -6. Ahora son las 10:34.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.