entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Consulta con sentencia WHERE en CodeIgniter no funciona

Hola, estoy tratando de hacer consultas simples a una base de datos MySQL desde CodeIgniter. Para eso tengo una vista llamada "Menú", aquí la voy a llenar con 3 categorías: Comidas(2), Bebidas(1) y Postres(3). En la base de datos tengo 2 tablas, producto y categoria la cual presento a continuación:

tabla producto

id, nombre, descripcion,precio,imagen,negocio_id,categoria_id

tabla categoria
id. nombre --Aquí va el nombre(Comidas, bebidas o postres)

En el modelo MenuModel tengo estas funciones:

 public function getAllComidas($id=2)
{
    $this->db->select('*');
    $this->db->from(TABLE_PRODUCTO);
    $this->db->where('categoria_id',$id);
    $query = $this->db->get();
    return $query->result_array();

}

public function getAllBebidas($id=1)
{
    $this->db->select('*');
    $this->db->from(TABLE_PRODUCTO);
    $this->db->where('categoria_id',$id);
    $query = $this->db->get();
    return $query->result_array();

}

public function getAllPostres($id=3)
{
    $this->db->select('*');
    $this->db->from(TABLE_PRODUCTO);
    $this->db->where('categoria_id',$id);
    $query = $this->db->get();
    return $query->result_array();

}

En el controlador tengo lo siguiente:

public function index()
 {  

$data['menu'] = $this->MenuModel->getAllComidas();
    $this->load->view('estaticos/header');          
    $this->load->view('dinamicos/menu/menus', $data);
    $this->load->view('estaticos/menu_izquierdo');
    $this->load->view('estaticos/footer');  
    $this->load->view('estaticos/menu_derecho');
}

public function getBebidas()
 {

$data['menuBebidas'] = $this->MenuModel->getAllBebidas();

    $this->load->view('estaticos/header');          
    $this->load->view('dinamicos/menu/menus', $data);
    $this->load->view('estaticos/menu_izquierdo');
    $this->load->view('estaticos/footer');  
    $this->load->view('estaticos/menu_derecho');

}

public function getPostres()
{

    $data['menuPostres'] = $this->MenuModel->getAllPostres();
    $this->load->view('estaticos/header');          
    $this->load->view('dinamicos/menu/menus', $data);
    $this->load->view('estaticos/menu_izquierdo');
    $this->load->view('estaticos/footer');  
    $this->load->view('estaticos/menu_derecho');

}

En la vista utilizo esto para mostrar los datos llamando solo la función de comidas:

<?php
            foreach ($menu as $menu) {
              echo '

            <div class="box-body">
            <ul class="products-list product-list-in-box">
             <li class="item">
              <div class="product-img">

         <img  src="'.base_url('assets/dist/img/default-50x50.gif').'" alt="Product Image">
             </div>

               <div class="product-info">

                <a href="javascript::;" class="product-title">'.$menu['nombre'].'<span class="label label-warning pull-right">Editar</span></a>

                    <span class="product-description">'
                     .$menu['descripcion'].'
                    </span>
                     <span class="label label-danger pull-right">eliminar</span></a>
                     <a onclick="if(confirma() == false) return false" href="'.base_url().'MenusController/borrar_item/'.$menu['id'].'">Eliminar</a>
                  </div>

                </li><!-- /.item -->

              </ul>
            </div><!-- /.box-body -->';
                       }
              ?>

Y si me funciona, me muestra las comidas:
Ver imagen mas grande aquí
comidas
Pero si vuelvo a utilizar el mismo fragmento de código y solo cambiando el nombre de la función por ejemplo a :

foreach ($menu as $menuBebidas)

Me muestra un elemento repetido y no todas las bebidas o postres dependiendo del ID:
Ver imagen mas grande aquí
bebidas

Si tienen la posibilidad de decirme si estoy bien o como sería la manera correcta.

Les doy las gracias anticipadas

1 Respuesta

1voto

x4mp73r Puntos13390

SOLUCIÓN

Eh resuelto esta simplicidad, la verdad solo era agregar las funciones al
Index

Eliminé todas estas funciones innecesarias:

public function getBebidas()
 {
$data['menuBebidas'] = $this->MenuModel->getAllBebidas();

    $this->load->view('estaticos/header');          
    $this->load->view('dinamicos/menu/menus', $data);
    $this->load->view('estaticos/menu_izquierdo');
    $this->load->view('estaticos/footer');  
    $this->load->view('estaticos/menu_derecho');

}

public function getPostres()
{

    $data['menuPostres'] = $this->MenuModel->getAllPostres();
    $this->load->view('estaticos/header');          
    $this->load->view('dinamicos/menu/menus', $data);
    $this->load->view('estaticos/menu_izquierdo');
    $this->load->view('estaticos/footer');  
    $this->load->view('estaticos/menu_derecho');

}

Y las agregué directamente al Index:

public function index()
 {  
        $data['menu'] = $this->MenuModel->getAllComidas();
        $data['menuBebidas'] = $this->MenuModel->getAllBebidas();
        $data['menuPostres'] = $this->MenuModel->getAllPostres();
        $this->load->view('estaticos/header');          
        $this->load->view('dinamicos/menu/menus', $data);
        $this->load->view('estaticos/menu_izquierdo');
        $this->load->view('estaticos/footer');  
        $this->load->view('estaticos/menu_derecho');
    }

0voto

Peter comentado

Gracias por compartir la solución!

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta