Foros del Web » Programando para Internet » PHP »

barrido de un array

Estas en el tema de barrido de un array en el foro de PHP en Foros del Web. hola quisiera saber como hago lo siguiente tengo un arreglo y ago un barrido de este para obtener los valores que contiene mii arreglo @import ...
  #1 (permalink)  
Antiguo 08/03/2010, 18:47
 
Fecha de Ingreso: agosto-2009
Ubicación: tlalnepantla
Mensajes: 97
Antigüedad: 14 años, 11 meses
Puntos: 0
barrido de un array

hola quisiera saber como hago lo siguiente tengo un arreglo y ago un barrido de este para obtener los valores que contiene mii arreglo

Código PHP:
Ver original
  1. //OBTENEMOS EL ID_ATRIBUTO
  2. $atributos="SELECT id_atributo FROM prs_atributos_solicitud WHERE idtipo=$idtipo";
  3. $aresult = pg_query($atributos);
  4. $atrib = pg_fetch_array($aresult);
  5. for( $idatrib = 1; $idatrib < count($atrib); $idatrib ++)
  6. {
  7. $atrib[$idatrib];
  8. }

ya que los tengo en la variable $idatrib lo trato de usar en un insert

Código PHP:
Ver original
  1. //OBTENEMOS EL NUMERO TOTAL DE FILAS A INSERTAR
  2. $numfilas="SELECT COUNT(*)  as total FROM prs_atributos_solicitud WHERE idtipo=$idtipo";
  3. $filas=pg_query($connection,$numfilas) or die ("ERROR EN $numfilas");
  4. if($encontradas = 1)
  5. {
  6. $encontradas = pg_fetch_object($filas, 0) ;
  7. $total = $encontradas->total;
  8. }
  9. for ($insert=0 ; $insert<$total ; $insert++)
  10. {
  11. $primera="INSERT INTO prs_atributos_detalle (idprs_atrib_detalle,id_detallesolicitud,id_atributo,valor)
  12. VALUES ($idprs_atrib_detalle,$id_detallesolicit,$idatrib,'xxx')";
  13. pg_query($connection,$primera) or die ("error en $primera");
  14. $idprs_atrib_detalle++;
  15. }

Ya he visto varios ejemplos de que supuestamente asi se hace pero ami cuando l,o uso para insertarlo en mi BD siempre me inserta en numero 2 en donde deve de ir el valor que extraigo del arreglo.

¿ que tengo mal ?
  #2 (permalink)  
Antiguo 08/03/2010, 19:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 3 meses
Puntos: 2534
Respuesta: barrido de un array

que tienes mal??

pues que no te das cuenta.... con el for() solo obtienes números, y en ningún momento estas obteniendo los valores reales...

Código PHP:
// MAL
$idatrib;

// BIEN
$atrib[$idatrib]; 
de verdad no lo puedes razonar??

vamos, que $idatrib es solo el índice... no el valor!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 09/03/2010, 15:24
 
Fecha de Ingreso: agosto-2009
Ubicación: tlalnepantla
Mensajes: 97
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: barrido de un array

Cita:
Iniciado por pateketrueke Ver Mensaje
que tienes mal??

pues que no te das cuenta.... con el for() solo obtienes números, y en ningún momento estas obteniendo los valores reales...

Código PHP:
// MAL
$idatrib;

// BIEN
$atrib[$idatrib]; 
de verdad no lo puedes razonar??

vamos, que $idatrib es solo el índice... no el valor!!
mmm que diferiencia hay entre lo que yo tengo

Código PHP:
Ver original
  1. $atrib[$idatrib];

y lo que tu me dices
Código PHP:
Ver original
  1. $atrib[$idatrib];

no entiendo
  #4 (permalink)  
Antiguo 09/03/2010, 15:30
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 8 meses
Puntos: 5
Respuesta: barrido de un array

jejejejejejejeje, diferencia ninguna hombre, ahí está el error.
Lo q tienes en el for(), son valores NUMÉRICOS, no los valores del array. ¿captas?

Código PHP:
Ver original
  1. for( $idatrib = 1; $idatrib < count($atrib); $idatrib ++)
  2.  
  3. {
  4.  
  5. $atrib[$idatrib];
  6.  
  7. }

No te sorprendas porq simplemente es lo q le estás diciendo q haga
  #5 (permalink)  
Antiguo 09/03/2010, 15:47
 
Fecha de Ingreso: agosto-2009
Ubicación: tlalnepantla
Mensajes: 97
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: barrido de un array

Cita:
Iniciado por eulloa Ver Mensaje
jejejejejejejeje, diferencia ninguna hombre, ahí está el error.
Lo q tienes en el for(), son valores NUMÉRICOS, no los valores del array. ¿captas?

Código PHP:
Ver original
  1. for( $idatrib = 1; $idatrib < count($atrib); $idatrib ++)
  2.  
  3. {
  4.  
  5. $atrib[$idatrib];
  6.  
  7. }

