Foros del Web » Programando para Internet » PHP »

Como ordeno de mayor a menor

Estas en el tema de Como ordeno de mayor a menor en el foro de PHP en Foros del Web. Estimados foreros Tengo el siguiente codigo en el que obtengo una consulta que esta ordenada por volumen en forma descendente, pero a final de todo ...
  #1 (permalink)  
Antiguo 27/02/2013, 14:27
Avatar de livication  
Fecha de Ingreso: noviembre-2009
Mensajes: 78
Antigüedad: 14 años, 5 meses
Puntos: 0
Como ordeno de mayor a menor

Estimados foreros

Tengo el siguiente codigo en el que obtengo una consulta que esta ordenada por volumen en forma descendente, pero a final de todo necesito ordenarla por el valor que resulta de la variable $volumen_real de cada folio....

De que manera puedo hacer el ordenamiento ??

El ordenamiento debo hacerlo luego de obtener el resulta y cual lo estoy imprimiendo ??

Debo hacer los ciclos en la parte que sale los datos resultantes ??

Como deberia ser ??

Me ayudan?


Muchas Gracias de ante mano

Código PHP:
Ver original
  1. <td align="right" background="imag/bg_menuon.gif">
  2.                                                   <?php
  3.                                                         //echo $row["part1"];
  4.                                                         //echo "<br />";
  5.                                                         //echo $row["part2"];
  6.                                                         //echo "<br />";
  7.                                                         //echo $largo;
  8.                                                         //echo "<br />";
  9.                                                         //echo $vol;
  10.                                                         //echo "<br />";
  11.                                                         $volumen_real = $real * $vol;
  12.                                                         $volumen_real_total = $volumen_real_total + $volumen_real;
  13.                                                         for($i = 1; $i <= $cont; $i++){
  14.                                                                 $volumen_real;
  15.                                                                 echo number_format($volumen_real, 3,',','');
  16.                                                         }      
  17.                                                         ?></td>

Última edición por livication; 27/02/2013 a las 15:03
  #2 (permalink)  
Antiguo 27/02/2013, 18:13
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: Como ordeno de mayor a menor

Lo mejor es obtenerlo desde la consulta, para eso existe un ORDER BY nombre_de_campo DESC
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 27/02/2013, 21:53
Avatar de zetahosting  
Fecha de Ingreso: octubre-2011
Mensajes: 119
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: Como ordeno de mayor a menor

$volumen_real = $real * $vol;
$volumen_real_total = $volumen_real_total + $volumen_real;
for($i = $cont; $i = 1; $i--){
$volumen_real;
echo number_format($volumen_real, 3,',','');
}
__________________
Excelente WebHosting -> www.zetahosting.net
[email protected]
Twitter: @zetahosting
  #4 (permalink)  
Antiguo 28/02/2013, 07:35
Avatar de livication  
Fecha de Ingreso: noviembre-2009
Mensajes: 78
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Como ordeno de mayor a menor

Cita:
Iniciado por Triby Ver Mensaje
Lo mejor es obtenerlo desde la consulta, para eso existe un ORDER BY nombre_de_campo DESC
El problema estan en que la VARIABLE por la que quiero ordenar se calcula luego de obtener datos de la base, de manera que no puedo ordenarla en mi consulta.
  #5 (permalink)  
Antiguo 28/02/2013, 07:39
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años
Puntos: 76
Respuesta: Como ordeno de mayor a menor

hola

muestra la consulta
  #6 (permalink)  
Antiguo 28/02/2013, 08:05
Avatar de livication  
Fecha de Ingreso: noviembre-2009
Mensajes: 78
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Como ordeno de mayor a menor

Cita:
Iniciado por informacionsys Ver Mensaje
hola

muestra la consulta

