Foros del Web » Programando para Internet » PHP »

problema con if y elseif (php)

Estas en el tema de problema con if y elseif (php) en el foro de PHP en Foros del Web. que el segundo bloque de instrucciones que esta dentro de un elseif no se me ejecuta. pongo el codigo y después lo comento para que ...
  #1 (permalink)  
Antiguo 30/06/2010, 14:33
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 13 años, 3 meses
Puntos: 1
problema con if y elseif (php)

que el segundo bloque de instrucciones que esta dentro de un elseif no se me ejecuta. pongo el codigo y después lo comento para que me digais que estoy haciendo mal.


Código PHP:
<?php


$precioplantilla
=$_POST['precioplantilla'];
$etiquetado=$_POST['etiquetado'];
$ivafactura=$_POST['ivafactura'];

$colorcamiseta1=$_POST['colorcamiseta1'];
$colortinta1=$_POST['colortinta1'];
$numerocamisetas1=$_POST['numerocamisetas1'];
$precioregistro1=$_POST['precioregistro1'];
$preciototal1=$_POST['preciototal1'];

$colorcamiseta2=$_POST['colorcamiseta2'];
$colortinta2=$_POST['colortinta2'];
$numerocamisetas2=$_POST['numerocamisetas2'];
$precioregistro2=$_POST['precioregistro2'];
$preciototal2=$_POST['preciototal2'];

$colorcamiseta3=$_POST['colorcamiseta3'];
$colortinta3=$_POST['colortinta3'];
$numerocamisetas3=$_POST['numerocamisetas3'];
$precioregistro3=$_POST['precioregistro3'];
$preciototal3=$_POST['preciototal3'];

$colorcamiseta4=$_POST['colorcamiseta4'];
$colortinta4=$_POST['colortinta4'];
$numerocamisetas4=$_POST['numerocamisetas4'];
$precioregistro4=$_POST['precioregistro4'];
$preciototal4=$_POST['preciototal4'];

$colorcamiseta5=$_POST['colorcamiseta5'];
$colortinta5=$_POST['colortinta5'];
$numerocamisetas5=$_POST['numerocamisetas5'];
$precioregistro5=$_POST['precioregistro5'];
$preciototal5=$_POST['preciototal5'];

$totalfactura=$_POST['totalfactura'];
$iva=$_POST['iva'];


$arrayduda2=array ("$colorcamiseta2" =>$_POST['colorcamiseta2'] ,"$colortinta2"=>$_POST['colortinta2'],"$numerocamisetas2"=>$_POST['numerocamisetas2'],"$precioregistro2"=>$_POST['precioregistro2'],"$preciototal2"=>$_POST['preciototal2']);

$arrayduda3=array ("$colorcamiseta3" =>$_POST['colorcamiseta3'] ,"$colortinta3"=>$_POST['colortinta3'],"$numerocamisetas3"=>$_POST['numerocamisetas3'],"$precioregistro3"=>$_POST['precioregistro3'],"$preciototal3"=>$_POST['preciototal3']);

$arrayduda4=array ("$colorcamiseta4" =>$_POST['colorcamiseta4'] ,"$colortinta4"=>$_POST['colortinta4'],"$numerocamisetas4"=>$_POST['numerocamisetas4'],"$precioregistro4"=>$_POST['precioregistro4'],"$preciototal4"=>$_POST['preciototal4']);

if (!empty(
$arrayduda2)){
    
    
    
$ssql "insert into presupuesto(precioplantilla, etiquetado,ivafactura, colorcamiseta1,
            colortinta1,numerocamisetas1,precioregistro1,
            preciototal1,totalfactura, iva) values  (('$precioplantilla'),('$etiquetado'),('$ivafactura'),
            ('$colorcamiseta1'),('$colortinta1'),('$numerocamisetas1'),('$precioregistro1'),('$preciototal1'),
            ('$totalfactura'),('$iva'))"
