Foros del Web » Programando para Internet » PHP »

Agrupar consulta sql con php

Estas en el tema de Agrupar consulta sql con php en el foro de PHP en Foros del Web. Hola Gente, como va? Estoy intentado modificar la vista de mis productos en mi tienda opencart cuando se entra a una categoría o cuando se ...
  #1 (permalink)  
Antiguo 15/04/2014, 12:51
 
Fecha de Ingreso: marzo-2010
Mensajes: 28
Antigüedad: 14 años
Puntos: 0
Pregunta Agrupar consulta sql con php

Hola Gente, como va?

Estoy intentado modificar la vista de mis productos en mi tienda opencart cuando se entra a una categoría o cuando se realiza una búsqueda.

El listado de productos se hace a través de un ciclo foreach que va recopilando los datos de la base de datos y los va colocando uno abajo de otro.
Codigo vista de productos:

Código HTML:
Ver original
  1. <div class="product-grid row-fluid">
  2.     <?php
  3.                     $counter=0;
  4.                     foreach ($products as $product) {
  5.                         ?>
  6.                         <div class="grid-box <?php echo $xclass; ?>">
  7.                             <div class="inner">
  8.                 <?php if ($product['price'] && $product['special']) { ?>
  9.                                 <?php } ?>
  10.                                 <?php if ($product['thumb']) { ?>
  11.                                     <div class="image">
  12.                                         <a href="<?php echo $product['href']; ?>">
  13.                                         <img src="<?php echo $product['thumb']; ?>" title="<?php echo $product['name']; ?>" alt="<?php echo $product['name']; ?>" /></a>
  14.                                     </div>
  15.                                 <?php } ?>
  16.                                 <div class="name">
  17.                         <a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a><br />
  18.  <span><?php echo $text_model; ?></span> <?php echo $product['model']; ?>
  19.                                    
  20.                                 </div>
  21.  
  22.                                 <div class="description"><?php echo $product['description']; ?></div>
  23.                                
  24.                                 </div>
  25.  
  26.                             </div>
  27.  
  28.                         </div>


En mi base de datos tengo cargado los productos:
Por ejemplo:
Name: Lapicera x unidad
Model: 045951899x1

Name: Lapicera x 9 unidades
Model: 045951899x9

Los dos productos son exactamente iguales, solo cambia la cantidad. Y en el código solo cambia el final, x1 o x9 dependiendo la cantidad.

Lo que quiero es agrupar estos casos de la siguiente forma:


Por lo tanto tengo que modificar la consulta de la base de datos para que me agrupe los modelos cuando las primeras 10 cifras son iguales y asi podes ponerlo en ciclo foreach.
045951899x1
045951899x9

¿Esto es posible hacer? ¿Alguien me podria ayudar o pasar algun tutorial? Desde ya muchas gracias!

Última edición por pabliich; 15/04/2014 a las 12:57
  #2 (permalink)  
Antiguo 15/04/2014, 16:32
Avatar de Cuervoo  
Fecha de Ingreso: octubre-2013
Mensajes: 165
Antigüedad: 10 años, 6 meses
Puntos: 43
Respuesta: Agrupar consulta sql con php

Las 10 primeras cifras las sabés de antemano? O querés agrupar y hacer una lista sin que se repita el producto? Si ya las sabés solamente con SUBSTRING lo hacés.

Código SQL:
Ver original
  1. SELECT * FROM products WHERE SUBSTRING(products.name, 0, 9) LIKE '045951899'

De cualquier forma la cantidad tendría que ser un atributo único, no tiene que estar metido ahí combinado con otro atributo.
  #3 (permalink)  
Antiguo 16/04/2014, 12:29
 
Fecha de Ingreso: marzo-2010
Mensajes: 28
Antigüedad: 14 años
Puntos: 0
Respuesta: Agrupar consulta sql con php

Cita:
Iniciado por Cuervoo Ver Mensaje
Las 10 primeras cifras las sabés de antemano? O querés agrupar y hacer una lista sin que se repita el producto? Si ya las sabés solamente con SUBSTRING lo hacés.

Código SQL:
Ver original
  1. SELECT * FROM products WHERE SUBSTRING(products.name, 0, 9) LIKE '045951899'

De cualquier forma la cantidad tendría que ser un atributo único, no tiene que estar metido ahí combinado con otro atributo.
Las 10 primeras cifras las saco de otra tabla llamada Codes, en un columna code:
Seria:
Product
Name: Lapicera x unidad
Model: 045951899x1
Codes
Code: 045951899

Product
Name: Lapicera x 9 unidades
Model: 045951899x9
Codes
Code: 045951899

Otro ejemplo:

Product
Name: Fibras x 9 unidades
Model: 045912345x9
Codes
Code: 045912345

Yo hice este código para que me genere las opciones:
Código HTML:
Ver original
  1. <select name="combo">
  2.             <option value=" ">Seleccione cantidad</option>
  3.             <?php  
  4.                                
  5.                                  $terms = "045951899";
  6.                          $modelo_query = $this->db->query("SELECT * FROM product WHERE model LIKE '%" . $terms . "%'");
  7.                          $modelos = array();
  8.                             if ($modelo_query->num_rows > 0) {
  9.                                     foreach ($modelo_query->rows as $result) {
  10.                                     $modelos[] = array('modelo'      => $result['model'],);
  11.                                             ?>
  12.                                     <option value="<?php echo $product['price']; ?>"><?php echo $result['model']; ?></option>
  13.                                     <?php
  14.                                 }  
  15.                             }
  16.             ?>
  17.             </select>
Pero esta harcodeado, con el codigo 045951899, necesitaría hacer algo que me vaya tirando los codes en la variable $terms

Última edición por pabliich; 16/04/2014 a las 12:49

Etiquetas: sql
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 08:19.