Foros del Web » Programando para Internet » PHP »

Función simple que no funciona

Estas en el tema de Función simple que no funciona en el foro de PHP en Foros del Web. Foreros, programé una función que sirve para obtener resultados de una BD y meterlos en un array para luego retornar este array. Trabajo con con ...
  #1 (permalink)  
Antiguo 11/10/2010, 15:32
de-troit
Invitado
 
Mensajes: n/a
Puntos:
Función simple que no funciona

Foreros, programé una función que sirve para obtener resultados de una BD y meterlos en un array para luego retornar este array.

Trabajo con con clases, tengo otras funciones para conectarme e ingresar a la BD, así que tengan en cuenta que ya estoy conectado y dentro de la BD, la función es la siguiente:

Código PHP:
Ver original
  1. //paso como parámetro la consulta: $query
  2. public function getReg($query) {
  3.     if($result = mysql_query($query)) {
  4.         $array = mysql_fetch_assoc($result);
  5.            
  6.         for($i = 0 ; $i < sizeof($array) ; $i++) {
  7.           /*Esta es la parte que no funciona, sizeof(array) me retorna
  8.             bien la dimension del array, pero al querer mostrarlo con echo
  9.             no me lo muestra:*/
  10.  
  11.             echo $array[$i];
  12.         }
  13.            
  14.         return $array;
  15.     }
  16.        
  17.     else return 0;
  18. }

Lo curioso es que si retorno este array y lo paso de PHP a Javascript y lo muestro desde JS de la forma document.write(array[i]), sí muestra los valores, lo que me hace pensar que a función NO está mala.

No sé cuál es el problema, qué estoy haciendo mal?
PDTA: Los otros métodos no están mal, estoy 100% seguro, ya que en otras ocasiones funcionan perfectamente.

Saludos!
  #2 (permalink)  
Antiguo 11/10/2010, 15:37
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Función simple que no funciona

has un print_r($array) y ve que te devuelve?? para ver si te esta dando el valor cuando haces el echo que te muestra??
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 11/10/2010, 15:54
de-troit
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Función simple que no funciona

Hola Carlos, con echo no muestra nada, absolutamente nada. Probé con print_r($array) y ahí si me muestra la esctructura del array.

Upps! creo que descubrí el problema, si no me equivoco el array retornado por la función mysql_fetch_assoc no permite acceder al array por índice numérico, si no que solo por medio de un índice string, en cambio, mysql_fetch_array si permite ambos, probaré y te (les) cuento.
  #4 (permalink)  
Antiguo 11/10/2010, 16:06
de-troit
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Función simple que no funciona

Efectivamente ése era el problema, está solucionado! Gracias por la ayuda, sin ver la estructura del array no me hubiera dado cuenta.

Ahora por qué si me lo mostraba al pasarlo a JS?
Porque en PHP recorría el array con foreach:

Código PHP:
Ver original
  1. public function toJS($array, $name) {
  2.         $i = 0;
  3.         echo "\n<script type='text/javascript' language='javascript'>\n\tvar ".$name." = [];\n";
  4.         foreach($array as $value) {
  5.             echo "\t".$name."[".$i."] = '".$value."';\n";
  6.             $i++;
  7.         }
  8.        
  9.         echo "</script>\n";
  10.     }

En donde foreach recorre todo el arreglo, no estaba usando una variable numérica $i como índice directamente (lo hacía la función por medio de $value), y bueno, si ves el código, como salida para poder rescatar el array en JS, le daba a este la forma nombre[indice] = valor, en donde "índice" si lo especificaba con una variable $i numérica, era por eso que si podía acceder de la forma array[i] en JS.

Tengo todas las dudas aclaradas, muchas gracias nuevamente! Era una tontera hehehe, saludos! :D hehehe

Etiquetas: simple
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 19:00.