;
    
    
$conexionmysql_connect("localhost""root""");
    
    
mysql_select_db("abcerotica"$conexion);
    
    
mysql_query($ssql$conexion);
}
    
    elseif (!empty(
$arrayduda3)) {
        
        
        
        
$ssql "insert into presupuesto(precioplantilla, etiquetado,ivafactura, colorcamiseta1,
                colortinta1,numerocamisetas1,precioregistro1,
                preciototal1,colorcamiseta2,
                colortinta2,numerocamisetas2,precioregistro2,
                preciototal2,
                totalfactura, iva) values  (('$precioplantilla'),('$etiquetado'),('$ivafactura'),
                ('$colorcamiseta1'),('$colortinta1'),('$numerocamisetas1'),('$precioregistro1'),('$preciototal1'),
                ('$colorcamiseta2'),('$colortinta2'),('$numerocamisetas2'),('$precioregistro2'),('$preciototal2'),
                ('$totalfactura'),('$iva'))"
;
        
        
$conexionmysql_connect("localhost""root""");
        
        
mysql_select_db("abcerotica"$conexion);
        
        if (
mysql_query($ssql$conexion)){
            echo 
"sentencia ingresada!";
        }else{
            echo 
"no inserte nada!" ;
        }

    }
        
        
        
        
        
        
            
else {
    echo 
"no se inserta nada";
}

?>

tengo un manual de php que dice lo siguiente: para que se evalue un elseif el if de delante tiene que ser evaluado como false.

ahora en el primer "if" tengo un condicional (!empty($arrayduda2)) { bloque de instrucciones}

esta funcion empty devuelve false si la variable (en este caso una array) no esta vacia, es decir devuelve false si la variable contiene algo.

