Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Obtener campos relacionados por medio de Id, que están guardados en otra tabla

Estas en el tema de Obtener campos relacionados por medio de Id, que están guardados en otra tabla en el foro de PHP en Foros del Web. Buen día a todos. Estoy tratando de crear un foro, y la idea que se me vino a la cabeza fue hacer dos tablas: 1. ...
  #1 (permalink)  
Antiguo 10/03/2013, 17:00
Avatar de boggiepopphantom  
Fecha de Ingreso: agosto-2012
Mensajes: 29
Antigüedad: 11 años, 8 meses
Puntos: 0
Pregunta Obtener campos relacionados por medio de Id, que están guardados en otra tabla

Buen día a todos. Estoy tratando de crear un foro, y la idea que se me vino a la cabeza fue hacer dos tablas:
1. En la primera se consignan los nombres de los foros y las descripciones de cada uno de ellos. Naturalmente, cada nombre de foro tiene un número identificador único.
2. La idea de la segunda tabla es guardar los comentarios que hacen los usuario. La idea es que cada comentario queda guardado junto con el código del título del foro en el que participó.
De momento he creado las dos tablas, he relacionado los índices necesarios y tengo alguna idea de cómo obtener datos desde las dos tablas. Sin embargo, la idea es que cuando un usuario haga clic en el botón de foros, le aparece la lista de títulos de foros organizados por fechas (los que están en la primera tabla). Esto ya lo pude lograr. El asunto por el cual solicito sus consejos es el siguiente:
La idea es que cuando haga la lista de los títulos de foro, automáticamente el título se conviertan en un link que, al hacer clic en él, pueda de cierta manera guardar el id del título del foro, en una variable por ejemplo, y por medio de él generar una consulta que busque en la segunda tabla todos los registros que estén relacionados con el título sobre el que hizo clic.
Mi intención es que no sea necesario crear una página para cada título guardado en la primera tabla, sino utilizar una sola página que se "llene" de manera dinámica a partir de el título en el que haya hecho clic el usuario.
No se si me hice entender, de antemano gracias por su colaboración.
Atte
Boggiepopphantom
  #2 (permalink)  
Antiguo 10/03/2013, 20:12
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Obtener campos relacionados por medio de Id, que están guardados en otra t

Sugiero usar 3 tablas, como hacen la mayoría de sistemas de foros:

1- Foros (con descripciones y permisos)
2- Temas, que puedes ordenar por fecha, título, etc. y llave foránea para id de foro
3- Mensajes, con llaves foráneas para id de foro e id de tema
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 11/03/2013, 15:47
Avatar de boggiepopphantom  
Fecha de Ingreso: agosto-2012
Mensajes: 29
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Obtener campos relacionados por medio de Id, que están guardados en otra t

Gracias Triby por tu valiosa y prontísima respuesta.
Sin embargo, todavía quedo con la duda; creo que no me he hecho entender, así que trataré de explicarme de nuevo.
Sigo tu sugerencia y genero las tres tablas; ahora, cuando el usuario haga clic en foros, utilizo una consulta mysql que me muestre la lista de temas, utilizo la propiedad “href” para que cada título de tema quede como link. Ahora, el link es el mismo para todos los título, por ejemplo una llamada participacion.php. Esa página se “llena” por medio de una consulta mysql, que buscará la lista de comentarios usando el campo relacionado con al tabla de temas. El asunto es, ¿Cómo hago para que cada título generado en la consulta mysql que me da la lista de temas quede con un índice o algo por el estilo tal que, al hacer clic en el título, la página participación.php reciba ese índice y muestre la lista de comentarios para ese tema?
Muchas gracias por su colaboración

Atte
Boggiepopphantom
  #4 (permalink)  
Antiguo 11/03/2013, 17:28
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Obtener campos relacionados por medio de Id, que están guardados en otra t

A ver, si tienes tu listado de temas, los enlaces deben tener variables externas:

Código HTML:
Ver original
  1. <ul>
  2.     <li>Foro 1, con ID 1
  3.         <ul>
  4.              <li><a href="ver_tema.php?idtema=1">Título del tema 1</a></li>
  5.              <li><a href="ver_tema.php?idtema=2">Título del tema 2</a></li>
  6.              <li><a href="ver_tema.php?idtema=3">Título del tema 3</a></li>
  7.              <li><a href="ver_tema.php?idtema=N">Título del tema N</a></li>
  8.         </ul>
  9.     </li>
  10. </ul>

Ya en tu PHP tomas el idtema desde $_GET y realizas las consultas necesarias para cargar tema, mensajes y, de ser necesario, hacer una paginación. Ejemplo:

Código PHP:
Ver original
  1. <?php
  2. $idtema = (isset($_GET['idtema'])) ? $_GET['idtema'] : 0;

Si $idtema es menor que 1, lógicamente es una petición inválida y debes mostrar mensaje de error.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 11/03/2013, 18:34
 
Fecha de Ingreso: noviembre-2010
Mensajes: 36
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Obtener campos relacionados por medio de Id, que están guardados en otra t

Hola, quizás encuentres interesante[URL="http://www.lsi.upc.edu/~bcasas/docencia/pfc/NormalitzacioBD.pdf"] la formalización de tablas[/URL].

La idea básica es que cada tabla es una entidad que SOLO debe tener los datos propios, únicos, de esa entidad. Entonces, hasta ahí vas bien, ya que tienes

a) Tabla 1: Nombre y datos de los foros (que son datos únicos de cada campo)

b) Tabla 2: comentarios de cada foro.

Entonces, lo mejor para estos casos es crear una tercera tabla donde relacionas ambas por ID.

Por ejemplo:

Foros_Has_Comentarios

id: autoincrement
id_Foros: int
id_Comentarios

Si fulanito escribe un comentario sobre el foro ID6, entonces en la tabla comentarios guardas ese comentario, coges el ID (last_id) y lo guardas en la tabla común (poniendo en la otra columna el id del foro correspondiente, claro).

Luego solo tienes que hacer un select - innerjoin donde los ids de la tabla común se correspondan con las principales.

Etiquetas: campos, medio, registro, relacionados, tabla
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 13:28.