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.