No te sorprendas porq simplemente es lo q le estás diciendo q haga
y como hago para jalar los valores del array me podrias explicar por favor?
  #6 (permalink)  
Antiguo 09/03/2010, 16:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 1 mes
Puntos: 2135
Respuesta: barrido de un array

Puedes usar un foreach o tambien el for lo importante es guardar correctamente los valores, en el código que expones no estas almacenando los valores, es decir tendrías que hacer algo así (pseudocodigo):
Código:
ids = array()
mientras(fila=obtener_filas_bdd()) {
      ids[] = fila[id]
}
Luego puedes usar un foreach o el mismo for para hacerlo:
Código:
// for
for (i = 0; i < total; i++) {
     imprime(ids[i]) 
}
// foreach
foreach(ids as id) {
     imprime(id)
}
Saludos.
  #7 (permalink)  
Antiguo 09/03/2010, 16:20
 
Fecha de Ingreso: agosto-2009
Ubicación: tlalnepantla
Mensajes: 97
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: barrido de un array

si me podrias explicar con peritas y manzanitas es que soy novato
  #8 (permalink)  
Antiguo 09/03/2010, 16:25
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 1 mes
Puntos: 2135
Respuesta: barrido de un array

No veo como exponerlo más sencillo, los ciclos es una parte escencial de la programación, te recomendaría que buscaras un libro de programación básica en C, aunque no es PHP es parecida su sintaxis y puedes ver y entender como funcionan los ciclos.

Saludos.
  #9 (permalink)  
Antiguo 09/03/2010, 16:37
 
Fecha de Ingreso: agosto-2009
Ubicación: tlalnepantla
Mensajes: 97
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: barrido de un array

lo siento mala eleccion de palabras esta es la parte que no me queda muy clara

Código PHP:
Ver original
  1. ids = array ()
  2. Mientras (fila = obtener_filas_bdd ()) (
  3.       [IDS] = fila [id]
  4. )
  #10 (permalink)  
Antiguo 09/03/2010, 19:20
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 7 meses
Puntos: 89
Respuesta: barrido de un array

¿Qué no te queda claro de ese trozo de pseudo-código?

Primero definimos una variable ids como arreglo :

Código PHP:
Ver original
  1. ids = array ()

Luego, recorremos los valores devueltos por una consulta sql cualquiera, donde fila corresponde a cada fila devuelta, es decir, en la primera vuelta a fila se le asigna datosFila1, en la segunda vuelta, se le asigna a fila el valor datosFila2, y así sucesivamente hasta agotar los valores devueltos.

Código PHP:
Ver original
  1. Mientras (fila = obtener_filas_bdd ()) (

Por último, metemos en el arreglo ids cada valor que se encuentra en fila a la cual se le asignó los valores encontrados en cada fila, pero en este caso especificamos el campo que queremos, el cual sería id ( fila[id] ).

Código PHP:
Ver original
  1. ids[] = fila [id]

Más específico no puedo ser... si no entiendes eso, pues necesitarás dedicarle un poquito más de tiempo al estudio...
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #11 (permalink)  
Antiguo 11/03/2010, 16:59
 
Fecha de Ingreso: agosto-2009
Ubicación: tlalnepantla
Mensajes: 97
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: barrido de un array

gracias por la explicacion

mira decidi utilizar el foreach de esta manera

Código PHP:
Ver original
  1. $atributos="SELECT id_atributo FROM prs_atributos_solicitud WHERE idtipo=$idtipo";
  2. $aresult = pg_query($atributos);
  3. $atrib = pg_fetch_array($aresult);
  4.  
  5. foreach($atrib as $ids)

y el insert en donde los voy a utilizar esta de la siguiente manera

Código PHP:
Ver original
  1. //OBTENEMOS EL NUMERO TOTAL DE FILAS A INSERTAR
  2. $numfilas="SELECT COUNT(*)  as total FROM prs_atributos_solicitud WHERE idtipo=$idtipo";
  3. $filas=pg_query($connection,$numfilas) or die ("ERROR EN $numfilas");
  4. if($encontradas = 1)
  5. {
  6. $encontradas = pg_fetch_object($filas, 0) ;
  7. $total = $encontradas->total;
  8. }
  9. for ($insert=0 ; $insert<$total ; $insert++)
  10. {
  11. $primera="INSERT INTO prs_atributos_detalle (idprs_atrib_detalle,id_detallesolicitud,id_atributo,valor)
  12. VALUES ($idprs_atrib_detalle,$id_detallesolicit,$ids,'xxx')";
  13. pg_query($connection,$primera) or die ("error en $primera");
  14. $idprs_atrib_detalle++;
  15. }

el problerma es que solo me obtiene el primer valor del arreglo y este me lo repite ¿alguien sabra por que?

Etiquetas: barrido
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 03:06.