papulo |
03-10-2008 15:51:35 |
Operador lógico (con Firebird de por medio)
Tengo el siguiente código:
Código PHP:
$sql_indirect = "SELECT X FROM Y"; if($direct_search == 'NO'){ $sql_indirect = $sql_indirect." WHERE algo=$variable1"; } $sql_indirect = $sql_indirect." ORDER BY X"; $sql_direct = "SELECT X FROM Y,J"; if($direct_search == 'NO'){ $sql_direct = $sql_direct." WHERE algo=$variable2"; } $sql_direct = $sql_direct." ORDER BY X"; if (((($variable1 == '666') && ($variable == '3')) || (($variable1 <> '666') && ($variable2 == '6'))) && $direct_search=='NO') { $sql = $sql_indirect; }else{ $sql = $sql_direct; } $sql = consulta_db($sql); if (($direct_search == 'YES') && !($resultado = ibase_fetch_object($sql))) { $sql = consulta_db($sql_indirect); } $resultado = ibase_fetch_object($sql);
$ref_app = "<select id=\"applications\" name=\"applications\">"; if ($resultado) { do { $ref_app = $ref_app."<option>".htmlentities($resultado->X)."</option>"; } while($resultado = ibase_fetch_object($sql)); } $ref_app = $ref_app."</select>"; return $ref_app;
El problema radica con la condición:
Código PHP:
if (($direct_search == 'YES') && !($resultado = ibase_fetch_object($sql))) { $sql = consulta_db($sql_indirect); } $resultado = ibase_fetch_object($sql);
Que nunca llega a cumplirse.
¿Está bien construida la condición en la cual si la primera consulta no me devuelve nada la repita pero asignando una nueva query a $sql?
Me lío un poco aún con la negación.
Saludos.
|