Foros del Web » Programando para Internet » PHP »

Problemas php y claves primarias

Estas en el tema de Problemas php y claves primarias en el foro de PHP en Foros del Web. Hola foreros! Vereis me falta obtener la clave primarai de cada tabla para poder "finalizar" este miniproyecto Este es el index dnd se muestran todos ...
  #1 (permalink)  
Antiguo 07/06/2013, 03:40
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 4 meses
Puntos: 1
Problemas php y claves primarias

Hola foreros!
Vereis me falta obtener la clave primarai de cada tabla para poder "finalizar" este miniproyecto

Este es el index dnd se muestran todos los productos

Código PHP:
<?php
include "config.php"/* connexió a la BdDD */ 
$sql="SELECT * FROM productos_bambas UNION ALL SELECT * FROM productos_camisetas UNION ALL SELECT * FROM productos_pelotas";    
    
$resultat=mysql_query($sql);
    while (
$row=mysql_fetch_array($resultat)){
        echo 
'<div id="productos">';
            echo 
"".$row[1]."";
            echo 
"<p>";
            echo 
"".$row[2]."";
            echo 
"<p>";
            echo 
"".$row[3]."";    
            echo 
"<p>";
            echo 
"<img src=".$row[4]." width='150' height='100'>";
            echo 
" <a href=./productos/index.php?id_productos=".$row['id_productos'].">Ver producto</a>";
            echo 
'</div>';
            }
?>
Y el siguiente sería el detalle del producto,aqui es donde tengo que pasar el id_productos que cambie depende de la bd.

Código PHP:
<?php
include "../config.php"/* connexió a la BdDD */ 
$id=$_GET["id_productos"];
echo 
"<p>";
echo 
"Productos";
echo 
"<br>";
echo 
$id;
$sql="SELECT * FROM productos_bambas WHERE id_productos=$id";    
    
$resultat=mysql_query($sql);
    while (
$row=mysql_fetch_array($resultat)){
        echo 
'<div id="productos">';
            echo 
"".$row[1]."";
            echo 
"<p>";
            echo 
"".$row[2]."";
            echo 
"<p>";
            echo 
"".$row[3]."";    
            echo 
"<p>";
            echo 
"<img src=../".$row[4]." width='150' height='100'>";
            echo 
'</div>';
            }
?>
Una imagen de la bd



Y otra para que veais lo que quiero hacer



O sea que dependiendo del producto deseo obtener una calve primaria o otra para cargar dicho elemento!

Gracias! :)
  #2 (permalink)  
Antiguo 07/06/2013, 04:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problemas php y claves primarias

Código PHP:
Ver original
  1. echo "".$row[1]."";
Ajá...
¿Y sabías que el indice de un array empieza en cero, no?
Estás omitiendo precisamente el primer campo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 07/06/2013, 04:16
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Problemas php y claves primarias

Si es lo que creo que dices si, pero cuando hago el row es porque muestro los productos , entonces no quiero visualizar el campo id, lo que quiero es pasarlo a la variable del enlace , para que ese vaya al detalle

Esto seria el resultado del primero



PD:No entiendo pk se va tan pequeño XD
  #4 (permalink)  
Antiguo 07/06/2013, 06:25
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problemas php y claves primarias

Un problema que le veo a todo esto es que dices que de la primera consulta recoges todos los datos que luego usarás. Y en base a esos datos luego consultas específicamente algún producto.
Sin embargo, la primera consulta está realizando un UNION sobre tres tablas independientes entre si, y no queda claro si casa una tiene su propia PK o si heredan la PK de otra tabla superior. La diferencia es crítica porque en ese caso puede darse que diferentes valores se solapen (repitan) entre tablas, con lo que una selección equivocada generará una consulta equivocada.
Fuera de eso, si no quieres mostrar en pantalla la ID simplemente no lo hagas, en lugar de eso transfierela a la variable que necesitas.
Es decir, si ya estás posicionado en un elemento de la tabla obtenida, ¿cuál es el problema para obtener la PK del producto? ¿No tienes la tabla ya, o no tienes el subíndice?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 07/06/2013, 07:13
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Problemas php y claves primarias

Hola de nuevo !

Verás tengo las tres tablas con un id diferente cada una, las tablas son independientes enre sí.

1-La primera consulta muestra todos los productos (como muestra la imagen anterior)

