Ideas de Logica!

Iniciado por 01munrra, 6 Agosto 2012, 04:41 AM

0 Miembros y 1 Visitante están viendo este tema.

01munrra

saludos!!.. les comento, lo que quiero desarrollar es para añadir productos a un premio, de esta forma..... la empresa da premios y dicho premio tiene productos, estos productos pueden variar, es decir, pueden ser de 1 producto, hasta los productos que ellos quieran añadir a dicho premio,,,, ahora una cosa, imaginense, esto:

Premio 1:
-1 plancha.
-1 Tv.
-1 Bluray.

Premio 2:
-1 lapto.
-1 mesa para lapto.
-1 Iphone.
-PS3

Premio 3:
-1 Tv de 32 pulgadas.

Premio 4:
-1 Camara Sony
-1 Vajilla.
-1 Teatro casero.
-1 juego de muebles.
-1 ps3.
-1 aire condicionado.
-1 juego de vasos.

las idea de esto es que vean la idea, el administrador podra registrar dinamicamente los productos que quiera en un premio..... si lo vemos a nivel de base de datos cambiaria titalmente. y pues estaria mal asi......

y pues tienen alguna idea de como podria hacer ??? que hago, que desarrollo?... alguna idea?....

Gracias de Antemano!-


#!drvy

Hola, pues yo no le veo mucha complicación xD

1 base de datos, 3 tablas.

tabla: tb_premios - ID, Nombre... etc..
tabla: tb_productos - ID, Nombre.. etc..
tabla: tb_compilacion ID, ID premio, ID's productos separados por coma, etc...


Saludos

01munrra

mmmmmmmm............... y como hago para ir recolectando los ID de los productos?..... esta parte no la entiendo,..


saludos!!!

s00rk

Cita de: drvy | BSM en  6 Agosto 2012, 11:30 AM
Hola, pues yo no le veo mucha complicación xD

1 base de datos, 3 tablas.

tabla: tb_premios - ID, Nombre... etc..
tabla: tb_productos - ID, Nombre.. etc..
tabla: tb_compilacion ID, ID premio, ID's productos separados por coma, etc...


Saludos

Separados por coma, emmm en mi parecer seria mejor ID del producto y ya.

Y si serian 3 tablas

Premios
ID int autoincrementable
Nombre varchar(50) NOT NULL

Productos
ID int autoincrementable
Nombre varchar(50) NOT NULL
Puedes agregarle detalles al producto

Premios_Producto
ID int autoincrementable
idPremio int 'Este hara referencia hacia Premios, para checar que ese premio exista
idProducto int 'Este hara referencia hacia Productos de que el producto exista

Ahora simplemente primero agregamos todos nuestros productos a la tabla Productos, luego de esto ahora creamos un nuevo Premio solo el nombre claro hehe, y ya finalmente vamos y agregamos los productos que tendra ese premio

[Productos]
ID    Nombre
1     Licuadora
2     Estufa
3     Televisor
4     Computadora
5     Auto


[Premio]
ID    Nombre
1     Casa
2     Estudiante

[Premio_Producto]
ID    idPremio    idProducto
1     1             1
2     1             2
3     2             3
4     2             4
5     2             5

Ya con eso podemos ver que el premio con ID 1, tiene los productos con ID 1 y 2, mientras el premio con ID 2 tiene los productos con ID 3, 4 y 5.

Bueno espero y te sirva hehe n_n
Saludos*!

#!drvy

#4
Código (php) [Seleccionar]
<?php
$ids 
'1,2,3,4,5,6,7,8,9,10';

function 
parsear_ids($ids){
   if(empty(
$ids)){return false;}
   
$var explode(',','0,'.$ids);
   unset(
$var[0]);
   return 
$var;
}

print_r(parsear_ids($ids));
?>


Devuelve:
Array ( [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 [10] => 10 )

Lo de poner 1 registro por cada producto asociado al premio me parece personalmente una chorra.. gastas mas DB para nada creo yo. Pero es mi punto de vista =)

Edit: he modificado un poco la función para que no use foreach.

Saludos

Spider-Net

Son dos formas diferentes de hacerlo, las dos funcionarían, aunque yo personalmente me quedo con el método del compañero drvy | BSM. Con un explode es muy sencillo separar los identificadores separados por comas (o cualquier otro caracter) y te ahorras espacio en la base de datos y tiempo a la hora de procesarlo. Creo que es más rápido crear un vector usando explode que contenga todos los id's de productos, que tener que recorrer todos los registros correspondientes a un premio en concreto en la base de datos.

01munrra

Gracias!!,,, por sus sugerencia, de han ayudado mucho de verdad!.... voy a aplicarlo haber que tal....

Gracias!!   ;-)