Ver Mensaje Individual
  #9 (permalink)  
Antiguo 19/11/2011, 09:38
Avatar de Nemutagk
Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: Error de logica? Listar cd con canciones

es muy sencillo, checando tu código estas guardando todas las canciones de todas las peticiones en una variable array, por lo tanto cada vez que haces una nueva petición se agregan las canciones a las peticiones anteriores

Código PHP:
Ver original
  1. class miclase {
  2.      private $canciones = array();
  3.  
  4.      public function getCanciones() {
  5.           //código SQL, etc...
  6.  
  7.           //lo que haces aquí es agregar un nuevo item al array
  8.           $this->canciones[] = $cancion;
  9.           //Por lo tanto si ya tienes por ejemplo 10 canciones cuando vuelvas a
  10.           //hacer otra petición la siguiente canción será el item 11 y así sucesivamente
  11.  
  12.           //En estos casos es mejor una variable local
  13.           //Así no importa las peticiones, siempre estará vacía la variable canciones
  14.           $canciones = array();
  15.           while($cancion = mysql_fetch_assoc($sq)) {
  16.                     $canciones[] = $cancion;
  17.           }
  18.  
  19.           return $canciones;
  20.      }
  21. }

ahora, no se porque "$this->canciones" la tienes como variable global (dentro de la clase), a menos que la uses en otro método no le veo sentido, en todo caso la variable debería ser local para no tener estos problemas

Cita:
por que en el de los discos no me guarda los registros anteriores, y en el de las caniones si ?
Muy sencillo, porque solo haces una petición de los discos disponibles en cambio, las canciones haces una petición por cada disco, si haces mas de 1 petición a los discos, tendrás el mismo problema...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)