Foros del Web » Programando para Internet » PHP »

como recorrer array varias veces segun condicion

Estas en el tema de como recorrer array varias veces segun condicion en el foro de PHP en Foros del Web. hola amigos espero me puedan ayudar, realizo una consulta a una base de datos @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $usuario = 'postgres' ; $contrasenia ...

  #1 (permalink)  
Antiguo 15/04/2013, 11:24
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
como recorrer array varias veces segun condicion

hola amigos espero me puedan ayudar, realizo una consulta a una base de datos

Código PHP:
Ver original
  1. $usuario = 'postgres';
  2. $contrasenia = '****';
  3.    
  4.             try {
  5.                 $db = new PDO('pgsql:host=localhost;dbname=mibase',$usuario,$contrasenia);
  6.                
  7.                 }catch(PDOException $e) {
  8.                
  9.                 echo "Usuario y Clave Invalidas";
  10.                 throw new Exception("Usuario y Clave Invalidas", 0, $e);
  11.                 }
  12.  
  13. $consulta = $db->prepare("SELECT  * FROM usuarios");
  14. $consulta->execute();

el resultado de la consulta lo almaceno en $consulta y lo recorro con foreach

Código PHP:
Ver original
  1. foreach($consulta as $field)
  2.  
  3.     {
  4.  
  5. }

necesito recorrer varias veces este array dependiendo de algunas condiciones
como lo logro?
  #2 (permalink)  
Antiguo 15/04/2013, 11:27
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: como recorrer array varias veces segun condicion

A que te refieres con recorrerlo varias veces??
Estás hablando de recursividad??
  #3 (permalink)  
Antiguo 15/04/2013, 11:32
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: como recorrer array varias veces segun condicion

alex1084 gracias por responder , creo que si es recursividad lo que necesito es que por ejemplo necesito primero imprimir los registros que tengan 1 en un campo , despues que en otro campo tenga 'admin'.
  #4 (permalink)  
Antiguo 15/04/2013, 11:34
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: como recorrer array varias veces segun condicion

Podrías explicar exactamente que es lo que necesitas?? porque no comprendo exactamente lo que quieres o mejor dicho el porque quieres recorrer muchas veces un mismo for
  #5 (permalink)  
Antiguo 15/04/2013, 12:34
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: como recorrer array varias veces segun condicion

alex1084 gracias por responder , tengo esta consulta http://imageshack.us/photo/my-images...idadoactu.png/ y requiero imprimir una tabla como esta http://imageshack.us/photo/my-images...nsolidado.png/

Última edición por Montes28; 15/04/2013 a las 12:40
  #6 (permalink)  
Antiguo 15/04/2013, 12:56
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: como recorrer array varias veces segun condicion

Mira si lo que necesitas es hacer una tabla como la que muestras lo que necesitas es armar una consulta adecuada, agrupando campos de ser necesario y depende de cuantas tablas tengas que relacionar asi como armar una estructura html adecuada, con estar recorriendo una ves y otra vez el mismo for no basta para armar la salida que requieres..
  #7 (permalink)  
Antiguo 15/04/2013, 13:01
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: como recorrer array varias veces segun condicion

alex1084 gracias por responder , pero es que es complicado agrupar , ya que si agrupo por un campo se deserdone , necesito agrupar por 3 campos y dificil , esixte alguna manera de que con php pueda imprimir como lo requiero
  #8 (permalink)  
Antiguo 15/04/2013, 13:05
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: como recorrer array varias veces segun condicion

Mira para empezar arma una consulta SQL adecuada a tus necesidades y realidades, luego php no tiene nada ya hecho para que imprima como tu quieres, la salida la armas tu de acuerdo a lo que necesites, tienes que ser conciente que muchas cosas son dificiles pero no imposibles, nada mas es que trabajes un poco...

Ya tienes algun codigo hecho?? porque por ahi debes empezar, aqui con gusto te orientaremos y ayudares a solventar problemas con codigo, mas nunca te daremos codigo
  #9 (permalink)  
Antiguo 15/04/2013, 13:07
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: como recorrer array varias veces segun condicion

este es mi codigo

<table border="1">
<tr>
<td><strong>Tipo de Estaciones</strong></td>

</tr>
<?php
$area="";
$estacion="";
$observatorio="";
foreach($consulta as $field)

