Foros del Web » Programando para Internet » PHP » CodeIgniter »

Comparar valores en una tabla

Estas en el tema de Comparar valores en una tabla en el foro de CodeIgniter en Foros del Web. Hola gente! Necesito comparar los campos de una tabla para ver si los valores "cliente" y "nro_cuota" existen, de ser así no deberían insertarse. Les ...
  #1 (permalink)  
Antiguo 18/01/2014, 11:46
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 21 años, 3 meses
Puntos: 5
Comparar valores en una tabla

Hola gente!
Necesito comparar los campos de una tabla para ver si los valores "cliente" y "nro_cuota" existen, de ser así no deberían insertarse.

Les dejo el código

Código PHP:
$crud = new grocery_CRUD();

$crud->set_theme('datatables');

$crud->set_table('cobranzas');

$crud->set_subject('Cobranzas');

$crud->set_language('spanish');

$crud->required_fields(
'id',
'cobrador',
'cliente',
'nro_cuota'
);

$crud->columns(
//'id',
'cobrador',
'cliente',
'nro_cuota'
);

$crud->set_relation('cobrador''cobradores''apellido_nombre');
$crud->set_relation('cliente''clientes''apellido_nombre');

$output $crud->render();

$this->load->view('cobranzas/cobranzas_v'$output);

}catch(
Exception $e){

show_error($e->getMessage().' --- '.$e->getTraceAsString());
}

luego hice un modelo para hacer el select que haga la comparación

Código PHP:
class Compare_values_model extends CI_Model 
{

    public function 
compare($id)
    {
    
    
$this->db->select('"SELECT * FROM `cobranzas` WHERE `cliente` = '$cliente' AND `nro_cuota` = '$nro_cuota'"');
   
    if (
$query->num_rows() > 0) {
        return 
true;
    } else {
        return 
false;
    } 
    
    }


No se si sea lo correcto en este caso, como debería llamarlo desde mi controlador? hace rato que vengo buscando ejemplos pero sin suerte, espero me puedan ayudar, desde ya gracias.
__________________
Saludos!!!
Maru.-
  #2 (permalink)  
Antiguo 19/01/2014, 11:57
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años, 6 meses
Puntos: 34
Respuesta: Comparar valores en una tabla

A ver si entendí bien. Lo que querès hacer es que los valores que tienen nro de cliente y nro de cuota no se MUESTREN ??

Nunca usé ese grocery_crud, pero te puedo decír que si lo que entendí está bien, con una simple consulta con el ar de codeigniter es mas que suficiente. No tiene sentido hacerlo DE A UNO.

Fijate ademàs que en la funcion compare le pasas $id y luego en la consulta usas $cliente y $nro_cuota que no existen en ese contexto.

Para traer los que no tengan cliente ni nro de cuota sería algo así:

Código PHP:
Ver original
  1. $sin_cliente_ni_cuota = $this->db
  2.     ->where('cliente', NULL)
  3.     ->where('nro_cuota', NULL)
  4.     ->get('cobranzas')
  5.     ->result();
  #3 (permalink)  
Antiguo 19/01/2014, 12:30
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 21 años, 3 meses
Puntos: 5
Respuesta: Comparar valores en una tabla

Gracias por responder!
Lo que quiero hacer es que el registro se inserte si esa condición no se cumple, en pseudo código sería:

if cliente AND nrocuota existen
{ no insertar}
else
{ insertar}
__________________
Saludos!!!
Maru.-
  #4 (permalink)  
Antiguo 19/01/2014, 12:41
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años, 6 meses
Puntos: 34
Respuesta: Comparar valores en una tabla

Código PHP:
Ver original
  1. if(! $this->db->where('nro_cliente', $nro_cliente)->where('nro_cuota', $nro_cuota)->get('cobranzas')->num_rows()){
  2.  
  3.     // ACA EL INSERT
  4. }

asi?
  #5 (permalink)  
Antiguo 19/01/2014, 12:43
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años, 6 meses
Puntos: 34
Respuesta: Comparar valores en una tabla

Yo no haría un modelo para eso, es una mala costumbre en codeigniter hacer modelos para funciones que ya vienen con AR, terminàs teniendo modelos llenas de funciones como selectAll(), selectById() y cosas así que se pueden hacer directamente desde la controladora y el código queda mucho mas legible que ir a buscarlo a otro archivo
  #6 (permalink)  
Antiguo 19/01/2014, 12:50
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 21 años, 3 meses
Puntos: 5
Respuesta: Comparar valores en una tabla

Armé todo con grocerycrud que es una modelo que genera las grillas con las altas, bajas y modificaciones, muy interesante por cierto. Lo estoy aprendiendo a utilizar y la verdad no se donde debería agregar ese código que me pasaste, probé dentro de el controlador correspondiente pero no funciona.
__________________
Saludos!!!
Maru.-
  #7 (permalink)  
Antiguo 19/01/2014, 18:37
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años, 6 meses
Puntos: 34
Respuesta: Comparar valores en una tabla

Voy a probar grocery crud. Parece interesante.

El código que te pasé es una consulta que selecciona la fila en donde esté ese nro de cuota y ese nro de cliente, si no existe devuelve 0 (o sea que se evalùa como falso) y hace lo que quieras poner adentro del if que sería un insert.

El tema es en que momento tenes que ejecutar eso? eso te va a decir donde tenes que poner ese código. Hace algo x ajax? en que momento se modifica la info? vas a tener que poner mas código porque sino no se entiende
  #8 (permalink)  
Antiguo 19/01/2014, 18:42
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años, 6 meses
Puntos: 34
Respuesta: Comparar valores en una tabla

Estoy mirando la doc de grocery crud y veo que tiene un callback_before_insert(), seguramente eso es lo que estas buscando. ;)
  #9 (permalink)  
Antiguo 28/01/2014, 18:47
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 21 años, 3 meses
Puntos: 5
Respuesta: Comparar valores en una tabla

si, es posible que se trate de esa función (callback_before_insert()) pero aún no encuentro algún ejemplo que me guíe para insertar el registro.
Gracias por tu ayuda! :)
__________________
Saludos!!!
Maru.-

Etiquetas: tabla
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 10:25.