Comunidad de diseño web y desarrollo en internet online

Array se completa entero con el último dato

Citar            
MensajeEscrito el 13 Jul 2007 09:27 am
Supongo que este problema es debido a algún cambio con php 5 porque lo tenía funcionando y ahora no funciona. Resulta que un array se va llenando con las filas provenientes de una consulta a una base de datos, pero el problema es que siempre rellena todos los registros con la última fila, he tenido que hacer unas modificaciones en el código para sacar el trabajo pero me gustaría conocer la causa de esto, me imagino que debe tener algo que ver con los tipos y con que cada registro sea un elemento de una clase (hecha en php 4) porque si no no me explico

Código :

function obtener($id_tipo = null){
      $sql = 'select * from tipo_dominios ';
      if($id_tipo != null){
         $sql .= " where id_tipo = $id_tipo";
      }//die($sql);
      $array = $this->CONEXION->query($sql);
      $lin = new CTipo_dominio();
    while($rs = $this->CONEXION->assoc($array))
    {
       $lin->cargarDatos($rs);
   $array_lineas[] = $lin;
    }
    return $array_lineas;
   }
las funciones query() y assoc() son estas (esta parte de código no era mío)

Código :

function query($par_sql){
         $array = mysql_query($par_sql,$this->manejador) 
            or die(mysql_error());//MANEJADOR LLEVA LA CONEXIÓN
         return $array;
}

Código :

function assoc($par_array){
         return mysql_fetch_assoc($par_array);
      }
he ido revisando el código con echo y todo lo hace bien menos que, justo cuando haces $array_lineas[] = $lin; ese $lin se mete en todos los registros que ya había además de añadirse....

Espero que me puedan ayudar a conocer la razón del problema, muchas gracias y un saludo.
P.D: Siento haber metido un post tan largo... ¬¬

Por Yranac

421 de clabLevel



Genero:Masculino  

Lugo, Galicia

firefox
Citar            
MensajeEscrito el 13 Jul 2007 02:24 pm

Código :

    while($rs = $this->CONEXION->assoc($array))
    {
       $lin = new CTipo_dominio();
       $lin->cargarDatos($rs);
       $array_lineas[] = $lin;
    }

Tal vez con eso. :wink:

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 13 Jul 2007 03:20 pm
Oh, muchas gracias perfecto, ¿el único problema es por no tener la varible declarada? pues mira que probe cosas, declaré $array_lineas, utilicé un indice $array_lineas[$i], declaré incluso $rs y parece que lo único que no probé fue eso :lol: :lol: muchas gracias de verdad, un saludo.

Por Yranac

421 de clabLevel



Genero:Masculino  

Lugo, Galicia

firefox
Citar            
MensajeEscrito el 13 Jul 2007 03:35 pm
El problema es que si no creabas una nueva instancia, estabas guardando en el Array puras referencias al mismo objeto. Al crear una nueva instancia, cada elemento del array es un nuevo objeto e independiente de los anteriores.

saludos

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 13 Jul 2007 03:47 pm
(y) muchas gracias, seguimos aprendiendo php 5 :wink:

Por Yranac

421 de clabLevel



Genero:Masculino  

Lugo, Galicia

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.