{
$observatorio=$field['codigo_observatorio'];
$area=$field['codigoarea'];
var_dump($area);
var_dump($observatorio);
if($area != $field['codigoarea']) {
echo '<tr><td colspan=16><div align=center><strong>'.$field['nombrearea'].'</strong></div></td></tr>';
}
if($estacion != $field['codigotipoestacion']){
echo '<tr>';
echo '<td>'.$field['nombreestacion'].'</td>';
}
echo '<td>';
if($field['cantidad']==NULL){
?>
<div align="center"><a href="#" id="<?php echo $field['item']?>" class="edit-address" data-type="address" data-pk="<?php echo $field['item']?>"><strong>0</strong></a></div>
<?php
}else{
?>
<div align="center"><a href="#" id="<?php echo $field['item']?>" class="edit-address" data-type="address" data-pk="<?php echo $field['item']?>"><strong><?php echo $field['cantidad'] ?></strong></a></div>
<?php
}
'</td>';
$estacion=$field['codigotipoestacion'];
}
?>
<tr>
<td width="746">Total</td>
</tr>
</table>

el problema lo tengo es con la columnas y con el valor total por columna
  #10 (permalink)  
Antiguo 15/04/2013, 13:20
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: como recorrer array varias veces segun condicion

mmm ok pero y la consulta??

Recuerda que la base de todo el la consulta slq luego lo complementas con tu codigo
  #11 (permalink)  
Antiguo 15/04/2013, 13:22
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: como recorrer array varias veces segun condicion

esta es la consulta

Código SQL:
Ver original
  1. SELECT cantidad,item,volcan.codigo AS codigovolcan,volcan.nombre AS nombrevolcan,volcan.alias,codigo_observatorio,tipo_estacion.codigo AS codigotipoestacion,tipo_estacion.nombre AS nombreestacion,area.nombre AS nombrearea,area.codigo AS codigoarea FROM inv_est_instaladas,volcan,tipo_estacion,area WHERE inv_est_instaladas.codigo_volcan = volcan.codigo AND tipo_estacion.codigo = inv_est_instaladas.codigo_tipo_estacion AND tipo_estacion.codigo_area = area.codigo  ORDER BY area.codigo, tipo_estacion.codigo, volcan.codigo
  #12 (permalink)  
Antiguo 15/04/2013, 13:32
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: como recorrer array varias veces segun condicion

Mira honestamente esta complicado ya que no logro comprender ni tu codigo y mucho menos tu consulta.... la consulta cual es la estructura que te devuelve??
  #13 (permalink)  
Antiguo 15/04/2013, 13:34
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: como recorrer array varias veces segun condicion

esta es la estructura que me devuelve la consulta http://imageshack.us/f/823/consultaconsolidadoactu.png/
  #14 (permalink)  
Antiguo 15/04/2013, 13:53
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: como recorrer array varias veces segun condicion

Mira para la columa alias contiene los titulos que quieres que lleve tu estructura verdad???
Porque si es asi debes de reestructurar tu consulta sql
  #15 (permalink)  
Antiguo 15/04/2013, 14:02
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: como recorrer array varias veces segun condicion

alex1084 gracias por responder, lo que pasa es que para armar la tabla requiero ordenar por area :Deformación....(campo-codigoarea)
tipo de estacion:EDM,GNSS,...(campo- codigotipoestacion)
y luego imprimo el campo cantidad

todo esto es por fila , el complique es para las columnas

la consulta involucra 4 tablas

que hago?
  #16 (permalink)  
Antiguo 15/04/2013, 14:09
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: como recorrer array varias veces segun condicion

Mira lo que pasa que tu problema ya no es codigo si no lógica y estrucutura de tu consulta, luego pensar y hacer la estructura de la salida html, lo cual es dificil al menos para mi ayudarte ya que no conozco ni la estructura de tu base ni la relación que hay entre tablas, no se si comprendes?
Si fueran errores de codigo si seria facil porque son cosas que ya están definidas pero con lo que te sucede a ti es mas complicado porque ya hay que comprender varios factores para llegar a la solución.
  #17 (permalink)  
Antiguo 15/04/2013, 15:05
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: como recorrer array varias veces segun condicion

alex gracias por responder , el problema es que la tabla agrupa por 3 campos , el primero para armar las filas de las areas (Deformación,Geofísica,Química,Sismología) , despues debo de imprimir las filas de tipo de estacion (EDM,GNSS,inclielectrónicos....)

mi pregunta es un consulta sql puede agrupar por 4 campos ? la consulta debe de imprimir 255 registros .
  #18 (permalink)  
Antiguo 15/04/2013, 15:07
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: como recorrer array varias veces segun condicion

