Foros del Web » Programando para Internet » PHP »

Calcular el porcentaje equivalente !

Estas en el tema de Calcular el porcentaje equivalente ! en el foro de PHP en Foros del Web. Estimado foreros Espero puedan ayudarme en el siguiente problema. Necesito hacer un par de calculos y el ultimo de ellos me tiene complicado por el ...
  #1 (permalink)  
Antiguo 19/02/2013, 12:49
Avatar de livication  
Fecha de Ingreso: noviembre-2009
Mensajes: 78
Antigüedad: 14 años, 4 meses
Puntos: 0
Calcular el porcentaje equivalente !

Estimado foreros

Espero puedan ayudarme en el siguiente problema.

Necesito hacer un par de calculos y el ultimo de ellos me tiene complicado por el orden en que se recorren las variables.ME EXPLICO

En una tabla obtengo todos los "volumenes" de un dato X, los cuales los sumo a medida que se imprimen y mostrar al final el resultado de todos la suma
Y en la columna siguiente debo calcular el porcentaje equivalente de cada volumen en relacion a la suma total....pero no lo puedo hacer ya que mientras recorro todos los volumenes, no estoy con el dato final de la suma...

Podrian ayudarme


Código HTML:
Ver original
  1. <?php
  2. if($_POST["buscar"] != ''){
  3.     $cont = $_POST["cont-oculto"];
  4.     for($i = 1; $i <= $cont; $i++){
  5.         $variable = $_POST["campo".$i];
  6.         $variable1 = $_POST["campo1".$i];
  7.         echo '<br />';     
  8.  
  9. $sql = ( "
  10.            SELECT              
  11.                     ps.prodescuadria,ps.prodlargo,ps.prodvolumen,COUNT(prodescuadria),COUNT(prodlargo),prodpzas
  12.            FROM
  13.                     esquemaprograma AS ep JOIN simulaciones AS s ON (s.profolio=ep.profolio) AND (ep.esqcodigo=s.esqcodigo) AND (ep.patcodigo=s.patcodigo)
  14.            JOIN     produccionsimulada AS ps ON (s.simcodigo=ps.simcodigo)
  15.            
  16.            WHERE
  17.                     ep.profolio='$variable' AND
  18.                     ep.patcodigo='$variable1' AND
  19.                     prodtipo!='C'
  20.            GROUP BY        
  21.                     prodescuadria,prodlargo,prodvolumen,prodpzas       
  22.            ORDER BY
  23.                     prodvolumen DESC " );      
  24.                                                            
  25. $result = pg_query ( $dbconn, $sql ) or die ("ERROR EN CONSULTA"); 
  26.  
  27. //Contador de Enumeradcion
  28. $cont = 1;
  29.  
  30. $num = pg_num_rows($result);
  31. echo $num;
  32.  
  33. if( pg_num_rows($result) != 0 ){
  34.     $suma = 0;
  35.             while( $row = pg_fetch_assoc($result) ){                           
  36. ?>
  37.                             <tr>
  38.                                 <td background="imag/bg_menuon.gif"><?php echo $cont++; ?></td>
  39.                                 <td><?php /*concatenacion largoXescuadria*/
  40.                                           $a = $row["prodescuadria"];
  41.                                           $b = $row["prodlargo"];
  42.                                           echo "$a".x."$b";
  43.                                     ?></td>
  44.                                 <td><?php echo $row["prodpzas"];
  45.                                           $suma_pzas = $suma_pzas + $row["prodpzas"];   ?></td>
  46.                                 <td><?php echo number_format($row["prodvolumen"], 3,',','');
  47.                                          /*suma volumen por folio  */
  48.                                           $suma = $suma + $row["prodvolumen"];
  49.                                          
  50.                                           ?></td>
  51.                                 <td><?php $porcent = number_format((($row["prodvolumen"] / $suma_todo)*100), 2,',','.');  
  52.                                          /*Calculo porcentual*/
  53.                                           echo $porcent."%";
  54.                                           $suma_porce = $suma_porce + $porcent;
  55.                                     ?></td>
  56.                                
  57.                             <?php
  58.                             }
  59.                             /*suma volumen total de folio*/
  60.                             $suma_todo = $suma_todo + $suma;
  61.                             /*suma porcentaje total = 100%*/
  62.                             $suma_porcent = $suma_porcent + $suma_porce;
  63.                     }                  
  64.         }
  65. }  
  66. ?> 
  67. <input type="hidden" id="cont-oculto" name="cont-oculto" />
  68. </tr>  
  69.     <td colspan="2" align="center" class="itemname" background="imag/background.png">TOTAL</td>
  70.         <th align="right" style="border-top: 1px solid #CCC;background: url(imag/dtable.gif);border-right: 1px solid #CCC"><?php echo $suma_pzas ?></th>                            <th align="right" style="border-top: 1px solid #CCC;background: url(imag/dtable.gif);border-right: 1px solid #CCC"><?php echo number_format($suma_todo, 3,',',''); ?></th>
  71.         <th align="right" style="border-top: 1px solid #CCC;background: url(imag/dtable.gif);border-right: 1px solid #CCC"><?php echo $suma_porcent."%";  ?></th>              
  72.     </tbody>
  #2 (permalink)  
Antiguo 19/02/2013, 23:44
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Calcular el porcentaje equivalente !

Una opción sería guardar todos los datos en un arreglo, hacer los cálculos y, finalmente, lo recorres para imprimir:

Código PHP:
Ver original
  1. $registros = array();
  2. $suma_todo = 0;
  3. while( $row = pg_fetch_assoc($result) ){
  4.     $registros[] = $row;
  5.     // Aquí incrementas la suma total, contadores, etc.
  6. }
  7.  
  8. // Recorres el arreglo
  9. foreach($registros as $row) {
  10.     // Ya tienes el total guardado, haz el cálculo y
  11.     // realiza la impresión tal como la tienes en tu código
  12. }

También podrías obtener el total con una consulta previa, la decisión es tuya.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: equivalente, porcentaje, select, sql, tabla, variables
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 00:00.