Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/01/2013, 04:27
alyciashape
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
No veo el problema

Partiendo de este código:
Código PHP:
Ver original
  1. #Años a crear inventario
  2. for ($year=2011; $year<=DATE('Y'); $year++) {
  3.    #Tomamos las compras desde el inicio hasta 2011 por empresa
  4.   $compras = $bd->consulta("SELECT claart, claemp, cantidad, fecha FROM compra
  5.   WHERE year(fecha)<=$year GROUP BY   claemp, claart");
  6.    
  7.    /*
  8.    foreach ($compras AS $compra) { //Esto funciona.
  9.         echo $compra['claart'];
  10.         echo "<br />";
  11.    }
  12.    */
  13.  
  14. $cantidad = COUNT($compras); //Me da mas de 60 mil por cada año    
  15.  
  16.     for ($compra=0; $compra <= $cantidad; $compra++) { //Esto no me funciona
  17.         echo COUNT($compras);echo "<br />"; //Sigue dando mas de 60 mil pero se imprime una vez por año
  18.         $claart     = $compras[$compra]['claart'];
  19.         $claemp     = $compras[$compra]['claemp'];
  20.         $cantidad   = $compras[$compra]['cantidad'];
  21.         $fecha      = $compras[$compra]['fecha'];      
  22.         //echo "Artículo $claart claemp $claemp cantidad $cantidad fecha $fecha <br />";
  23.                 //Esta línea anterior se imprime una y sólo una vez por cada bucle. 3 veces porque recorro años de 2011 hasta ahora
  24.     }
  25.    
  26. }

Quería hacerlo con FOR porque tengo entendido que el rendimiento es muy superior a foreach. Sin embargo foreach me gusta mucho porque me parece además de cómodo muy lógico.

Me está fallando el for y no se por qué. La cuestión es que cuando lo escribí la primera vez me iba perfectamente ahora solo me recorre una vez el for. No entiendo por qué

Más raro todavía. Con el for así me imprime los 60 mil holas:
Código PHP:
Ver original
  1. for ($compra=0; $compra <= $cantidad; $compra++) {  
  2.         echo "hola <br />";    
  3.     }

Pero así no. Solo lo hace 1 vez por cada año. 3 en total.
Código PHP:
Ver original
  1. for ($compra=0; $compra <= $cantidad; $compra++) {         
  2.         $claart     = $compras[$compra]['claart'];
  3.         $claemp     = $compras[$compra]['claemp'];
  4.         $cantidad   = $compras[$compra]['cantidad'];
  5.         $fecha      = $compras[$compra]['fecha'];              
  6.         echo "Artículo $claart claemp $claemp cantidad $cantidad fecha $fecha <br />";
  7.     }

No lo entiendo. Nada. Ya está, se puede cerrar. Llevaba mas de una hora con esto sin resultados. Estaba reescribiendo el valor de $cantidad. Mira que busqué y busqué precisamente buscando eso y no lo veía.

Un saludo.

Última edición por alyciashape; 17/01/2013 a las 04:39