Mira en sql puedes agrupar por n cantidad de campos siempre hagas bien la consulta,
si necesitas primero armar filas de areas, es una consulta..
Si necesitas armar luedo estaciones es otra consulta...

No pretendas hacer todo en una sola porque entonces te complicas... has las cosas por partes de acuerdo a la estructura que quieras armar..
  #19 (permalink)  
Antiguo 15/04/2013, 15:09
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: como recorrer array varias veces segun condicion

alex1084 osea que para armar la tabla necesito hacer 5 consultas? y para armar la tabla hacer ciclos anidados?
  #20 (permalink)  
Antiguo 15/04/2013, 15:16
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: como recorrer array varias veces segun condicion

posiblemente si, como te dije todo depende de como están estructurados los datos.. pero si lo que me dices de primero armar las filas de areas, eso significa recuperar primero los datos relacionados a áreas, lo cual sería una consulta...
Luego si necesitas listar los datos relacionados a estaciones sería otra consulta... y asi sucesivamente hasta que hayas listados los datos que quieres..
Si deben ir anidados los ciclos, depende, porque si los datos los vas a mostrar uno a continuación de otros no necesariamente van a ir anidados pero si van a ir secuenciales uno a continuación de otro...

Como te digo la cosa es ir simplificando las cosas hasta llegar al resultado
  #21 (permalink)  
Antiguo 15/04/2013, 15:35
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: como recorrer array varias veces segun condicion

alex1084 gracias por responder , voy a hacer lo que me indicas

hice la consulta para imprimir la cabecera de la tabla
Código SQL:
Ver original
  1. SELECT * FROM volcan ORDER BY codigo_observatorio

<table border="1">
<tr>
<td><strong>Tipo de Estaciones</strong></td>
<?php
foreach($consulta_volcan as $field)
{
?> <td><strong><?php echo $field['alias']?></strong></td>

<?
}
?>
</tr>

ahora me falta el resto de la tabla , quiero saber si voy por buen camino?
  #22 (permalink)  
Antiguo 15/04/2013, 15:46
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: como recorrer array varias veces segun condicion

Mira no veo necesidad de hacer una consulta para hacer la cabecera de la tabla porque asumo que siempre serán las mismas columnas en el mismo orden y con los mismos nombre por lo tanti puede facilmente dejarlo fijo, pero bien si ya lo hiciste de esa forma y te funciona sigue asi... ahora has las consultas para recuperar el resto de la información
  #23 (permalink)  
Antiguo 15/04/2013, 15:54
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: como recorrer array varias veces segun condicion

alex1084 gracias por responder , con la siguiente consulta

Código SQL:
Ver original
  1. SELECT cantidad,item,volcan.codigo AS codigovolcan,volcan.nombre AS nombrevolcan,volcan.alias,codigo_observatorio,tipo_estacion.codigo AS codigotipoestacion,tipo_estacion.nombre AS nombreestacion,area.nombre AS nombrearea,area.codigo AS codigoarea FROM inv_est_instaladas,volcan,tipo_estacion,area WHERE inv_est_instaladas.codigo_volcan = volcan.codigo AND tipo_estacion.codigo = inv_est_instaladas.codigo_tipo_estacion AND tipo_estacion.codigo_area = area.codigo  ORDER BY area.codigo, tipo_estacion.codigo, volcan.codigo

y con este codigo

<?php
$area="";
$estacion="";
foreach($consulta as $field)

{
if($area != $field['codigoarea']) {
echo '<tr><td colspan=16><div align=center><strong>'.$field['nombrearea'].'</strong></div></td></tr>';
}
$area=$field['codigoarea'];
if($estacion != $field['codigotipoestacion']){
echo '<tr>';
echo '<td>'.$field['nombreestacion'].'</td>';

}


echo '<td>';

$estacion=$field['codigotipoestacion'];


}
?>



logro imprimir las areas= Deformación,Geofi*sica,Quimica,Sismologia y los tipos de estacion:EDM,GNSS...

aqui es donde tengo el problema porque tengo que imprimir la cantidad que corresponda a la columna y a la fila que sea segun la consulta
  #24 (permalink)  
Antiguo 15/04/2013, 16:01
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: como recorrer array varias veces segun condicion

con el codigo anterior asi llevo la tabla http://imageshack.us/f/14/consolidado.jpg/

me resta es llenar las celdas
  #25 (permalink)  
Antiguo 15/04/2013, 16:08
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: como recorrer array varias veces segun condicion

