Foros del Web » Programando para Internet » PHP »

arreglos en PHP

Estas en el tema de arreglos en PHP en el foro de PHP en Foros del Web. Hola foristas, Soy nuevo en PHP y le doy las gracias de antemano por sus respuestas. Necesito recorrer la tabla ventas por meses, almacenar los ...
  #1 (permalink)  
Antiguo 17/05/2012, 14:19
 
Fecha de Ingreso: enero-2007
Mensajes: 18
Antigüedad: 17 años, 3 meses
Puntos: 0
arreglos en PHP

Hola foristas,

Soy nuevo en PHP y le doy las gracias de antemano por sus respuestas.

Necesito recorrer la tabla ventas por meses, almacenar los numeros y montos en un arreglo y no se como se manejan los arreglos en PHP, deseo
que se muestre la siguiente informacion:


numero ene feb mzo abr may
1001 100 200 300 400 500
1002 500 400 300 200 100
1003 900 800 700 600 500



Este es el codigo:


$mes = 5; //mayo
$x = 1;
while ($x <= $mes) {
$sql = "select numero, monto
from ventas
where month(fecha) = '".$mes."' ";

$result = odbc_exec($link, $sql);
$y = 1;
while ($row = odbc_fetch_array($result)) {

// ¿ Aqui iria el arreglo ?

$y++;
}
$x++;
}

Gracias nuevamente por sus respuestas.
  #2 (permalink)  
Antiguo 17/05/2012, 14:26
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: arreglos en PHP

Yo lo que haria es la consulta una vez sola y me traeria toda la informacion, despues recorro esa informacion y voy metiendo los datos en el vector, entonces como primer indice del vector usas el campo numero, segundo cuando evalues el campo de fecha en la iteracion de lo que te devolvio la consulta usas date("m", $campo_fecha_de_la_base) para obtener el mes, y lo usas como segundo indice del arreglo y lo demas lo dejas dinamico, en definitiva seria algo asi (a groso modo):

Código PHP:
Ver original
  1. $sql = "select numero, monto from ventas";
  2. $result = odbc_exec($link, $sql);
  3.  
  4. while ($row = odbc_fetch_array($result)) {
  5.       $mes = date("m", $row['campo_fecha_de_la_base']);
  6.       $numero = $row['numero'];
  7.       $monto = $row['monto'];
  8.       $ventas[$numero][$mes][] = $monto;
  9. }
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 18/05/2012, 07:54
 
Fecha de Ingreso: enero-2007
Mensajes: 18
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: arreglos en PHP

Me parece buena tu idea, pero lo que sucede es que en el query tengo sumatorias de algunos campos, los cuales no he colocado para abreviar el query...

Lo que deseo es cuando pedir el mes de mayo, que me haga internamete una sumatoria de los campo de los meses anteriores -en este caso de enero a abril-
por cada numero.

Por ejemplo, si selecciono el mes de mayo, en el numero 1001, deberia obtener, la suma de los meses de ene a abril, que seria 1000 y asi sucesivamente para cada numero

numero acumulado mayo
1001 1000 500

Habia pensado en crear un arreglo, pero no se como llenar ese arreglo en php, he
buscado por internet y muestran solo ejemplos pero sin bd

Espero me haya explicado bien

Gracias de antemano
  #4 (permalink)  
Antiguo 18/05/2012, 10:32
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: arreglos en PHP

Pues no veo mucha diferencia con o sin bd....

Podrías hacer una consulta que abarque todo el intervalo de tiempo a consultar para hacer la consulta más rápida y separar ya en el arreglo por fecha.

Suponiendo que tu fecha estuviera como dices, con un número de mes:

Código PHP:
Ver original
  1. $ventas=mysql_query("select numero, monto,fecha from ventas where fecha between 1 and 5 order by fecha asc");//consultamos el intervalo entre el mes uno y 5 (aquí depende del formato real en que tengas la fecha)
  2.  
  3. while($v=mysql_fetch_assoc($ventas)){
  4.     if(isset($venta[$v['numero']][$v['fecha']]))//si ya existe $venta[$v['numero']][$v['fecha']]
  5.              $venta[$v['numero']][$v['fecha']]+=$v['monto'];//le sumamos el monto
  6.     else
  7.              $venta[$v['numero']][$v['fecha']]=$v['monto'];//le asignamos el monto
  8. }


Te quedaría un arreglo ordenado por fecha, numero y monto, y lo podrías desplegar así:
Código PHP:
Ver original
  1. echo "<table><thead><tr><th>Numero</th><h>Ene</th><h>Feb</th><h>Mar</th><h>Abr</th><h>May</th></tr></thead>";//ponemos encabezados
  2. foreach($venta as $numero =>$mat){//recorremos por numero
  3.      echo "<tr><td>$numero</td> ";
  4.      foreach($mat as $mes =>$monto){//recorremos por mes y extraemos el monto del mes
  5.           echo "<td>$monto</td> ";
  6.      }
  7.      echo "</tr>";
  8. }
  9. echo "</table>";

Etiquetas: arreglos, sql, tabla
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 22:13.