entonces si el primer if que tiene (!empty($....) que tiene el simbolo "!" con lo que si el array contiene informacion el if devuelve true en caso de estar el array vacio se ejecuta el mimo "if".

me equivoco en lo que estoy diciendo????.

entonces si el primer array no esta vacio, contiene su informacion con lo que deberia de devolver false (empty=false si la variable contiene informacion).

por que no se me ejecuta el primer elseif???????.

o es un fallo de otro tipo????
  #2 (permalink)  
Antiguo 30/06/2010, 14:55
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 13 años
Puntos: 66
Respuesta: problema con if y elseif (php)

Para salir de dudas puedes minimizar las instrucciones, sentencias dentro de los condicionales para ver donde está el fallo.
Código PHP:
if (!empty($arrayduda2)){
echo
"se ejecuta el primer if";
}
elseif (!empty(
$arrayduda3)) {
     echo
"se ejecuta el primer elseif<br/>";
     if (
1==1){
            echo 
"se ejecuta el if dentro del elseif";
     }
     else{
            echo 
"no se ejecuta el if dentro del elseif" ;
     }
}           
else {
    echo 
"no se ejecuta ni el primer if ni el elseif";

__________________
Tu álbum de cromos online!!
  #3 (permalink)  
Antiguo 30/06/2010, 14:58
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: problema con if y elseif (php)

gracias voy a probar eso que dices haber que se ejecuta y que no..
  #4 (permalink)  
Antiguo 30/06/2010, 15:02
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: problema con if y elseif (php)

ya lo e comprobao se me ejecuta el primer if aunque tenga datos insertados en el formulario en la segunda linea de camisetas [colorcamiseta, colortinta,etcetc]...

una cosa mas..el formulario es dinamico (con javascript) y en la base de datos todos los grupos de datos de lineas de camiseta a partir de la segunda (colorcamiseta2, colortinta2...) estan puestos como null... Esto me esta afectando a que no se me ejecute el primer elseif?
  #5 (permalink)  
Antiguo 30/06/2010, 15:12
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 13 años
Puntos: 66
Respuesta: problema con if y elseif (php)

Cita:
Iniciado por rufus Ver Mensaje
ya lo e comprobao se me ejecuta el primer if aunque tenga datos insertados en el formulario en la segunda linea de camisetas [colorcamiseta, colortinta,etcetc]...
Precisamente se tiene que ejecutar por que le dices:
Código PHP:
if (!empty($arrayduda2)){ //si no está vacio ejecuta.... 
En caso contrario deberias poner
Código PHP:
if (empty($arrayduda2)){ //si está vacio ejecuta.... 
__________________
Tu álbum de cromos online!!
  #6 (permalink)  
Antiguo 30/06/2010, 15:16
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 14 años, 5 meses
Puntos: 10
Respuesta: problema con if y elseif (php)

Un condicionl no puede ejecutarse todo...

Si esto se cuple ya esta... Por mas else if que haya.
Y por lo que dices y se ve, se cumple. En fin, es lo primero en cuplirse, ergo el resto de los bloques queda intacto.

Código PHP:

if (!empty($arrayduda2)){ 

//se ejecuta este trozo y nada mas...

}elseif{
..... 
  #7 (permalink)  
Antiguo 30/06/2010, 15:20
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: problema con if y elseif (php)

santris ya he puesto el codigo como me as dicho y ya me funciona bien (por el momento si en teoria) pero antes cuando ponia el if(empty($...) me daba un error de php y no entiendo ahora al no poner el !empty por que no me sale ese error.....
  #8 (permalink)  
Antiguo 30/06/2010, 15:23
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 14 años, 5 meses
Puntos: 10
Respuesta: problema con if y elseif (php)

Ejemplo:

Código PHP:

<?php

//comenta el primero, luego el segundo, luego el tercero, y veras.
$a="valor";
$b="valor";
$c="valor";

//es el primnero en cumplirse y ahi queda entonces.
if($a){ 
echo 
"Se cumple1";
}elseif(
$b){
echo 
"Se cumple2";
}elseif(
$c){
echo 
"Se cumple3";
}else{
echo 
"Se cumple ...sino queda otra";


?>
  #9 (permalink)  
Antiguo 30/06/2010, 15:25
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: problema con if y elseif (php)

he hecho la prueba si no pongo el simbolo "!" delante del empty no se ejecuta el bloque de instrucciones. en los dos tanto en el if (empty($arraduda2) como en el elseif (empty($arrayduda3) si no pongo el "!" no hace nada!!!

por que?
  #10 (permalink)  
Antiguo 30/06/2010, 15:25
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 13 años
Puntos: 66
Respuesta: problema con if y elseif (php)

Cita:
Iniciado por rufus Ver Mensaje
santris ya he puesto el codigo como me as dicho y ya me funciona bien (por el momento si en teoria) pero antes cuando ponia el if(empty($...) me daba un error de php y no entiendo ahora al no poner el !empty por que no me sale ese error.....
Probablemente sería un error de sintaxis que has solucionado al realizar cambios.
__________________
Tu álbum de cromos online!!
  #11 (permalink)  
Antiguo 30/06/2010, 15:31
 
Fecha de Ingreso: mayo-2010
Mensajes: 212
Antigüedad: 12 años, 2 meses
Puntos: 3
Respuesta: problema con if y elseif (php)

No se si te sirva usar arreglos para tener menos variables y se te sea mas manejable la informacion y no tengas muchos ifs ya que entiendo que es mejor tener cuanto maximo 3 if anidados como standard.
  #12 (permalink)  
Antiguo 30/06/2010, 15:34
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 13 años
Puntos: 66
Respuesta: problema con if y elseif (php)

Cita:
Iniciado por rufus Ver Mensaje
he hecho la prueba si no pongo el simbolo "!" delante del empty no se ejecuta el bloque de instrucciones. en los dos tanto en el if (empty($arraduda2) como en el elseif (empty($arrayduda3) si no pongo el "!" no hace nada!!!

por que?
Bueno, eso es por que las dos variables teoricamente están llenas, ahora debes averiguar si están llenas por ejemplo puedes hacer:
Código PHP:
var_dump($arrayduda2); 
nota: el simbolo"!" es de negación
__________________
Tu álbum de cromos online!!

Etiquetas: elseif
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 02:17.