Foros del Web » Programando para Internet » PHP »

Mejorar este IF

Estas en el tema de Mejorar este IF en el foro de PHP en Foros del Web. Tengo este if creado que disitinge una compra y sus distintas formas de pago y de envio, pero mi idea es mejorar las sentencias para ...
  #1 (permalink)  
Antiguo 22/05/2008, 04:38
 
Fecha de Ingreso: marzo-2008
Ubicación: En casa
Mensajes: 252
Antigüedad: 16 años
Puntos: 4
Mejorar este IF

Tengo este if creado que disitinge una compra y sus distintas formas de pago y de envio, pero mi idea es mejorar las sentencias para que no tenga que usar tantas, y si me podriais ayudar estaria muy bien, ya que asi reduciria el numero de lineas, muchas gracias de antemano.

Código PHP:
$cs1="SELECT * FROM envios WHERE idenvios='correos'";
$rs1=mysql_query($cs1);
$dt1=mysql_fetch_row($rs1);
$cs2="SELECT * FROM envios WHERE idenvios='correos2'";
$rs2=mysql_query($cs2);
$dt2=mysql_fetch_row($rs2);
$cs3="SELECT * FROM envios WHERE idenvios='DHL'";
$rs3=mysql_query($cs3);
$dt3=mysql_fetch_row($rs3);
$cs4="SELECT * FROM envios WHERE idenvios='DHL2'";
$rs4=mysql_query($cs4);
$dt4=mysql_fetch_row($rs4);
$cs5="SELECT * FROM envios WHERE idenvios='DHL3'";
$rs5=mysql_query($cs5);
$dt5=mysql_fetch_row($rs5);
$cs6="SELECT * FROM envios WHERE idenvios='europa'";
$rs6=mysql_query($cs6);
$dt6=mysql_fetch_row($rs6);
$cs7="SELECT * FROM envios WHERE idenvios='america'";
$rs7=mysql_query($cs7);
$dt7=mysql_fetch_row($rs7);
$cs8="SELECT * FROM envios WHERE idenvios='asia'";
$rs8=mysql_query($cs8);
$dt8=mysql_fetch_row($rs8);
if (
$datuak[14]=='españa')
    {
        if(
$suma<=50)
        {    if (
$datuak[12]=='correos')
            {
$dn=$dt1[1];}
            elseif (
$datuak[12]=='DHL')
            {
$dn=$dt3[1];}
        }
        elseif(
$suma<=120)
        {    if (
$datuak[12]=='correos')
            {
$dn=0;}
            elseif (
$datuak[12]=='DHL')
            {
$dn=$dt4[1];}
        }
        elseif(
$suma>=120)
        {    if (
$datuak[12]=='correos')
            {
$dn=0;}
            elseif (
$datuak[12]=='DHL')
            {
$dn=0;}
        }
        else{
$dn=0;}
        
        if (
$datuak[11]=contra reenbolso)
        {    if (
datuak[12]='correos')
            {
$dn2=$dt2[1];}
            else {
$dn2=+($suma*dt5[1]);}
        }
        else {
$dn2=0;}
    }
elseif (
$datuak[14]=='europa')
    {
$dn$dt3[1];}
elseif (
$datuak[14]=='america')
    {
$dn$date1[1];}
else{
$dn$dt4[1];} 
  #2 (permalink)  
Antiguo 22/05/2008, 05:46
 
Fecha de Ingreso: mayo-2005
Mensajes: 188
Antigüedad: 18 años, 10 meses
Puntos: 6
Respuesta: Mejorar este IF

Yo empezaría por "darle la vuelta". Primero determina qué consulta debes hacer, según los valores de $suma y $datuak, y luego realizas la consulta a la BD. ¿Qué sentido tiene hacer los SELECTs que haces y luego asignar un resultado u otro según las variables de entrada? Sinceramente, no lo entiendo... :(
  #3 (permalink)  
Antiguo 23/05/2008, 00:30
 
Fecha de Ingreso: marzo-2008
Ubicación: En casa
Mensajes: 252
Antigüedad: 16 años
Puntos: 4
Respuesta: Mejorar este IF

vamos que lo inteligente seria que en cada if cargara la cosulta que necesitara no ?
__________________
Ayudar cuesta mucho, dar las gracias no tanto, tenlo en cuenta siempre.
  #4 (permalink)  
Antiguo 23/05/2008, 00:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Mejorar este IF

has intentado los IF cortos?

Código PHP:
  $dn $datuak[12] == 'correos'$dt1[1]: $dt3[1]; 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 07:20.