Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] CodeIgniter No funciona el operador lógico OR

Estas en el tema de No funciona el operador lógico OR en el foro de PHP en Foros del Web. Buenas tardes, espero estén bien todos los integrantes de este Foro. Bueno el problema que me trae hoy por aquí es lo siguiente: Tengo un ...
  #1 (permalink)  
Antiguo 30/01/2014, 13:48
Avatar de kreyesm  
Fecha de Ingreso: octubre-2012
Mensajes: 7
Antigüedad: 11 años, 6 meses
Puntos: 0
No funciona el operador lógico OR

Buenas tardes, espero estén bien todos los integrantes de este Foro. Bueno el problema que me trae hoy por aquí es lo siguiente:

Tengo un código similar a este

function insertar_modelo() {
$session_id = $this->session->userdata('logged_in');
if ($session_id) {
if ($this->input->post()) {

if (($this->form_validation->run('seccioni') == FALSE) or ($this->form_validation->run('segunda') == FALSE) or ($this->form_validation->run('seccioniv') == FALSE)) {
$this->load->view('informe_insertar');
} else {
$this->form_validation->set_rules('cantPCTotal', 'Total de PC', 'callback_validaTotal');
if ($this->form_validation->run() == FALSE) {
$this->load->view('informe_insertar');
} else {
echo 'Bien';
}

}
}
} else {
$data['error'] = 'Debe autenticarse para acceder al sistema.';
$this->load->view('login', $data);
}
}

Como pueden apreciar estoy usando la clase Form Validation que brinda codeigniter, pero el problema que tengo es en el if del inicio, aqui es como si no viera el último or, solo muestra los mensajes de error si una de las dos primeras condiciones se cumple, y si estan bien esas dos pues va directo y me muestra el mensaje bien como lo tengo hasta el momento. Inicialmente me sucedía lo mismo con las dos primeras condiciones, luego las puse entra () y funcionó, pero ya con la tercera me está haciendo lo mismo.
Por favor si alguien puede darme una ayuda, se lo agradecería mucho.
Saludos
Katia
  #2 (permalink)  
Antiguo 30/01/2014, 15:28
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: No funciona el operador lógico OR

Inténtalo de esta forma:

Código PHP:
Ver original
  1. if (
  2.     (($this->form_validation->run('seccioni') == FALSE) or
  3.     ($this->form_validation->run('segunda') == FALSE)) or
  4.     ($this->form_validation->run('seccioniv') == FALSE)
  5. )

Trata las condiciones como se harían en una Tabla de verdad, es decir, las condiciones sería p, q, r y operarías las dos primeras y dicho resultado con la tercera.

Cita:
if ((p or q) or r)
Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 30/01/2014, 20:45
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: No funciona el operador lógico OR

primero proba esto:
Código PHP:
Ver original
  1. <?
  2. $a = $this->form_validation->run('seccioni');
  3. $b = $this->form_validation->run('segunda');
  4. $c = $this->form_validation->run('seccioniv');
  5. ?>

fijate que use el resaltador de sintaxis para que todos podamos entender mejor el codigo.

Bueno con esto comprobamos que realmente nada es true

Código PHP:
Ver original
  1. <?
  2. if(!$a || !$b || !$c){
  3.   //alguna fue false
  4. }
  5. ?>
  #4 (permalink)  
Antiguo 31/01/2014, 09:48
Avatar de kreyesm  
Fecha de Ingreso: octubre-2012
Mensajes: 7
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: No funciona el operador lógico OR

ya probé y no me resultó, no se que pasa porque tambien tengo el form_validation igual las dos primeras validaciones
  #5 (permalink)  
Antiguo 31/01/2014, 09:50
Avatar de kreyesm  
Fecha de Ingreso: octubre-2012
Mensajes: 7
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: No funciona el operador lógico OR

Alexis88 y Patriarka, gracias por responder, ya hice lo que ambos me sugirieron y sigue igual, siempre me coge la ultima en true aunque sea falso, y tanto en la vista como en el form_validation esta similar a las condiciones iniciales
  #6 (permalink)  
Antiguo 10/02/2014, 12:52
Avatar de kreyesm  
Fecha de Ingreso: octubre-2012
Mensajes: 7
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: No funciona el operador lógico OR

al final para resolver esto tuve que hacer solo una regla, gracias por su tiempo :D

Etiquetas: codeigniter
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 19:18.