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

consulta con Active Record en CodeIgniter

Estas en el tema de consulta con Active Record en CodeIgniter en el foro de CodeIgniter en Foros del Web. hola comunidad, pues mi problem es que quiero seleccionar una serie de datos de una tabla siempre y cuando los id de cada registro sea ...
  #1 (permalink)  
Antiguo 23/01/2009, 15:08
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 17 años, 2 meses
Puntos: 5
consulta con Active Record en CodeIgniter

hola comunidad, pues mi problem es que quiero seleccionar una serie de datos de una tabla siempre y cuando los id de cada registro sea alguno de los que tengo en un ARREGLO PHP; algo asi como:

Código PHP:
function getByIds($arrayIdProducts)
{
      
$cont=count($arrayIdProductos);
      
$consulta=Array();
      for(
$i=0;$i<$cont;$i++)
     {
    
$consulta[$i]=$this->db->select('idproducto, marca, precio, descripcion, fabricante, imagen');
                
$consulta[$i]=$this->db->where('idproducto',(int)$arrayIdProductos[$i]);
    
$consulta[$i]=$this->db->get('productos');
      }
      if(empty(
$consulta))
      {
         return 
false;
      }
       else
             {
                     
$arrayProductos=array();
         
$i=0;
                      foreach (
$consulta as $fila)
          {
                
$arrayProductos['identificador'][$i]=$fila['idproducto'];
                
$arrayProductos['marcaProd'][$i]=$fila['marca'];
                
$arrayProductos['precioProd'][$i]=$fila['precio'];
                
$arrayProductos['descProd'][$i]=$fila['descripcion'];
                
$arrayProductos['fabricProd'][$i]=$fila['fabricante'];
                
$arrayProductos['foto'][$i]=$fila['imagen'];
                
$i++;
           }
                        return 
$arrayProductos;
              }



reaslmente puse el codigo para ver si alguien toma la idea de lo que deseo hacer, pero se que esta maaaal la parte esa de guardar en un arreglo la consulta.
  #2 (permalink)  
Antiguo 25/01/2009, 12:58
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 20 años
Puntos: 43
Respuesta: consulta con Active Record en CodeIgniter

Hola X_fran !

Puedes utilizar el método where_in, de esta manera seleccionas determinados productos de la tabla tomando como criterio algún campo.

Código php:
Ver original
  1. class Product extends Model
  2. {
  3.    
  4.     function Product()
  5.     {
  6.         parent::Model();
  7.         $this->load->database();
  8.     }
  9.    
  10.     function getByIds($idArray)
  11.     {
  12.         $this->db->select('*');
  13.         $this->db->from('productos');
  14.         $this->db->where_in('idProducto', $idArray);
  15.         return $this->db->get();
  16.     }
  17. }

Solamante faltaría definir el controlador para que reciba los datos del modelo.

Un saludote !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
  #3 (permalink)  
Antiguo 26/01/2009, 01:49
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 17 años, 2 meses
Puntos: 5
Respuesta: consulta con Active Record en CodeIgniter

amigo jahepi, muchas gracias sirvio, realmente y ahabioa probado de esa manera y no me resultaba pero es que no me daba cuenta de mi error que de echo no era en la consulta sino a la hora de recorrer el arreglo que esta me retornaba para mostrarlo, inidce por indice. Cambie la forma de hacer la consulta por la que mostre arriba y pues claro que tenia error, un poco mas tarde la mejore y ahora me doy cuenta que la forma en que la habia hecho pues tambien estaba bien solo que como decia, no me daba cuenta que el error era a la hora de recorrer el arreglo.

muchas gracias, problema resuelto.
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 06:47.