Bueno, tengo una clase llamada reuniones. Esta clase me guarda unos arrays, que se van llenando a medida que el usuario va seleccionando una serie de personas que estan en una tabla.
Al hacer click sobre una persona, se va a una función PHP, que llama a su vez a la clase.
La clase se encuentra en el fichero clase.php y la funcion esta en cuerpo.php
Además, agrego unos datos a modo de prueba al iniciar cuerpo.php
Estoy usando el framework XAJAX, por eso que puedo hacer una llamada a una funcion PHP desde HTML (no me muevan de este foro, pues la pregunta esta relacionada mas con POO a XAJAX)
Problema:
Bueno, al hacer click sobre una persona, envio los parametros necesarios, se hace la consulta sql (comprobado), agrego los resultados a los arrays de la clase. Despues desde esa misma función, leo los arrays con el metodo getEncargados(), pero solo me lee los datos de prueba que coloque, más el último registro que ingrese.
Es decir, si hay una lista de 5 personas, y el usuario hace click en los 5, solo muestra los datos de prueba más el último elemento donde se hizo click.
Se me imagina que el problema ocurre, dado que utilizo la clase dentro una función php, mientras que la clase esta definida en el "encabezado". Pero si declaro la clase dentro de la función, cada vez que se llame a la función estaré generando una nueva instancia de la clase... y por consiguiente, los datos no se guardaran en el array... creo xD
En fin, si pudieran echarme una manito en este tema, se los agradecré muchísimo.
Les dejo el código fuente.
Saludos!
Código PHP:
<?php
class reuniones{
var $codigos = array();
var $telefonos = array();
var $emails = array();
var $nombres = array();
var $a;
function addEncargado($cod_encargado, $telefono, $email, $nombre){
array_push($this->codigos, $cod_encargado);
array_push($this->telefonos, $telefono);
array_push($this->emails, $email);
array_push($this->nombres, $nombre);
/*
$this->codigos[] = $cod_encargado;
$this->telefonos[] = $telefono;
$this->emails[] = $email;
$this->nombres[] = $nombre;
*/
}
function removeEncargado($cod_encargado){
$j=0;
foreach($this->codigos as $cod){
if($cod == $cod_encargado){
array_splice($this->codigos, $j, $j);
array_splice($this->telefonos, $j, $j);
array_splice($this->emails, $j, $j);
array_splice($this->nombres, $j, $j);
}
$j++;
}
}
function getEncargados(){
$cod .= "<table border=3>";
$cod .= "<tr>";
$cod .= "<td>Nombre</td><td>Codigo Encargado</td><td>Teléfonos</td><td>Emails</td>";
foreach($this->codigos as $valor){
$cod .= "<tr>";
$cod .= "<td>" . current($this->nombres) . "</td>";
$cod .= "<td>" . $valor . "</td>";
$cod .= "<td>" . current($this->telefonos) . "</td>";
$cod .= "<td>" . current($this->emails) . "</td>";
$cod .= "</tr>";
next($this->emails);
next($this->nombres);
next($this->telefonos);
}
$cod .= "</table>";
return $cod;
}
} //Fin clase
Código PHP:
require('clase.php');
//instanciamos la clase reuniones
$clase_reuniones = new reuniones();
$clase_reuniones->addEncargado("100","telefono1","email1","nombre1");
$clase_reuniones->addEncargado("101","telefono2","email2","nombre2");
$clase_reuniones->addEncargado("102","telefono3","email3","nombre3");
$clase_reuniones->addEncargado("103","telefono4","email4","nombre4");
Código PHP:
//Desde esta funcion llamo a la clase que ingresa los datos a la clase
// CUERPO.PHP
function agregar_miembro($rut){
$sql = "SELECT * from viewTrabajadores where rut='" . $rut . "'";
$consulta = ejecutar_sql($sql);
$row = mysql_fetch_array($consulta);
static $clase_reuniones;
$clase_reuniones = $GLOBALS["clase_reuniones"];
$clase_reuniones->addEncargado( $row['rut'], $row['telefono'], $row['email'], $row['nombre'] );
$tabla_seleccionados = $clase_reuniones->getEncargados();
echo $tabla_seleccionados;
}