Foros del Web » Programando para Internet » PHP »

lista selectiva

Estas en el tema de lista selectiva en el foro de PHP en Foros del Web. A ver si me explico en una base de datos tengo una fila donde tengo el id y varios sabores ejemplo ----------------------------------------------- idsabor idproducto fresa ...
  #1 (permalink)  
Antiguo 28/09/2006, 05:17
Avatar de Kalili  
Fecha de Ingreso: enero-2002
Ubicación: Gate 69
Mensajes: 210
Antigüedad: 22 años, 3 meses
Puntos: 0
lista selectiva

A ver si me explico

en una base de datos tengo una fila donde tengo el id y varios sabores
ejemplo
-----------------------------------------------
idsabor idproducto fresa limon naranja
1 1 si no si
------------------------------------------
En esta tabla tengo el id de la tabla el id del producto y si ese producto tiene sabores.

Ahora con php quiero crear un lista despegable donde el cliente cuendo vaya a escoger el producto por medio de una lista despegable pueda escoger tambien los sabores.
El problema es que me aparece en la lista todos los sabores y yo quiero que me aparezca en la lista solo los sabores que tengo puesto "si" En el ejemplo fresa y naranja.
abajo os pongo my script
Código PHP:
                                    <?php
                                    $sql2 
"SELECT * FROM smaken where idproduct ='$idproduct'";
                                    
$result2 mysql_query($sql2) or die(mysql_error());
                                    
$row2=mysql_num_rows($result2);
                                    if (
$row2 0) {
                                    
?>
                                    <p>Smaken:<br>
                                    <select name="<?php echo $row["idproduct"]?>" onchange="location.href=this.value" >
                                        <?php                                                    
                                                
for ($i=2;$i<=mysql_num_fields($result2)-1;$i++)
                                                    {
                                                    
$field mysql_field_name($result2,$i);
                                        
?>
                                    <option value="<?=$_SERVER["PHP_SELF"]?>?idproduct=<?=$row["idproduct"]?>&inhoudID=<?=$row["idinhoud"]?>&smaak=<?=$field?>&categoriaID=<?=$idgroup?>"<?= ($smaak == $field)  ? "selected" "" //?>><?=$field?></option>
                                                <?php
                                                    
}
                                                
?>
                                    </select><br>
                                    <?php
                                    
}
                                    
?>
__________________
saludos
  #2 (permalink)  
Antiguo 28/09/2006, 07:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Por qué no normalizas esos "sabores" en una tabla extra?:

sabores tabla
idsabor
nombre_sabor

tabla Sabores_elegidos
idsabores
idproducto
idsabor

De esta forma controlas mejor que "sabores" pude elegir e incluso añadir más a tu sistema sin involucrar cambiar código PHP ni estructura de tus tablas, en definiva un "modelo de datos" más abierto (no sólo para tu caso concreto de ahora).

Se trata que al crear tu "producto" .. presetnas la tabla "sabores" (con un checbox por ejemplo) el usuario selecciona uno o vários "sabores" y tu los registras en tu tabla "sabores_seleccionados" con el IDproducto que corresponde.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 28/09/2006, 07:26
Avatar de Kalili  
Fecha de Ingreso: enero-2002
Ubicación: Gate 69
Mensajes: 210
Antigüedad: 22 años, 3 meses
Puntos: 0
Cluster,

El producto puede tener varios sabores entonces commo se haria en tu supuesta tabla_sabores_elegidos para que se añadan varios idsabor??

lo que quiero es que el usuario por medio de una lista desplegable eliga un sabor.
Para eso creo que lo mejor es tener una tabla donde esta el id del producto relacionado con el id del producto en la tabla productos.
Y en esa tabla tener los sabores como "name_field" y simplemente poner si ese producto tiene esos sabores o no.

Luego hacer el select y que aparezcan solamente los sabores que tiene ese producto en la lista despegable
Ese es mi problema como hacer que solo me aparezcan los sabores que tiene el producto y no todos
__________________
saludos
  #4 (permalink)  
Antiguo 28/09/2006, 08:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
lo que quiero es que el usuario por medio de una lista desplegable eliga un sabor.
Pero si dices eso . .entonces UN producto sólo tiene un sabor (a elección pero sólo UNO).

Si no es así .. corrigeme.

La propuesta que te hago está en función de que 1 producto puede tener vários sabores (de 1 a N).

En la Tabla "Sabores_elegidos" según lo que te propongo sería:

tabla Sabores_elegidos
idsabores
idproducto
idsabor

te quedarían registros tipo:

idsabores idproducto idsabor
1 --> 1 --> 1
2 --> 1 --> 2
3 --> 2 --> 1
4 --> 3 --> 3
1 --> 3 --> 1

Normalizar como propones, fijate bien que estás cerrando el sistema a esos N campos en cierta tabla que ahora vas a crear. También complicas y no se optimiza para nada las consutlas SQL para extraer tus datos.

Creo que deberías aclarar estos temas con algún manual sobre "normalización" y en el foro de "Base de datos". De momento te paso uno para que veas:

http://www.mysql-hispano.org/page.php?id=16

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 17:36.