Foros del Web » Programando para Internet » PHP »

Devolver array desde funcion

Estas en el tema de Devolver array desde funcion en el foro de PHP en Foros del Web. tengo una funcion que devuelve un array y este luego lo recorro con un foeach, EL PROBLEMA ES QUE SOLO ME ESTA DEVOLVIENDO UN REGISTRO ...
  #1 (permalink)  
Antiguo 06/12/2011, 14:04
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Pregunta Devolver array desde funcion

tengo una funcion que devuelve un array y este luego lo recorro con un foeach, EL PROBLEMA ES QUE SOLO ME ESTA DEVOLVIENDO UN REGISTRO

NECESITO AYUDA URGENTE

function showResult(){
connect();
$result = mysql_query('SELECT * FROM poll');
$row = mysql_fetch_array($result);

return $row;
}
$player = showResult();
foreach($player as $line){
echo $line['name'].'<br>';
}
  #2 (permalink)  
Antiguo 06/12/2011, 14:17
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Array

Tienes sentido, porque de ninguna manera estás iterando todos los resultados para devolverlos en un array, solo devuelves el primero resultado del fetching.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por GatorV; 06/12/2011 a las 15:51
  #3 (permalink)  
Antiguo 06/12/2011, 17:41
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Devolver array desde funcion

Pateketrueke ya te explicó el error, ahora te explico que para hacer que funcione, necesitas, dentro de tu función, iterar cada resultado y agregarlos a un array, el cual devolverás con un return para posteriormente hacer el manejo como tú lo haces ahora.

Hace un tiempo hice una función muy sencilla que lo que hace es pasar cada iteración a un objeto, de forma que en lugar de usar por ejemplo $var['campo'], se usa $var->campo. En fin, hay muchas posibilidades, pero aquí debes usar tus habilidades

Saludos
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #4 (permalink)  
Antiguo 06/12/2011, 18:41
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Devolver array desde funcion

no he comprendido mucho me gustaria ver algun ejemplo modificando el codigo que envio esto no le tomaria mas de un minuto y serian mas precisos
  #5 (permalink)  
Antiguo 06/12/2011, 18:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Devolver array desde funcion

Código PHP:
$salida es_un_array();

mientras ($row mysql_fetch_array($result) {
  
$salida []= $row;
}
 
regresas $salida// y no $row 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 06/12/2011, 18:50
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: Devolver array desde funcion

lo que neesitas es hacer un bucle, ya que como te indico pateketrueke no estas iterando sobre todos los resultados, una posible solucion
Código PHP:
Ver original
  1. function tuFuncion() {
  2.     $query = mysql_query(/*tu consulta*/) or die(mysql_error());
  3.     while($row = mysql_fetch_array($query)) {
  4.         $data[] = $row;
  5.     }
  6.     return $data
  7. }
prueba y nos comentas
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #7 (permalink)  
Antiguo 06/12/2011, 19:04
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Devolver array desde funcion

parece casi funcionar solo que me devuelve solo caracteres de cara registro no completo

function showResult(){

connect();
$query = mysql_query('SELECT * FROM poll');

while($row = mysql_fetch_array($query)) {
$data[] = $row['name'];
}
return $data;
}
  #8 (permalink)  
Antiguo 06/12/2011, 19:05
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Devolver array desde funcion

es como si fuera la primera letra de cada nombre
  #9 (permalink)  
Antiguo 06/12/2011, 19:06
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Devolver array desde funcion

$player = showResult();
foreach($player as $line){
echo $line['name'].'<br>';
}
  #10 (permalink)  
Antiguo 06/12/2011, 19:15
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: Devolver array desde funcion

amigo el echo es guardar el array $row que contiene todos los resultados de tu consultas en un array $data de tal manera que cada item de data sea el registro de tu db quedando algo como esto
Cita:
array(
0 => array('campo' => 'valor1'),
1 => array('campo' => 'valor2')
)
de tal manera que si quieres acceder al segundo registro solo tengas que pasar el indice
Código PHP:
echo $data[1]['campo']; 
en el ejemplo te imprimiria valor2, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #11 (permalink)  
Antiguo 07/12/2011, 10:58
 
Fecha de Ingreso: junio-2010
Mensajes: 73
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Devolver array desde funcion

gracias a todos que aportaror solucion guiandome de su ayuda al fin pude salir a camino, dejo el codigo aca para compartirlo con los tengan alguna duda al respecto


function showResult(){

connect();
$query = mysql_query('SELECT * FROM poll where score = 0');

while($row = mysql_fetch_array($query)) {
$data[] = $row;

}
return $data;
}


foreach($player as $line){
echo $line['name'].'<br>';
}

Etiquetas: devolver, funcion, mysql, registro
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 20:10.