Código SQL:
Ver original
  1. $sql ="SELECT profolio,(prodescuadria||'x'||prodlargo) as escuadria, ".
  2.           "prodvolumen, ".
  3.           "prodpzas, ".
  4.           "simtrozosconsumo, ".
  5.           "split_part(prodescuadria,'x',1) as part1, ".
  6.           "split_part(prodescuadria,'x',2) as part2, ".
  7.           "prodlargo ".
  8.           "FROM (SELECT a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo, ".
  9.                                   "b.simtrozosconsumo ".
  10.                       "FROM (SELECT profolio,esqcodigo,patcodigo,simcodigo, ".
  11.                                               "simtrozosconsumo ".
  12.                                     "FROM simulaciones ".
  13.                                     "WHERE profolio IN (";
  14.  
  15. //Para cada elemento agrego el valor al la cadena $sql
  16. FOR($i = 1; $i <= $cont; $i++){
  17.      $variable = $_POST["campo".$i];
  18.      IF($i!=1) $sql .=",";
  19.      $sql .="'".$variable."'";
  20. }
  21. //A partir de aqui creo que debes corregir mas cosas...
  22. $sql .=") AND patcodigo IN (";
  23.  
  24. FOR($i = 1; $i <= $cont; $i++){
  25.      $variable1 = $_POST["campo1".$i];
  26.      IF($i!=1) $sql .=",";
  27.      $sql .="'".$variable1."'";
  28. }
  29.  
  30. $sql .=")) b,esquemaprograma a ".
  31.                  " WHERE a.profolio IN (";
  32.                  
  33. FOR($i = 1; $i <= $cont; $i++){
  34.      $variable = $_POST["campo".$i];
  35.      IF($i!=1) $sql .=",";               
  36.     $sql .="'".$variable."'";
  37. }
  38.    
  39. $sql .=") AND a.patcodigo IN (";
  40.  
  41. FOR($i = 1; $i <= $cont; $i++){
  42.      $variable1 = $_POST["campo1".$i];
  43.      IF($i!=1) $sql .=","
  44.      $sql .="'".$variable1."'";
  45. }
  46.      
  47. $sql .=") AND a.profolio=b.profolio AND a.esqcodigo=b.esqcodigo AND a.patcodigo=b.patcodigo ".
  48.             "GROUP BY a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo,b.simtrozosconsumo) c,produccionsimulada a ".
  49.             "WHERE a.simcodigo=c.simcodigo AND prodtipo!='C' ".
  50.             "ORDER BY prodvolumen DESC";


