Foros del Web » Programando para Internet » PHP »

Ayuda con class:template.ini

Estas en el tema de Ayuda con class:template.ini en el foro de PHP en Foros del Web. hola amigos del foro alguien me puede salvar estoy usando el class.template.ini lo baje de php classes. y Me da un error al ejecutar el ...
  #1 (permalink)  
Antiguo 22/03/2004, 10:08
 
Fecha de Ingreso: marzo-2004
Mensajes: 40
Antigüedad: 20 años
Puntos: 0
Ayuda con class:template.ini

hola amigos del foro alguien me puede salvar estoy usando el class.template.ini lo baje de php classes.

y Me da un error al ejecutar el template ,


el procedimiento que hago es recibir un arreglo externo pasado de otras funciones y lo trato de ejecutar y no funciona ,


ej: este es el codigo


include('class.template.inc');
require('Clientes.php'); => es una clase que yo cree, funciona bien

$test_var = 'una variable';

$page_title = 'titulo';


//constructor de la clase cliente

$a = new Clientes();


$arreglo = array();



// recibo el arreglo => aqui yo creo que esta el problema

//me da este error = <b>Warning</b>: Variable passed to each() is not an array or object in 13\class.template.inc</b> on line <b>126</b><b>C:\templateclass-2000-08-


$arreglo = $a->obtiene_datos();




$tpl = new template;

$tpl->load_file('complete', 'pagina.html');

$tpl->parse_loop('complete', 'arreglo');

$tpl->pprint('complete', array('test_var','page_title',));


?>


pero si yo genero un ciclo con el arreglo y imprimo los datos este imprime bien;




si yo genero un arreglo dentro del template funciona
ej:

$table_rows = array();
$table_rows[] = array( 'column_1' => 'This is column one on row one!',
'column_2' => 'This is column two on row one!',
'column_3' => 'This is column three on row one!'
);

$table_rows[] = array( 'column_1' => 'This is column one on row two!',
'column_2' => 'This is column two on row two!',
'column_3' => 'This is column three on row two!'
);

funciona correcto ;

entonces la solucion seria :

desarmar el arreglo que recibo y armarlo como el ejemplo que funciona
de acuerdo al template,

o enviar el arreglo desde las otras clases, protegido para que no pierda los indices que trae.

o que me digas como se ocupa correctamente la asignacion del arreglo : $arreglo = $a->obtiene_datos();



Espero una respuesta si tienes una solucion


saludos Felipe C de Santiago de chile.

Última edición por felipec; 22/03/2004 a las 10:24
  #2 (permalink)  
Antiguo 22/03/2004, 10:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En PHP .. los nombres de los archivos no suelen decir nada ..

"class.template.ini"

Alguien puede crear ese nombre de archivo para algo totalmente diferente. Lo que debes indicar cuando expongas un problemas y comentes que te basas en el uso de tal o cual cosa sería la versión/nombre completo de lo que uses y/o no estaría de más el link de donde te lo bajastes por si alguien desea probarlo para ayudarte.

Por otro lado si tu "Clientes.php" es un objeto con sus métodos própios .. deberías poner el código completo del mismo ..

Pon el código completo de los archivos que uses y el "padre" donde los llamas ..Indica los errores aparte del código ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 22/03/2004, 10:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Mensaje original de: felipec

tienes razon pero lo que necesito saber no es algo tan profundo

: lo exprese mal al referirme al template especifico :


en terminos mas faciles lo que necesito saber es

como usar un arreglo enviado de una clase x. que yo genere,

no inporta el template que pueda utilizar lo que me interesa es que el arreglo lo pueda correr y mostrar con sus indices y claves, ya que es de extrema urgencia ,

me da el error que la variable pasada al each no es un arreglo

pero yo al imprimir con el foreach funciona bien ;


necesito saber como puedo sacar los valores del arreglo y pasarlo a otro sin perder la forma que tiene el arreglo


