Ver Mensaje Individual
  #7 (permalink)  
Antiguo 20/05/2008, 18:45
pablocasas74
 
Fecha de Ingreso: diciembre-2007
Mensajes: 44
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: problemas con variables estaticas

esto es lo que puse ahora viendo temas similares pero no me funciona cuando llamo al contador desde fuera de la clase, dentro si funciona bien:
este es el codigo en donde funciona bien:
class tablaDinamica{
var $error;
var $esRenderizable;
var $contfila;

function tablaDinamica(){
$this->esRenderizable=true;
}

function codigo($contenido){
//declaracion de contador estatico
static $contador;
$this->contfila=&$contador;


//DESCOMPRESION Y CHEQUEO DE DATOS
$aData=unserialize(base64_decode($contenido));
if(!isset($aData['conexion'])){
$this->error='No se ha especificado la conexión en el módulo tabla dinámica';
return false;
}
if(!isset($aData['sql'])){
$this->error='No se ha especificado la instrucción sql en el módulo tabla dinámica';
return false;
}
$tc=new tipoConexion();
$aDatosCon=$tc->getConexion($aData['conexion']);
$db=conexionGenerica::nuevaConexion($aDatosCon['tipo'],$aDatosCon['host'],$aDatosCon['username'],$aDatosCon['pass'],$aDatosCon['base']);
if(!$db){
$this->error=$db->error;
return false;
}
$query=$db->query($aData['sql']);
if(!$query){
$this->error=$db->error;
return false;
}
//ARMADO DE LA TABLA
$output[]='<table border="1" cellpadding="3" cellspacing="0">';
$output[]='<thead>';
$output[]='<tr>';
$arrayCampos=$tc->getCampos($aData['conexion'],$aData['sql']);
foreach($arrayCampos as $item){
$output[]='<th align="center">'.$item.'</th>';
}
$output[]='</tr>';
$output[]='</thead>';
while($fila=$db->fetch_assoc($query)){
$output[]='<tr>';
$this->contfila++;
foreach($fila as $item){
if(trim($item)!=''){
$output[]='<td align="center">'.$item.'</td>';
}
else{
$output[]='<td align="center">&nbsp;</td>';
}
}
$output[]='</tr>'.$this->contfila;
}
$output[]='</table>';
return implode("\r\n",$output);
}
y esto es parte de lo que pongo al llamarlo desde otra clase:

function enviarProximo(){
$tabladin=new tablaDinamica();
$i=$this->ultimoEnviado;
/*//datos puestos por PHC para prueba
define('NOMBRE_FICHERO1', 'datos-combinado_3-5_PHC.txt');
$fichero1 = fopen(NOMBRE_FICHERO1, 'a');
$x=0;
foreach ($this->dataDin as $indice){
$ahora=date('Y-m-d H:i:s');
fputs($fichero1, "indice del primer array: $x - Ahora: $ahora \n<br>");
foreach ($indice as $n => $valor){
fputs($fichero1, "dataDin:- indice $n Valor: $valor el count de datadin: ". count($this->dataDin)." el valor de i es:$i\n");
}
$x++;
}
fclose($fichero1);
//fin de datos puestos por PHC*/
if(count($this->dataDin)<=$i){
if($this->simulado){
echo 'Envio Terminado<br><hr>';
}
$this->envio->envioFinalizado($this->idEnvio);
}
if(!isset($this->dataDin[$i])){
return false;
}
$contenido=$this->grupo->combinarDatos($this->plantilla,$this->dataDin[$i]);
if($this->simulado){
echo 'Enviado a: '.$this->dataDin[$i]['email'].'<br>';
echo '<br>';
echo $contenido;
echo 'esto es la cantidad de filas:'.$tabladin->contfila;
echo '<hr>';
}

pero no me trae el valor que acumula dentro del primer codigo

perdón si fui confuso al principio!!!