Código PHP:
Ver original
  1. <?php
  2.  
  3. if($_POST["buscar"] != ''){
  4.     $cont = $_POST["cont-oculto"];
  5. //  for($i = 1; $i <= $cont; $i++){
  6. //      $variable = $_POST["campo".$i];
  7. //      $variable1 = $_POST["campo1".$i];      
  8. //      echo "<br />";
  9. //      echo $cont;
  10. $sql ="SELECT profolio,(prodescuadria||'x'||prodlargo) as escuadria, ".
  11.           "prodvolumen, ".
  12.           "prodpzas, ".
  13.           "simtrozosconsumo, ".
  14.           "split_part(prodescuadria,'x',1) as part1, ".
  15.           "split_part(prodescuadria,'x',2) as part2, ".
  16.           "prodlargo ".
  17.           "FROM (SELECT a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo, ".
  18.                                   "b.simtrozosconsumo ".
  19.                       "FROM (SELECT profolio,esqcodigo,patcodigo,simcodigo, ".
  20.                                               "simtrozosconsumo ".
  21.                                     "FROM simulaciones ".
  22.                                     "WHERE profolio IN (";
  23.  
  24. //Para cada elemento agrego el valor al la cadena $sql
  25. for($i = 1; $i <= $cont; $i++){
  26.      $variable = $_POST["campo".$i];
  27.      if($i!=1) $sql .=",";
  28.      $sql .="'".$variable."'";
  29. }
  30. //A partir de aqui creo que debes corregir mas cosas...
  31. $sql .=") AND patcodigo IN (";
  32.  
  33. for($i = 1; $i <= $cont; $i++){
  34.      $variable1 = $_POST["campo1".$i];
  35.      if($i!=1) $sql .=",";
  36.      $sql .="'".$variable1."'";
  37. }
  38.  
  39. $sql .=")) b,esquemaprograma a ".
  40.                  " WHERE a.profolio IN (";
  41.                  
  42. for($i = 1; $i <= $cont; $i++){
  43.      $variable = $_POST["campo".$i];
  44.      if($i!=1) $sql .=",";               
  45.     $sql .="'".$variable."'";
  46. }
  47.    
  48. $sql .=") AND a.patcodigo IN (";
  49.  
  50. for($i = 1; $i <= $cont; $i++){
  51.      $variable1 = $_POST["campo1".$i];
  52.      if($i!=1) $sql .=","; 
  53.      $sql .="'".$variable1."'";
  54. }
  55.      
  56. $sql .=") AND a.profolio=b.profolio AND a.esqcodigo=b.esqcodigo AND a.patcodigo=b.patcodigo ".
  57.             "GROUP BY a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo,b.simtrozosconsumo) c,produccionsimulada a ".
  58.             "WHERE a.simcodigo=c.simcodigo AND prodtipo!='C' ".
  59.             "ORDER BY prodvolumen DESC";
  60.            
  61. //echo $sql."<br />";      
  62.                                                            
  63. $result = pg_query ( $dbconn, $sql ) or die ("ERROR EN CONSULTA"); 
  64.  
  65. if( pg_num_rows($result) != 0 ){
  66.     $suma = 0;
  67.     while( $row = pg_fetch_assoc($result) ){
  68.                         //echo number_format( ($row["prodvolumen"]), 3,',','');
  69.                         //echo "<br />";
  70.             $total = $total + $row["prodvolumen"];
  71.             }
  72. //echo number_format($total, 3,',','');
  73.         }  
  74.     //}
  75. }
  76.  
  77. if($_POST["buscar"] != ''){
  78.     $cont = $_POST["cont-oculto"];
  79.     for($i = 1; $i <= $cont; $i++){
  80. //      $variable = $_POST["campo".$i];
  81.         $variable2 = $_POST["campo2".$i];  
  82.         }  
  83. //      echo "<br />";
  84. //      echo $cont;
  85. $sql ="SELECT profolio,(prodescuadria||'x'||prodlargo) as escuadria, ".
  86.           "prodvolumen, ".
  87.           "prodpzas, ".
  88.           "simtrozosconsumo, ".
  89.           "split_part(prodescuadria,'x',1) as part1, ".
  90.           "split_part(prodescuadria,'x',2) as part2, ".
  91.           "prodlargo ".
  92.           "FROM (SELECT a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo, ".
  93.                                   "b.simtrozosconsumo ".
  94.                       "FROM (SELECT profolio,esqcodigo,patcodigo,simcodigo, ".
  95.                                               "simtrozosconsumo ".
  96.                                     "FROM simulaciones ".
  97.                                     "WHERE profolio IN (";
  98.  
  99. //Para cada elemento agrego el valor al la cadena $sql
  100. for($i = 1; $i <= $cont; $i++){
  101.      $variable = $_POST["campo".$i];
  102.      if($i!=1) $sql .=",";
  103.      $sql .="'".$variable."'";
  104. }
  105. //A partir de aqui creo que debes corregir mas cosas...
  106. $sql .=") AND patcodigo IN (";
  107.  
  108. for($i = 1; $i <= $cont; $i++){
  109.      $variable1 = $_POST["campo1".$i];
  110.      if($i!=1) $sql .=",";
  111.      $sql .="'".$variable1."'";
  112. }
  113.  
  114. $sql .=")) b,esquemaprograma a ".
  115.                  " WHERE a.profolio IN (";
  116.                  
  117. for($i = 1; $i <= $cont; $i++){
  118.      $variable = $_POST["campo".$i];
  119.      if($i!=1) $sql .=",";               
  120.     $sql .="'".$variable."'";
  121. }
  122.    
  123. $sql .=") AND a.patcodigo IN (";
  124.  
  125. for($i = 1; $i <= $cont; $i++){
  126.      $variable1 = $_POST["campo1".$i];
  127.      if($i!=1) $sql .=","; 
  128.      $sql .="'".$variable1."'";
  129. }
  130.      
  131. $sql .=") AND a.profolio=b.profolio AND a.esqcodigo=b.esqcodigo AND a.patcodigo=b.patcodigo ".
  132.             "GROUP BY a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo,b.simtrozosconsumo) c,produccionsimulada a ".
  133.             "WHERE a.simcodigo=c.simcodigo AND prodtipo!='C' ".
  134.             "ORDER BY prodvolumen DESC";
  135.            
  136. //echo $sql."<br />";
  137.                    
  138. $result = pg_query ( $dbconn, $sql ) or die ("ERROR EN CONSULTA");
  139. //Contador de Enumeracion
  140. $numeracion = 1;   
  141.  
  142. if( pg_num_rows($result) != 0 ){
  143.     $suma = 0;
  144.             while( $row = pg_fetch_assoc($result) ){
  145.                         $suma = $suma + $row["prodvolumen"];
  146.         ?>
  147.        
  148.                            
  149.                             <tr>
  150.                                 <th background="imag/bg_menuon.gif"><?php echo $numeracion++; ?></th>          
  151.                                 <td align="center"><?php echo $row["escuadria"]; ?></td>
  152.                                 <td align="center"><?php echo $row["simtrozosconsumo"]; ?></td>
  153.                                 <td align="center"><?php echo $row["prodpzas"];
  154.                                                          $suma_pzas = $suma_pzas + $row["prodpzas"];   
  155.                                                          ?></td>
  156.                                 <td align="center"><?php echo number_format($row["prodvolumen"], 2,',',''); ?></td>
  157.                                 <td align="center"><?php $porcent = ( $row["prodvolumen"] / $total ) * 100;
  158.                                                         echo number_format($porcent, 2,',','')."%";
  159.                                                         //echo "<br />";                                                   
  160.                                                         $suma_porcent = $suma_porcent + $porcent;
  161.                                                         ?></td>
  162.                                 <td align="right"><?php //echo $variable2;
  163.                                                         //echo "<br />";
  164.                                                         $real = (($variable2 * $row["prodpzas"])/$row["simtrozosconsumo"]);
  165.                                                         $real_total = $real_total + $real;
  166.                                                         echo number_format($real, 1,',','');
  167.                                                         ?></td>
  168.                                 <?php $largo = (($row["prodlargo"])*1000);
  169.                                        
  170.                                       $vol = (($row["part1"])/1000) * (($row["part2"])/1000) * (($largo)/1000);
  171.                                        
  172.                                      //echo number_format($vol, 3,',',''); ?>                  
  173.                                 <td align="right" background="imag/bg_menuon.gif">
  174.                                                   <?php
  175.                                                         //echo $row["part1"];
  176.                                                         //echo "<br />";
  177.                                                         //echo $row["part2"];
  178.                                                         //echo "<br />";
  179.                                                         //echo $largo;
  180.                                                         //echo "<br />";
  181.                                                         //echo $vol;
  182.                                                         //echo "<br />";
  183.                                                         $volumen_real = $real * $vol;
  184.                                                         $volumen_real_total = $volumen_real_total + $volumen_real;
  185.                                                        
  186.                                                             echo number_format($volumen_real, 3,',','');
  187.                                                                
  188.                                                         ?></td>                                        
  189.                             <?php
  190.                        
  191.                     }                    
  192.                 }                  
  193.             //}
  194.         }
  195.    
  196.                                                
  197. ?>
  #7 (permalink)  