ya que si genero un arreglo dentro del codigo php este corre bien.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 22/03/2004, 10:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues si pones el código (insisto) de la classe que tu creastes podremos ver que hacen los métodos que implementastes .. como por ejemplo ese obtiene_datos() .. No vemos que devuelve la llamada de ese método ..

Tampoco se vé ese "each" que comentas como lo usas ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 22/03/2004 a las 10:31
  #5 (permalink)  
Antiguo 22/03/2004, 11:46
 
Fecha de Ingreso: marzo-2004
Mensajes: 40
Antigüedad: 20 años
Puntos: 0
por favor si alguien lo sabe , responda rapido ok.



este es el php que utiliza el template y la clase que yo cree"Clientes.php"

<?php

include('class.template.inc');
require('Clientes.php');

$test_var = 'Hello world!';
$page_title = 'Template Class';


$a = new Clientes();


$arreglo = array();

$arreglo = $a->obtiene_datos(); => aqui yo creo que

esta el error : me da el siguiente error : variable pasada al each () no es un arreglo ;


debe ser al each que utiliza el template class;


$tpl = new template;
$tpl->load_file('complete', 'pagina.html');
$tpl->parse_loop('complete', 'arreglo');
$tpl->pprint('complete', array('test_var','page_title'));

?>




esta es la clase cliente que yo cree.


<?php

class Clientes {

var $id_cliente ;

var $record = array();


// constructor

function Clientes() {
}


// funcion que llamo desde el php


function obtiene_datos(){

require ("class.mysql.php"); => clase mysql funciona ok.

$miconexion = new DB("","","");

$miconexion->query("SELECT * FROM clientes");

return $miconexion->fetchRow();

}

}

?>



este es el template, de aqui lo baje

http://mediate.mirrors.phpclasses.or...ackage/54.html



y la clase mysql que hace referencia Cliente la baje de la misma pagina


pero todo esto funciona bien




y aqui esta el html por si acaso




<HEAD>
<TITLE>{page_title}</TITLE>
</HEAD>
<BODY>


<P ALIGN="CENTER">{test_var}</P>

<TABLE BORDER="0" BGCOLOR="#000000" STYLE="background-color: #000000; font-family: monospace; font-size: 10pt" CELLSPACING="1" ALIGN="CENTER">
<TR>
<TH BGCOLOR="#DDDDDD">Nombres de Clientes</TH>
<TH BGCOLOR="#DDDDDD">apellidos</TH>
<TH BGCOLOR="#DDDDDD">Id</TH>
<TH BGCOLOR="#DDDDDD">sexo</TH>
<TH BGCOLOR="#DDDDDD">coreo</TH>

</TR>

<LOOP NAME="arreglo">
<TR>
<TD BGCOLOR="#DDDDDD">{nombres}</TD>
<TD BGCOLOR="#DDDDDD">{apellidos}</TD>


</TR>
</LOOP NAME="arreglo">


</TABLE>




</BODY>
</HTML>
  #6 (permalink)  
Antiguo 22/03/2004, 12:26
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Es que parece que obtiene_datos() solo devuelve un registro. Y puede que parse_loop() necesite un array con todos los registros.

Asi que en obtiene_datos() deberias devolver un array con todos los registros, recorriendolos con un bucle.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 22/03/2004, 12:41
 
Fecha de Ingreso: marzo-2004
Mensajes: 40
Antigüedad: 20 años
Puntos: 0
tienes razon el loop muestra un solo registro

pero al imprimir con un bucle foreach me imprime todos los registros..

y el :

return $miconexion->fetchRow(); es solo el nombre de la funcion de mysql pero devuelve el arreglo con todos los valores..

yo creo que tendria que sacar los valores del arreglo original y pasarlos a otro

"Pero no se como hacerlo sin perder los indices y las claves ".


si saben envien una ayudita
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 01:56.