Mira y justamente aqui es donde me pierdes porque no logro entender que información es la que necesitas, porque la consulta que haces hasta donde logro ver y entender te lista todos los volcanes con su correspondiente información...

Entonces si lo que necesitas por ejemplo nombreestacion y cuantos volcanes observa esa consuta no te sirve.

Dime con palabras que informacion es la que necesitas??
Porque no entiendo cuando me dices "tengo que imprimir la cantidad que corresponda a la columna y a la fila que sea segun la consulta"
Aque te referis a corresponda a la columna y a la fila??
  #26 (permalink)  
Antiguo 15/04/2013, 16:17
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: como recorrer array varias veces segun condicion

tengo que imprimir la cantidad de c.bravo para el tipo de estacion EDM .

Tipo de Estaciones C.BRAVO TOLIMA
EDM 1 0
GNSS 5 1

http://imageshack.us/f/14/consolidado.jpg/ esta imagen se puede ver que tengo 255 celdas en blanco las cuales requiero imprimir con el campo cantidad de la consulta .

15 columnas 17 filas = 255

255 es el numero de registros que obtengo con la consulta
  #27 (permalink)  
Antiguo 15/04/2013, 16:36
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: como recorrer array varias veces segun condicion

ok, pero en datos de la tabla seria que cosa???

Porque se me hace que lo que necesitas es ocupar un count, un group by y ya, pero el punto es que datos vas a contar y que porque datos necesitas agrupar...
  #28 (permalink)  
Antiguo 15/04/2013, 16:42
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: como recorrer array varias veces segun condicion

alex1084

esta es la consulta

Código SQL:
Ver original
  1. SELECT cantidad,item,volcan.codigo AS codigovolcan,volcan.nombre AS nombrevolcan,volcan.alias,codigo_observatorio,tipo_estacion.codigo AS codigotipoestacion,tipo_estacion.nombre AS nombreestacion,area.nombre AS nombrearea,area.codigo AS codigoarea FROM inv_est_instaladas,volcan,tipo_estacion,area WHERE inv_est_instaladas.codigo_volcan = volcan.codigo AND tipo_estacion.codigo = inv_est_instaladas.codigo_tipo_estacion AND tipo_estacion.codigo_area = area.codigo  ORDER BY area.codigo, tipo_estacion.codigo, volcan.codigo

http://imageshack.us/f/823/consultaconsolidadoactu.png/

Cita:
ok, pero en datos de la tabla seria que cosa???
seria la columna cantidad
  #29 (permalink)  
Antiguo 15/04/2013, 16:46
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años, 7 meses
Puntos: 47
Respuesta: como recorrer array varias veces segun condicion

Mira sigo sin comprender, mira con que consulta armas las filas de las areas???

Porque esa consulta que muestras tien muucha información la cual se que no te sirve para hacer las filas EDN, GNSSS, en la consulta que ocupas para hacer esas filas está la clave.

Cuando te hable de usar count y group by sabes de que te hablo??
Porque te sere honesto esa gran consulta que me muestras me parece que no sirve de mucho para la salida que queres lograr
  #30 (permalink)  
Antiguo 15/04/2013, 16:52
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: como recorrer array varias veces segun condicion

alex1084 la consulta con la que imprimo areas= Deformación,Geofi*sica,Quimica,Sismologia y los tipos de estacion:EDM,GNSS. es la misma

Código SQL:
Ver original
  1. SELECT cantidad,item,volcan.codigo AS codigovolcan,volcan.nombre AS nombrevolcan,volcan.alias,codigo_observatorio,tipo_estacion.codigo AS codigotipoestacion,tipo_estacion.nombre AS nombreestacion,area.nombre AS nombrearea,area.codigo AS codigoarea FROM inv_est_instaladas,volcan,tipo_estacion,area WHERE inv_est_instaladas.codigo_volcan = volcan.codigo AND tipo_estacion.codigo = inv_est_instaladas.codigo_tipo_estacion AND tipo_estacion.codigo_area = area.codigo  ORDER BY area.codigo, tipo_estacion.codigo, volcan.codigo

es mas yo logro imprimir las 255 celdas pero no corresponden a el volcán (osea el encabezado :C.BRAVO,TOLIMA,RUIZ.............................. ..) y el tipo de estacion

Cita:
Cuando te hable de usar count y group by sabes de que te hablo??
si se que es un group by

el group by es para imprimir la fila de los totales de la parte de abajo ?

Etiquetas: select, sql, usuarios, veces
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 14:05.