¿Variantes de producto front-end en PHP + MySQL?

Estoy haciendo una tienda web y cada producto puede tener varias variantes.

Todas las variantes son en realidad su propio producto. El SKU es diferente por producto, pero el número de producto es el mismo para todas las variantes de "un producto".

Las combinaciones de variantes se guardan en una tabla separada llamada valores de variante. Allí está el SKU del producto, el nombre del campo y el valor del campo.

Digamos que tengo 3 productos. SKU: 0505002699 / SB / M, 0505002699 / SC / L y 0505002699 / SC / M.

Todos los productos tienen el mismo número de producto; 0505002699.

Los productos tienen los siguientes campos: Color, Talla.

Estos son los valores para cada producto:

0505002699 / SB / M

Color: Negro

Talla pequeña

0505002699 / SC / L

Color azul

Talla mediana

0505002699 / SC / M

Color rojo

Talla pequeña


¿Alguien con una pista sobre cómo puedo hacer un bucle en esa interfaz? El resultado final debería ser algo como: http://i.stack.imgur.com/rAxeG.png

El problema (para mí) es averiguar cómo enumerar las posibles "configuraciones".

¿Nadie?

preguntado el 08 de noviembre de 11 a las 14:11

¿Qué te está causando problemas específicamente? ¿Visualizando esto? ¿Buscas esto? Esto me parece sencillo y no sé cómo ayudarlo sin saber específicamente cuál es el problema. -

Entonces, ¿no hay un identificador único para un producto (no una variante)? -

2 Respuestas

Solo un pensamiento rápido sobre la implementación:

Si las "configuraciones" son variables para cada producto:

Mesas adicionales:

size
  - code
  - descr

fe:

S - Small
M - Medium

Y luego una tabla entre producto y talla:

product_size
   - product_id
   - size_code

fe:

1 - S
1 - M
2 - S
...

Por el color:

product_color
   - product_id
   - color

fe:

1 - #FFFFFF
1 - #000000
2 - #000000
...

Luego, puede seleccionar todas las opciones para cada producto por product_id.

fe:

SELECT color FROM colors WHERE product_id = $product_id;
SELECT size_code FROM product_size WHERE product_id = $product_id;

EDITAR: wow, leí mal una parte de tu pregunta, lo siento

respondido 08 nov., 11:18

Si bien la respuesta de Nathan es factible, podría considerar una versión más genérica (no estrictamente la verificación de sintaxis aquí, solo una puñalada):

create table configurations (
 id int auto_increment primary key,
 product_id int not null,
 name varchar(50) not null,
 value varchar(255) not null default "",
 FOREIGN KEY (product_id) REFERENCES product(id)
)

Luego, puede crear nuevos tipos de configuraciones (configurations.name) a su antojo y tratarlas en el código.

select value from configurations where product_id=$product_id and name='color';
select value from configurations where product_id=$product_id and name='size';

Ahora, la desventaja de este enfoque es que el inventario puede ser un problema, por lo que la otra forma de lidiar con esto es tenerlos como elementos individuales en su tabla de elementos (¿tabla de productos?) Que estén relacionados entre sí. Combínelos en el código para su página de visualización, pero el inventario de todas las camisetas azules se puede mantener por separado de las camisetas rojas.

respondido 08 nov., 11:22

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.