Foros del Web » Programando para Internet » PHP »

Codigo demasiado largo?

Estas en el tema de Codigo demasiado largo? en el foro de PHP en Foros del Web. Hola amigos!!! con la poca experiencia que tengo programando en php logre hacer un codigo , para ingresar compras realizadas por un usuario varia segun ...
  #1 (permalink)  
Antiguo 11/11/2011, 06:48
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Codigo demasiado largo?

Hola amigos!!!
con la poca experiencia que tengo programando en php
logre hacer un codigo , para ingresar compras realizadas por un usuario
varia segun la moneda en que este registrado el articulo y en que se registro la compra
funciona bien, pero para mi es demasiado largo y seguramente estoy haciendo algo mal (no me tengo mucha confianza jajaja) o algo demas
la pregunta es, ustedes me podrian decir si se puede simplificar o eliminar algo?
Saludos y muchas gracias!!!
Código PHP:
Ver original
  1. if ($compra_arti_id) {
  2.     for ($i = 0; $i < sizeof($compra_arti_id); $i++) {
  3.         $sql1 = "SELECT A.arti_id,A.moneda,M.mone_id,M.moneda_venta,M.moneda_incremento FROM articulos A INNER JOIN monedas M ON A.moneda=M.mone_id WHERE A.arti_id='" . $compra_arti_id[$i] . "'";
  4.         $res1 = mysql_query($sql1, Conectar::con()) or die(mysql_error());
  5.  
  6.         while ($row = mysql_fetch_array($res1)) {
  7.             $fi = $row['moneda_venta'] + $row['moneda_incremento'];
  8.         }
  9.         $final = $compra_precio[$i] * $compra_coti / $fi;
  10.  
  11.         $sql2 = "UPDATE  articulos SET arti_costo       = '" . $final . "',   ";
  12.         $sql2 .= "gar_art   = '" . $compra_gar_art[$i] . "', ";
  13.         $sql2 .= "proce     = '" . $compra_proce[$i] . "', ";
  14.  
  15.         switch ($stk_suc[$i]) {
  16.             case 1:
  17.                 $sql2 .= "stk1 = stk1 + '" . $compra_cantidad[$i] . "' ";
  18.                 break;
  19.             case 2:
  20.                 $sql2 .= "stk2 = stk2 + '" . $compra_cantidad[$i] . "' ";
  21.                 break;
  22.             case 3:
  23.                 $sql2 .= "stk3 = stk3 + '" . $compra_cantidad[$i] . "' ";
  24.                 break;
  25.             case 4:
  26.                 $sql2 .= "stk4 = stk4 + '" . $compra_cantidad[$i] . "' ";
  27.                 break;
  28.             case 5:
  29.                 $sql2 .= "stk5 = stk5 + '" . $compra_cantidad[$i] . "' ";
  30.                 break;
  31.             case 6:
  32.                 $sql2 .= "stk6 = stk6 + '" . $compra_cantidad[$i] . "' ";
  33.                 break;
  34.             case 7:
  35.                 $sql2 .= "stk7 = stk7 + '" . $compra_cantidad[$i] . "' ";
  36.                 break;
  37.             case 8:
  38.                 $sql2 .= "stk8 = stk8 + '" . $compra_cantidad[$i] . "' ";
  39.                 break;
  40.             case 9:
  41.                 $sql2 .= "stk9 = stk9 + '" . $compra_cantidad[$i] . "' ";
  42.                 break;
  43.             case 10:
  44.                 $sql2 .= "stk10 = stk10 + '" . $compra_cantidad[$i] . "' ";
  45.                 break;
  46.         }
  47.         $sql2 .= " WHERE arti_id='" . $compra_arti_id[$i] . "'";
  48.  
  49.  
  50.         $res2 = mysql_query($sql2, Conectar::con()) or die(mysql_error());
  51.     }
  52. }
  53.  
  54.  
  55. $sql4 = "SELECT P.cuenta_cor,P.proveedor_id,M.mone_id,M.moneda_venta,M.moneda_incremento FROM proveedores P INNER JOIN monedas M ON P.cuenta_cor=M.mone_id WHERE P.proveedor_id='" . $compra_cod_prov . "'";
  56. $res4 = mysql_query($sql4, Conectar::con()) or die(mysql_error());
  57. while ($fila = mysql_fetch_array($res4)) {
  58.     $final_pro = $fila['moneda_venta'] + $fila['moneda_incremento'];
  59. }
  60. $final_total = bcmul($compra_total, $compra_coti, 2);
  61. $tf = bcdiv($final_total, $final_pro, 2);
  62.  
  63.  
  64.  
  65. $sql3 = "UPDATE proveedores SET prov_saldo = prov_saldo + $tf  WHERE proveedor_id='" . $compra_cod_prov . "'";
  66. $res3 = mysql_query($sql3, Conectar::con()) or die(mysql_error());
  67.  
  68.  
  69. @ $compra_arti_id = implode('|', $compra_arti_id);
  70. @ $compra_proce = implode('|', $compra_proce);
  71. @ $compra_gar_art = implode('|', $compra_gar_art);
  72. @ $stk_suc = implode('|', $stk_suc);
  73. @ $compra_cantidad = implode('|', $compra_cantidad);
  74. @ $compra_precio = implode('|', $compra_precio);
  75. @ $compra_iva = implode('|', $compra_iva);
  76. @ $tran_id = implode('|', $tran_id);
  77. @ $costo_tran = implode('|', $costo_tran);
  78. @ $iva_tran = implode('|', $iva_tran);
  79. @ $impuesto2_id = implode('|', $impuesto2_id);
  80. @ $costo_imp = implode('|', $costo_imp);
  81. @ $des_id = implode('|', $des_id);
  82. @ $costo_des = implode('|', $costo_des);
  83.  
  84.  
  85.  
  86.  
  87. $sql = "INSERT INTO compras VALUES((SELECT max(c.compra_id) + 1 FROM compras c),'$compra_cod_prov','$compra_num_suc','$compra_num_com','$compra_coti','$compra_moneda','$compra_arti_id','$compra_proce','$compra_gar_art','$stk_suc','$compra_cantidad','$compra_precio','$compra_iva','$tran_id','$costo_tran','$iva_tran','$impuesto2_id','$costo_imp','$des_id','$costo_des','$compra_total','$compra_usuario',now(),now(),'0','0','$tf','$compra_clase','$compra_ob','Fc','$tf')";
  88. $res = mysql_query($sql, Conectar::con()) or die(mysql_error());
  89.  
  90.  
  91.  
  92.  
  93.  
  94. echo $compra_num_suc . "-" . $compra_num_com;
  #2 (permalink)  
