Ver Mensaje Individual
  #5 (permalink)  
Antiguo 25/01/2010, 15:41
lennhix
 
Fecha de Ingreso: octubre-2009
Mensajes: 74
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Amigos necesito de toda su ayuda porfavor, con mantener 100% Algoritmo PHP

Holas, he creado un algoritmo pero todavía no se porqué no me da resultado.

Código PHP:
Ver original
  1. <?php
  2. require_once '../../../config/mysql.php';
  3. $dbCon = Conectarse();
  4.  
  5. // Capturamos los valores con $_GET[]
  6. $productor              = $_GET['productor'];           //Ej. : Agricola Saenz
  7. $especie                = $_GET['especie'];             //Ej. : Ciruela
  8. $variedad               = $_GET['variedad'];            //Ej. : Angeleno
  9. $etapa                  = $_GET['etapa'];               //Ej. : 2
  10. $calibre                = $_GET['calibre'];             //Ej. : 36
  11.  
  12. $porcentualReal         = $_GET['porcentualReal'];      //El Porcentaje de este calibre 36 es 1.9, esta variable guarda : 1.12
  13. $porcentual             = $_GET['campoPorcentual'];     //Lo que el usuario a ingresado en la casilla porcentual, Ej: 70.
  14.                            
  15.  
  16. // Actualizamos el valor porcentual con el valor que el usuario a ingresado.
  17. mysql_query("UPDATE criterio_calibres SET valor_porcentual = $porcentual WHERE CONVERT(`criterio_calibres`.`id_especie` USING utf8) = '$especie' AND CONVERT(`criterio_calibres`.`id_productor` USING utf8) = '$productor' AND CONVERT(`criterio_calibres`.`id_variedad` USING utf8) = '$variedad' AND `criterio_calibres`.`etapa` = $etapa AND `criterio_calibres`.`id_calibre` = $calibre LIMIT 1", $dbCon)or die(mysql_error());
  18.  
  19. // Sumamos la cantidad de valores porcentuales en total.
  20. $queryCriterioCalibre = mysql_query("SELECT SUM(valor_porcentual) as suma FROM criterio_calibres WHERE id_productor = '$productor' AND id_especie = '$especie' AND id_variedad = '$variedad' AND etapa = $etapa", $dbCon);
  21. $resultadoPorcentual = mysql_fetch_array($queryCriterioCalibre);
  22. $Suma = round($resultadoPorcentual['suma'],0);
  23. //Ej: $Suma = 162
  24.  
  25. if($Suma > 100){
  26.     $Salir          = 0;
  27.     $Numerador      = ($Suma - 100);
  28.     $Delta          = 0;
  29.     $Cero           = 0;            //Consultamos en MySQL sobre un porcentual mayor a cero.
  30.    
  31.     // Recuperamos la cantidad total de columnas, menos el valor porcentual que se ha modificado y las que tienen valor cero.
  32.     $Resultado              = mysql_query("SELECT COUNT(valor_porcentual) AS Cantidad FROM criterio_calibres WHERE CONVERT(`criterio_calibres`.`id_especie` USING utf8) = '$especie' AND CONVERT(`criterio_calibres`.`id_productor` USING utf8) = '$productor' AND CONVERT(`criterio_calibres`.`id_variedad` USING utf8) = '$variedad' AND `criterio_calibres`.`etapa` = $etapa AND `criterio_calibres`.`id_calibre` != $calibre AND `criterio_calibres`.`valor_porcentual` != $porcentual AND `criterio_calibres`.`valor_porcentual` > $Cero", $dbCon)or die(mysql_error());
  33.     $Columnas               = mysql_fetch_array($Resultado);
  34.     $Denominador            = $Columnas['Cantidad'];
  35.     //Ej: $Denominador = 15 (Me ha contado 15 columnas, menos la que se ha modificado)
  36.    
  37. while($Salir == 0){
  38.  
  39.     $Consultamos = mysql_query("SELECT id_calibre, valor_porcentual FROM `criterio_calibres` WHERE CONVERT(`criterio_calibres`.`id_especie` USING utf8) = '$especie' AND CONVERT(`criterio_calibres`.`id_productor` USING utf8) = '$productor' AND CONVERT(`criterio_calibres`.`id_variedad` USING utf8) = '$variedad' AND `criterio_calibres`.`etapa` = $etapa AND `criterio_calibres`.`id_calibre` != $calibre AND `criterio_calibres`.`valor_porcentual` != $porcentual", $dbCon)or die(mysql_error());
  40.     while($columnasValores = mysql_fetch_array($Consultamos)){ 
  41.         $valor_porcentual = $columnasValores['valor_porcentual'];  
  42.        
  43.         if($valor_porcentual > ($Numerador/$Denominador)){
  44.             $Porcentaje = $valor_porcentual-($Numerador/$Denominador);
  45.             mysql_query("UPDATE criterio_calibres SET valor_porcentual = $Porcentaje WHERE CONVERT(`criterio_calibres`.`id_especie` USING utf8) = '$especie' AND CONVERT(`criterio_calibres`.`id_productor` USING utf8) = '$productor' AND CONVERT(`criterio_calibres`.`id_variedad` USING utf8) = '$variedad' AND `criterio_calibres`.`etapa` = $etapa AND CONCAT(`criterio_calibres`.`valor_porcentual`) = $valor_porcentual LIMIT 1", $dbCon)or die(mysql_error());
  46.         }else{
  47.             $Delta = $Delta + (($Numerador/$Denominador)-$valor_porcentual);
  48.             $Porcentaje = 0;           
  49.         }
  50.     }
  51.    
  52.     if($Delta == 0){
  53.         $Salir = 1;
  54.     }else{
  55.         $Numerador  = $Delta;
  56.         $Delta      = 0;
  57.     }
  58. }
  59. // Esto esta bien, está funcionando ok
  60. }elseif($Suma <= 100){
  61.     $resultadoSumar             =   ($porcentualReal-$porcentual);
  62.     $resultadoDivisionSumar     =   ($resultadoSumar/$quantyColumnas); 
  63.  
  64.     $Consultamos = mysql_query("SELECT id_calibre, valor_porcentual FROM `criterio_calibres` WHERE CONVERT(`criterio_calibres`.`id_especie` USING utf8) = '$especie' AND CONVERT(`criterio_calibres`.`id_productor` USING utf8) = '$productor' AND CONVERT(`criterio_calibres`.`id_variedad` USING utf8) = '$variedad' AND `criterio_calibres`.`etapa` = $etapa AND `criterio_calibres`.`id_calibre` != $calibre AND `criterio_calibres`.`valor_porcentual` != $porcentual", $dbCon)or die(mysql_error());
  65.     while($columnasValores = mysql_fetch_array($Consultamos)){
  66.         $id_calibre       = $columnasValores['id_calibre'];
  67.         $valor_porcentual = $columnasValores['valor_porcentual'];
  68.        
  69.         $resultadoSuma = $resultadoDivisionSumar + $valor_porcentual;
  70.         mysql_query("UPDATE criterio_calibres SET valor_porcentual = $resultadoSuma WHERE CONVERT(`criterio_calibres`.`id_especie` USING utf8) = '$especie' AND CONVERT(`criterio_calibres`.`id_productor` USING utf8) = '$productor' AND CONVERT(`criterio_calibres`.`id_variedad` USING utf8) = '$variedad' AND `criterio_calibres`.`etapa` = $etapa AND CONCAT(`criterio_calibres`.`valor_porcentual`) = $valor_porcentual LIMIT 1", $dbCon)or die(mysql_error());
  71.     }
  72. }
  73. /* ++++++++++++++++++++ Fin +++++++++++++++++++++++*/

Última edición por lennhix; 25/01/2010 a las 15:47