Foros del Web » Programando para Internet » PHP »

Como separar datos de un array devuelto por una función.

Estas en el tema de Como separar datos de un array devuelto por una función. en el foro de PHP en Foros del Web. Hola a todos/as Haber si alguien puede echarme una mano, mirar me pasa lo siguiente, tengo una función la cual consulta a una BBDD y ...
  #1 (permalink)  
Antiguo 28/12/2007, 12:09
 
Fecha de Ingreso: diciembre-2007
Mensajes: 113
Antigüedad: 16 años, 4 meses
Puntos: 0
Mensaje Como separar datos de un array devuelto por una función.

Hola a todos/as

Haber si alguien puede echarme una mano, mirar me pasa lo siguiente, tengo una función la cual consulta a una BBDD y devuelve varios datos en un array, esta luego la llamo desde una pagina con su require y demas, pero no se como acceder a un elemento solo del array que me devuelve.

Código de la funcion:

Código PHP:
function num_operario ($id_operario){
$consulta_escribenum mysql_query("SELECT * FROM operarios WHERE id_operario='$id_operario'"); 
while (
$escribe_operario mysql_fetch_array($consulta_escribenum))
{

echo 
$escribe_operario['cod_operario'];
echo 
$escribe_operario['nombre'];
echo 
$escribe_operario['id_operario'];

}
return 
$escribe_operario;

Llamada desde la pagina donde necesito extraer dichos datos:

Código PHP:
num_operario($id_operario['nombre']); 
Pero me devuelve todos los datos.

Tambien he probado a poner array antes de la variable que devuelve la funcion tal que asi:

Código PHP:
return array($escribe_operario); 
Tampoco me vale para nada, se que es un problema de como accede o llamo a la función y creo que es de sintaxis, pero ando un tanto perdido haber si alguien puede aclararme esta duda.


Gracias

Saludos a todos y feliz navidad.
  #2 (permalink)  
Antiguo 28/12/2007, 13:40
Avatar de eft0  
Fecha de Ingreso: junio-2003
Ubicación: Santiago - Chile
Mensajes: 635
Antigüedad: 20 años, 10 meses
Puntos: 9
Re: Como separar datos de un array devuelto por una función.

Hola, de partida la llamada que haces a la funcion es incorrecta, ya que el parametro esperado es un numero entero.

La forma correcta de llamar a la funcion es, por ejemplo:

$data = num_operario(15);

Te quedan los datos en $data, y luego acceder nombre:

echo $data['nombre'];

Esa es la forma correcta de utilizar la funcion.

Saludos.
  #3 (permalink)  
Antiguo 28/12/2007, 15:53
 
Fecha de Ingreso: diciembre-2007
Mensajes: 113
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Como separar datos de un array devuelto por una función.

Cita:
Iniciado por eft0 Ver Mensaje
Hola, de partida la llamada que haces a la funcion es incorrecta, ya que el parametro esperado es un numero entero.

La forma correcta de llamar a la funcion es, por ejemplo:

$data = num_operario(15);

Te quedan los datos en $data, y luego acceder nombre:

echo $data['nombre'];

Esa es la forma correcta de utilizar la funcion.

Saludos.
Hola si te fijas en mi codigo yo mando una variable la cual efectivamente tiene un numero entero a la funcion, y eso que tu me escribes lo he intentado y no anda directamente me escribe todo el array y $data no coge los datos del mismo.

Haber si se te ocurre algo, por que yo ando despistadito con esto la verdad.

Saludos
  #4 (permalink)  
Antiguo 28/12/2007, 17:16
Avatar de vevni  
Fecha de Ingreso: julio-2005
Ubicación: cancun mexico
Mensajes: 598
Antigüedad: 18 años, 9 meses
Puntos: 3
Re: Como separar datos de un array devuelto por una función.

haber si entendi...............

tu haces uso de esta funcion...
Código PHP:
num_operario($id_operario['nombre']); 
y la definicion de esta funcion es esta....

Código PHP:
function num_operario ($id_operario){
$consulta_escribenum mysql_query("SELECT * FROM operarios WHERE id_operario='$id_operario'"); 
while (
$escribe_operario mysql_fetch_array($consulta_escribenum))
{

echo 
$escribe_operario['cod_operario'];
echo 
$escribe_operario['nombre'];
echo 
$escribe_operario['id_operario'];

}
return 
$escribe_operario;


dices que esa funcion la llamas desde otro archivo......
y dices que no puedes acceder a un solo elemento......


por definicion si llamas a esa funcion, necesita un valor numero que en este caso debe ser un entero o un ID, y en base a ese ID hace la consulta.. y pues debe imprimir la informacion correspondiente a ese ID, bueno eso es lo que define tu funcion... te puedo recomendar que no es necesario que uses un while puesto que sabemos que UN ID no se repite, entonces solo estamos buscando un resultado asi que el uso del while no tiene fundamento pues sabemos que solo una fila nos regresa...

Código PHP:
$escribe_operario mysql_fetch_array($consulta_escribenum);
echo 
$escribe_operario['cod_operario'];
echo 
$escribe_operario['nombre'];
echo 
$escribe_operario['id_operario']; 
return 
$escribe_operario
CLARO = PUEDES AGREGAR UN MYSQL_NUM_ROWS PARA SABER SI REGRESO UN VALOR Y ASI EN UN IF PONES SI HAY FILAS PUES IMPRIMES SI NO ENTONCES SALES, SON COMO MEDIDAS DE SEGURIDAD Y EFICIENCIA..


bueno, eso fue en cuanto a tu funcion, jejeje aun no respondo tu pregunta o aun no intento..
dices que esa funcion la quieres usar en otro lado y solamente acceder por datos o por partes.. al array...


entonces imagino yo que en otra parte de tu codigo quieres acceder al array que te genera esa funcion............ mmmm


tu regresas filas, hay q' recordar que lo que regresa mysql_fetch_array son filas del conjunto de resultados, entonces con el uso del while lo que hace es que mueve su puntero interno y hace que se itere entre cada fila, despues de que se termian de recorrer y llega al ginal, devuelve false, entonces el puntero ya esta falso osea no hay datos...

para mover el puntero usa mysql_data_seek o ejecuta de nuevo la consulta.
claro al menos que me ekivoke...


si quieres usar el arreglo usalo normal.....
una ves q' lo inclues dentro del archivo y el regreso de la funcion lo asignas a otra variable esa variable contendra la info, y podras usarla......

$arreglo_datios["campos"];

si no estas contento usa var_dump($variable); para ver si contiene los datos
o print_r();

aunk insisto espero no ekivocarme, creo que el puntero se mueve asi k no se si el while reasigna el puntero de nuevo a su posicion original, esk despues de tu corrida de la funcion, el return lo haces fuera del while me hace suponer que regresas despues de la ultima corrida osea cuando no hay filas...


saludos...
ademas es un poco confusa tu pregunta y veo error en esto

num_operario($id_operario['nombre']);

no puedes pasar eso si lo que esperas es un id... no un nombre!
__________________
Código PHP:
echo"hola mundo ver 1221332143.02";
echo
"cuantos usuarios habran impreso hola mundo en el mundo.!???"
  #5 (permalink)  
Antiguo 28/12/2007, 19:16
 
Fecha de Ingreso: diciembre-2007
Mensajes: 113
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Como separar datos de un array devuelto por una función.

Cita:
Iniciado por vevni Ver Mensaje
haber si entendi...............

tu haces uso de esta funcion...
Código PHP:
num_operario($id_operario['nombre']); 
y la definicion de esta funcion es esta....

Código PHP:
function num_operario ($id_operario){
$consulta_escribenum mysql_query("SELECT * FROM operarios WHERE id_operario='$id_operario'"); 
while (
$escribe_operario mysql_fetch_array($consulta_escribenum))
{

echo 
$escribe_operario['cod_operario'];
echo 
$escribe_operario['nombre'];
echo 
$escribe_operario['id_operario'];

}
return 
$escribe_operario;


dices que esa funcion la llamas desde otro archivo......
y dices que no puedes acceder a un solo elemento......


por definicion si llamas a esa funcion, necesita un valor numero que en este caso debe ser un entero o un ID, y en base a ese ID hace la consulta.. y pues debe imprimir la informacion correspondiente a ese ID, bueno eso es lo que define tu funcion... te puedo recomendar que no es necesario que uses un while puesto que sabemos que UN ID no se repite, entonces solo estamos buscando un resultado asi que el uso del while no tiene fundamento pues sabemos que solo una fila nos regresa...

Código PHP:
$escribe_operario mysql_fetch_array($consulta_escribenum);
echo 
$escribe_operario['cod_operario'];
echo 
$escribe_operario['nombre'];
echo 
$escribe_operario['id_operario']; 
return 
$escribe_operario
CLARO = PUEDES AGREGAR UN MYSQL_NUM_ROWS PARA SABER SI REGRESO UN VALOR Y ASI EN UN IF PONES SI HAY FILAS PUES IMPRIMES SI NO ENTONCES SALES, SON COMO MEDIDAS DE SEGURIDAD Y EFICIENCIA..


bueno, eso fue en cuanto a tu funcion, jejeje aun no respondo tu pregunta o aun no intento..
dices que esa funcion la quieres usar en otro lado y solamente acceder por datos o por partes.. al array...


entonces imagino yo que en otra parte de tu codigo quieres acceder al array que te genera esa funcion............ mmmm


tu regresas filas, hay q' recordar que lo que regresa mysql_fetch_array son filas del conjunto de resultados, entonces con el uso del while lo que hace es que mueve su puntero interno y hace que se itere entre cada fila, despues de que se termian de recorrer y llega al ginal, devuelve false, entonces el puntero ya esta falso osea no hay datos...

para mover el puntero usa mysql_data_seek o ejecuta de nuevo la consulta.
claro al menos que me ekivoke...


si quieres usar el arreglo usalo normal.....
una ves q' lo inclues dentro del archivo y el regreso de la funcion lo asignas a otra variable esa variable contendra la info, y podras usarla......

$arreglo_datios["campos"];

si no estas contento usa var_dump($variable); para ver si contiene los datos
o print_r();

aunk insisto espero no ekivocarme, creo que el puntero se mueve asi k no se si el while reasigna el puntero de nuevo a su posicion original, esk despues de tu corrida de la funcion, el return lo haces fuera del while me hace suponer que regresas despues de la ultima corrida osea cuando no hay filas...


saludos...
ademas es un poco confusa tu pregunta y veo error en esto

num_operario($id_operario['nombre']);

no puedes pasar eso si lo que esperas es un id... no un nombre!
Hola

Efectivamente es como tu has dicho, al final siguiendo las ideas que me has dado, lo he conseguido.

Respecto a esto " num_operario($id_operario['nombre']); ", he de decirte que no era asi, si no que la llamaba num_operario($id_operario);.

He quitado el while y me funciona todo perfecto, la funcion queda de la siguiente manera:

Código PHP:
function sacar_t_operario ($id_operario){
$consulta_escribenum mysql_query("SELECT * FROM operarios WHERE id_operario='$id_operario'"); 
$escribe_operario mysql_fetch_array($consulta_escribenum);
return 
$escribe_operario;

Y la llamo con su reuire correspondiente asi.

Código PHP:
$datos_operario=sacar_t_operario ($id_operario);

echo 
$datos_operario ['nombre']; 
Y asi efectivamente me devuelve solo el nombre del operario.

Muchas gracias por tu aclaración.

Saludos a todos/as.
  #6 (permalink)  
Antiguo 06/04/2008, 09:34
 
Fecha de Ingreso: noviembre-2005
Mensajes: 222
Antigüedad: 18 años, 5 meses
Puntos: 2
Re: Como separar datos de un array devuelto por una función.

me vas a perdonar, pero esto es una autentica gilipollez...

estas ocupando la memoria para nada y estás utilizando recursos haciendo que tu script se haga lento para sacar solo una variable. Obligas a la ejecucion SQL a buscar en todos los campos de todos los registros para al final utilizar solo una columna.

lo más idoneo sería
Código PHP:
$consulta_escribenum mysql_query("SELECT nombre FROM operarios WHERE id_operario='$id_operario'"); 
  #7 (permalink)  
Antiguo 06/04/2008, 09:47
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
Re: Como separar datos de un array devuelto por una función.

... y si seguimos políticas de optimización, entonces tampoco conviene (debido al uso que le estás dando a la función) mysql_fetch_array. Más bien te conviene reemplazar eso por mysql_fetch_assoc().


Salud!
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:44.