Antiguo 11/11/2011, 06:53
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Codigo demasiado largo?

al menos el switch se puede sustituir con una sola línea

Código PHP:
Ver original
  1. $sql2 .= "stk$i = stk$i + '{$compra_cantidad[$i]}'";

pero me parece que tu modelo de datos no está debidamente normalizado
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 11/11/2011, 06:58
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Codigo demasiado largo?

gracias por la respuesta ahora lo pruebo
perdon por mi ignorancia pero que seria el modelo de datos?
saludos
  #4 (permalink)  
Antiguo 11/11/2011, 07:01
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Codigo demasiado largo?

Cita:
Iniciado por tumbero_x Ver Mensaje
gracias por la respuesta ahora lo pruebo
perdon por mi ignorancia pero que seria el modelo de datos?
saludos
, bueno, te toca investigar sobre estándares en base de datos (modelo de datos para muchas metodologías):

bases de datos relacionales
niveles de normalización
cardinalidad
redundancia de datos
semantización

te falta estudiar mucho....
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Última edición por maycolalvarez; 11/11/2011 a las 07:13 Razón: doble acento OMG!!! 0.0 XD
  #5 (permalink)  
Antiguo 11/11/2011, 07:04
 
Fecha de Ingreso: octubre-2010
Ubicación: Buenos Aires
Mensajes: 557
Antigüedad: 13 años, 6 meses
Puntos: 4
Respuesta: Codigo demasiado largo?

Buenisimo gracias!!!
voy a seguuir tu consejo
Saludos!!!

Etiquetas: demasiado, mysql, registro, sql, usuarios
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 08:20.