Tema: Condicion if
Ver Mensaje Individual
  #10 (permalink)  
Antiguo 01/06/2011, 18:01
rolygc
 
Fecha de Ingreso: abril-2009
Ubicación: en un lugar de la mancha
Mensajes: 236
Antigüedad: 15 años
Puntos: 38
Respuesta: Condicion if

El error esta en el concepto ke tienes del AND y el OR primero ke todo,

"AND" y "&&" es lo mismo

"OR" y "||" es lo mismo


La condicion AND devuelve Verdadero solo si ambas partes devuelven Verdadero. En tu caso seria asi.

Código PHP:
// Suponiendo ke el valor fuera PUEDE. 
//$row_somosfavoritos['aceptado'] = "PUEDE";

// Chekear. 
if ($row_somosfavoritos['aceptado'] != "PUEDE" && $row_somosfavoritos['aceptado'] != "NO")
    echo 
"Condicion AND VERDADERA, el valor ni es \"PUEDE\" ni es \"NO\"";
else
    echo 
"Condicion AND FALSA, el valor es uno de los dos \"PUEDE\" o \"NO\"."
1ra Condicion: $row_somosfavoritos['aceptado'] NO Es "PUEDE" --> FALSO porke $row_somosfavoritos['aceptado'] SI Es "PUEDE".

2da Condicion: $row_somosfavoritos['aceptado'] NO Es "NO" --> Verdadero porke $row_somosfavoritos['aceptado'] Es "PUEDE" --> no es "NO".

O sea esta condicion tendra como resultado 1ra FALSO y 2da VERDADERO. Resultado Final FALSO.
Mostrara en pantalla: Condicion AND FALSA, el valor es uno de los dos "PUEDE" o "NO".

El mismo resultado tendrias si el valor asignado a $row_somosfavoritos fuera "NO".

Por lo ke es logico tendrias el resultado inverso si el valor asignado no fuera ni "PUEDE" ni "NO"

Código PHP:
// Suponiendo ke el valor fuera "Cualkier Valor". 
//$row_somosfavoritos['aceptado'] = "Cualkier Valor";

// Chekear. 
if ($row_somosfavoritos['aceptado'] != "PUEDE" && $row_somosfavoritos['aceptado'] != "NO")
    echo 
"Condicion AND VERDADERA, el valor ni es \"PUEDE\" ni es \"NO\"";
else
    echo 
"Condicion AND FALSA, el valor es uno de los dos \"PUEDE\" o \"NO\"."
1ra Condicion: $row_somosfavoritos['aceptado'] NO Es "PUEDE" --> Verdadero porke $row_somosfavoritos['aceptado'] Es "Cualkier valor".

2da COndicion: $row_somosfavoritos['aceptado'] NO Es "NO" --> Verdadero porke $row_somosfavoritos['aceptado'] Es "Cualkier valor".

Por lo tanto tienes como 1er resutlado Verdadero y 2do resultado Verdadero, Resultado Final Verdadero.

Mostrara en pantalla: Condicion AND VERDADERA, el valor ni es "PUEDE" ni es "NO".

Resuminedo AND (&&) solo devuelve VERDADERO cuando ambas condiciones son VERDADERAS.

Verdadero y Verdadero = Verdadero. // ejecutara le ke este dentro del IF
Verdadero y Falso = Falso. // ejecutara lo ke este dentro del ELSE

El OR (||)

Devuelve VERDADERO si cualkiera de las 2 condiciones es VERDADERA o ambas lo son. Solo basta ke una sea verdadera para devolver VERDADERO.

Código PHP:
// Suponiendo ke el valor fuera PUEDE. 
//$row_somosfavoritos['aceptado'] = "PUEDE";

// Chekear. 
if ($row_somosfavoritos['aceptado'] != "PUEDE" || $row_somosfavoritos['aceptado'] != "NO")
    echo 
"Condicion OR VERDADERA, el valor puede ser cualkier valor";
else
    echo 
"No se ejecutara este trozo de codigo."
1ra Condicion: $row_somosfavoritos['aceptado'] NO Es "PUEDE" --> FALSO porke $row_somosfavoritos['aceptado'] SI Es "PUEDE".

2da Condicion: $row_somosfavoritos['aceptado'] NO Es "NO" --> Verdadero porke $row_somosfavoritos['aceptado'] NO Es "NO".