Antiguo 28/02/2013, 14:17
Avatar de livication  
Fecha de Ingreso: noviembre-2009
Mensajes: 78
Antigüedad: 14 años, 5 meses
Puntos: 0
Orden de forma descendente

Estimados Foreros

Podrian ser tan amables y ayudarme a buscar la forma en que puedo ordenar los datos que resultan de mis calculos y quedan en la varibale $volumen_real.

En mi codifo aparece la consulta SQL y en las ultimas lineas se realiza el calculo de la variable, este lo tenia ordenado pero en relacion a prodvolumen que era un datos sacado de la base y es facil hacer un ORDER BY prodvolumen desc;

Pero no es lo que necesito.


Gracias por cualquier ayuda

Código PHP:
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. //      echo $cont;
  9. $sql ="SELECT profolio,(prodescuadria||'x'||prodlargo) as escuadria, ".
  10.           "prodvolumen, ".
  11.           "prodpzas, ".
  12.           "simtrozosconsumo, ".
  13.           "split_part(prodescuadria,'x',1) as part1, ".
  14.           "split_part(prodescuadria,'x',2) as part2, ".
  15.           "prodlargo ".
  16.           "FROM (SELECT a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo, ".
  17.                                   "b.simtrozosconsumo ".
  18.                       "FROM (SELECT profolio,esqcodigo,patcodigo,simcodigo, ".
  19.                                               "simtrozosconsumo ".
  20.                                     "FROM simulaciones ".
  21.                                     "WHERE profolio IN (";
  22.  
  23. //Para cada elemento agrego el valor al la cadena $sql
  24. for($i = 1; $i <= $cont; $i++){
  25.      $variable = $_POST["campo".$i];
  26.      if($i!=1) $sql .=",";
  27.      $sql .="'".$variable."'";
  28. }
  29. //A partir de aqui creo que debes corregir mas cosas...
  30. $sql .=") AND patcodigo IN (";
  31.  
  32. for($i = 1; $i <= $cont; $i++){
  33.      $variable1 = $_POST["campo1".$i];
  34.      if($i!=1) $sql .=",";
  35.      $sql .="'".$variable1."'";
  36. }
  37.  
  38. $sql .=")) b,esquemaprograma a ".
  39.                  " WHERE a.profolio IN (";
  40.                  
  41. for($i = 1; $i <= $cont; $i++){
  42.      $variable = $_POST["campo".$i];
  43.      if($i!=1) $sql .=",";               
  44.     $sql .="'".$variable."'";
  45. }
  46.    
  47. $sql .=") AND a.patcodigo IN (";
  48.  
  49. for($i = 1; $i <= $cont; $i++){
  50.      $variable1 = $_POST["campo1".$i];
  51.      if($i!=1) $sql .=","; 
  52.      $sql .="'".$variable1."'";
  53. }
  54.      
  55. $sql .=") AND a.profolio=b.profolio AND a.esqcodigo=b.esqcodigo AND a.patcodigo=b.patcodigo ".
  56.             "GROUP BY a.profolio,a.esqcodigo,a.patcodigo,b.simcodigo,b.simtrozosconsumo) c,produccionsimulada a ".
  57.             "WHERE a.simcodigo=c.simcodigo AND prodtipo!='C' ".
  58.             "ORDER BY prodvolumen DESC";
  59.            
  60. //echo $sql."<br />";
  61.        
  62. $result = pg_query ( $dbconn, $sql ) or die ("ERROR EN CONSULTA");
  63. echo "<br />";
  64. if( pg_num_rows($result) != 0 ){
  65.     while( $row = pg_fetch_assoc($result) ){
  66.    
  67. $real = (($variable2 * $row["prodpzas"])/$row["simtrozosconsumo"]);
  68. $real_total = $real_total + $real;
  69. $largo = (($row["prodlargo"])*1000);
  70. $vol = (($row["part1"])/1000) * (($row["part2"])/1000) * (($largo)/1000);
  71. //echo number_format($vol, 3,',','');                                          
  72. //echo $part1; 
  73. $volumen_real = $real * $vol;
  74. //$volumen_real_total = $volumen_real_total + $volumen_real;       
  75. $grafico .= "<set label='".$row["escuadria"]."' value='".$row["prodvolumen"]."'/>";
  76.             }
  77.         }
  78.     //}
  79. }
  80. $strXML = "<chart caption='Grafico Escuadrias Laterales' xAxisName='Escuadrias' yAxisName='Volumen' showValues='0' decimals='2' formatNumberScale='1' chartRightMargin='30'>" .$grafico. "</chart>";
  81. echo '<br />';
  82. echo '<br />';
  83. echo '<br />';
  84. echo '<br />';
  85.  
  86. echo renderChartHTML("Charts/Bar2D.swf", "",$strXML, "", 600,2000, false);
  87. ?>
  #8 (permalink)  