2-La segunda consulta recoje el id del producto y como ves en el WHERE id_productos=$id ese id_productos dbería de cambiar dependiendo del producto escojido.

Entonces , creo que lo estoy planteando mal.
  #6 (permalink)  
Antiguo 07/06/2013, 07:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problemas php y claves primarias

Todo eso ya lo he entendido. El problema es que si la selección de producto la realiza el usuario en la vista (el formulario), en alguna parte debe conservarse en qué subíndice del array está ese producto, cuál es su tabla de pertenencia y cual es el id del producto dentro de su subconjuto.
Lo que no me has respondido es si al momento de que el usuario realiza la selección el sistema aún conserva el array original como para poder localizar ese dato.
Si el array se descarta luego de mostrar la vista, entonces no tienes como resolver la segunda búsqueda.
Por otro lado, efectivamente, tienes un serio problema de datos, porque si usas tres tablas para conservar el mismo esquema de datos... bueno, eso es un mal diseño que se manifiesta en problemas como este.
Si en lugar de tres tablas tuvieses cuatro, la primera como tabla padre conservando los datos necesarios para visualización, luego si podrías hacer una consulta con UNION buscando ese ID en las tres tablas, que te devolvería un único producto (ya que la descripcion y detalles propios estaría en esa), mientras que el id debería ser conservado de algún modo en un objeto de la sesión.

Probablemente deberías replantearlo, pero como solución alternativa, yo te sugeriría al menos ver cómo conservar un array referenciante donde guardes tabla e IDs de origen de los productos...
Pero puede haber otras soluciones mejores.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 07/06/2013, 07:53
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Problemas php y claves primarias

MAL DISEÑO!!!!
los UNION generalmente se usan cuando trabajas con 2 o mas bases de datos que tienen la misma tabla.

no se por que separas en 3 tablas los productos¿?¿?¿ almenos hace una relacion simple
entre las 3 tablas


mal mal , TOTALMENTE DESAPROBADO!!
  #8 (permalink)  
Antiguo 08/06/2013, 09:50
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Problemas php y claves primarias

Ok, bueno como ahora tngo mas tiempo lo replantearé.

Vayamos por partes, primero el diseño de la base de datos

Entonces ahora he creado una tabla más que contiene las claves primarias de las otras tres tablas donde guardo los productos.

así que quedaria asi la estructura

productos (id,id_productos,id_bambas,id_pelotas)
productos_camisetas(id_productos,nombre...)
productos_bambas(id_bambas,nombre...)
productos_pelotas(id_pelotas,nombre...)

La primera tabla no tiene ningún dato simplemente relaciona cada id con su tabla correspondiente.
  #9 (permalink)  
Antiguo 08/06/2013, 11:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problemas php y claves primarias

Eso está peor aún...
Antes de realizar cambios de ese tipo tienes que aprender de diseño de bases de datos, y para ello al menos tienes que haber leído algo de modelo entidad-relación y Bases de Datos Relacionales.
Creo que no deberías meterte en camisa de once varas (y además es tema off-topic en este foro), y concentrarnos en una solución programática de tu problema. Siempre considerando, por supuesto, que todo lo que vas a hacer está mal desde el inicio porque el modelo de datos debe ser corregido.

¿Qué posibilidades existen de que se conserve un diccionario de datos donde puedas tener al menos los dos campos que necesitas para identificar el producto: tabla origen e ID del producto en su tabla?
Si puedes mantener eso en una sesión, no debería haber problemas para resolver con lo que ya tienes el asunto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 09/06/2013, 15:45
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Problemas php y claves primarias

Yo mismo me estaba complicando la vida , sinceramente es lo que pasa cuando no lo planteas y comienzas a teclear.

Y cuando he leído el post, otra vez yo mismo me he dado cuenta del fallo XD

Esta será mi solución

Lo que voy ha realizar va a ser poner todos los productos en una misma tabla, pero en esa tabla añadiré una columna que se llame categoría (permitiendo seleccionar 1,2,3 dependiendo del tipo del producto) y luego con un if pues permitiré cargar unos datos u otros.

Gracias Patriarka y gnzsoloyo!
  #11 (permalink)  
Antiguo 09/06/2013, 16:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problemas php y claves primarias

¡Correcto!
Esa es una buena solución.

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: claves, select, 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 17:20.