Por lo tanto tienes como 1er resutlado FALSO y 2do resultado Verdadero, Resultado Final Verdadero.
Veras en pantalla: Condicion OR VERDADERA, el valor puede ser cualkier valor.

Lo mismo te pasaria con cualkier valor ke le asignes a la variable.

Para "cualkier valor" asignado.

1ra Condicion: $row_somosfavoritos['aceptado'] NO Es "PUEDE" --> VERDADERO porke $row_somosfavoritos['aceptado'] no Es "PUEDE".

2da Condicion: $row_somosfavoritos['aceptado'] NO Es "NO" --> VERDADERO porke $row_somosfavoritos['aceptado'] no es "NO".

Veras en pantalla lo mismo: Condicion OR VERDADERA, el valor puede ser cualkier valor.

Para ke devulva FALSO tendrian ambas condiciones ke ser FALSO, y eso nunca lo lograrias con dos condiciones diferentes y un solo valor a checkar, es lo mismo

ke "No puedes estar en dos lugares diferentes en el mismo intervalo de tiempo".

No puedes chekear con OR dos condicines ke NO sean el valor con respecto a un unico valor, logico ke siempre una de las dos condiciones no sera nunca el valor.

Para lograr esto tendrias ke replantearte la condicion y checkearla con la igualdad.

Por Ejemplo:

Código PHP:
// Suponiendo ke el valor fuera Caulkier valor. 
//$row_somosfavoritos['aceptado'] = "Calkier valor";

// Chekear. 
if ($row_somosfavoritos['aceptado'] == "PUEDE" || $row_somosfavoritos['aceptado'] == "NO")
    echo 
"Condicion OR VERDADERA, el valor es \"PUEDE\" o \"NO\"";
else
    echo 
"Condicion OR FALSA, el valor es cualkiera diferente de \"PUEDE\" y \"NO\"."
1ra Condicion: $row_somosfavoritos['aceptado'] Es (==) "PUEDE" --> FALSO porke $row_somosfavoritos['aceptado'] NO Es "PUEDE".

2da Condicion: $row_somosfavoritos['aceptado'] Es (==) "NO" --> FALSO porke $row_somosfavoritos['aceptado'] NO Es "NO".

Resultado FALSO y FLASO, resultado Final: FALSO.

veras en pantalla: Condicion OR FALSA, el valor es cualkiera diferente de "PUEDE" y "NO".

Lo contrario si le asignas el valor PUEDE.

Código PHP:
// Suponiendo ke el valor fuese PUEDE. 
//$row_somosfavoritos['aceptado'] = "PUEDE";

// Chekear. 
if ($row_somosfavoritos['aceptado'] == "PUEDE" || $row_somosfavoritos['aceptado'] == "NO")
    echo 
"Condicion OR VERDADERA, el valor es \"PUEDE\" o \"NO\".";
else
    echo 
"Condicion OR FALSA, el valor es cualkiera diferente de \"PUEDE\" y \"NO\"."
1ra Condicion: $row_somosfavoritos['aceptado'] Es (==) "PUEDE" --> VERDADERA porke $row_somosfavoritos['aceptado'] SI Es "PUEDE".

2da Condicion: $row_somosfavoritos['aceptado'] Es (==) "NO" --> FALSO porke $row_somosfavoritos['aceptado'] NO Es "NO".

Resultado VERDADERO y FLASO, resultado Final: VERDADERO (Solo basta ke uno sea verdadero para devolver VERDADERO).

veras en pantalla: Condicion OR VERDADERA, el valor es "PUEDE" o "NO".

Esto tambien te pasaria con el AND(&&) si chekearias esto mismo con la condicion de igualdad,

$value = 1
if ($value == 1 && $value == 2)
echo "Esto nunca sucederia";
else
echo "Siempre se ejecutara este codigo.";

Esta condicion siempre sera FALSA porke $value solo podra responder a un valor en el mismo intervalo de tiempo.

Por lo general siempre se utiliza este tipo de checkeos contra dos variable diferentes y no contra la misma es imposible ke en el mismo instante de tiempo ke corra el programa tuyo puedas tener la misma variable con dos valores diferentes.

Salu2 Roly.

Última edición por rolygc; 01/06/2011 a las 18:13