Antiguo 28/02/2013, 14:43
Avatar de BloodShadow  
Fecha de Ingreso: marzo-2010
Ubicación: El Salvador
Mensajes: 393
Antigüedad: 14 años, 1 mes
Puntos: 52
Respuesta: Orden de forma descendente

Lo mas recomendable es el ORDER BY en la consulta pero si te da pereza eso q te de mas pereza y lee esto articulos http://php.net/manual/es/array.sorting.php o http://php.net/manual/es/function.sort.php

Si no son array los q devuelves (no lei todo tu codigo) y devolves objetos, te reitero el uso del ORDER BY en el query
  #9 (permalink)  
Antiguo 28/02/2013, 14:45
Avatar de livication  
Fecha de Ingreso: noviembre-2009
Mensajes: 78
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Orden de forma descendente

Cita:
Iniciado por BloodShadow Ver Mensaje
Lo mas recomendable es el ORDER BY en la consulta pero si te da pereza eso q te de mas pereza y lee esto articulos http://php.net/manual/es/array.sorting.php o http://php.net/manual/es/function.sort.php

Si no son array los q devuelves (no lei todo tu codigo) y devolves objetos, te reitero el uso del ORDER BY en el query
Blood disculpame !!!

Talvez yo no sepa el tema de utilizar el ORDER BY...pero como deberia ser ....ya que lo utilize en la consulta SQL como habia dicho...pero con mi variable $volumen_real, no se de que manera realizarlo

Etiquetas: html, mayor, menor, orden, select, sql
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 06:37.