Foros del Web » Programando para Internet » PHP »

Noticia asociada a varias categorias

Estas en el tema de Noticia asociada a varias categorias en el foro de PHP en Foros del Web. Buenas, Verán, tengo un sistema de noticias con su correspondiente tabla llamada noticias y su otra tabla llamada categorias. Tabla noticias: id, titulo, cuerpo_noticia, id_categoria ...
  #1 (permalink)  
Antiguo 06/04/2009, 11:51
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 5 meses
Puntos: 74
Noticia asociada a varias categorias

Buenas,

Verán, tengo un sistema de noticias con su correspondiente tabla llamada noticias y su otra tabla llamada categorias.

Tabla noticias:
id,
titulo,
cuerpo_noticia,
id_categoria
etc.

Tabla categorias:
id_categoria,
nombre_categoria,
imagen_categoria.

Bueno, el problema esta en que hasta ahora lo que hacia era que al escribir una noticia la asociaba con una categoria.
Esta tarde he tenido la ¿fabulosa? idea de asociarlo a mas de una categoria, de tal manera que la noticia estuviera asociada por ejemplo a dos cateogrias, o sea, que a la hora de escribir una noticia quisiera poder elegir varias categorias.

Claro, ¡¿donde esta el problema?!. ¿Pues qué como hago para seleccionar varias opciones del select?, ¿Como identifico luego que esa noticia tiene X categorias etc?

¿Como podria hacerlo?

Saludos y muchas gracias,
  #2 (permalink)  
Antiguo 06/04/2009, 12:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Noticia asociada a varias categorias

En ese caso, quizás convenga crear una tabla intermedia (para la relación muchos a muchos) que contenga el id de la noticia y el id de la categoría a la que está relacionada. Si deseas relacionar con más una categoría, agregas otro registro con el id de la noticia y el id de la otra categoría a la que está relacionada.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 06/04/2009, 12:06
 
Fecha de Ingreso: abril-2009
Mensajes: 15
Antigüedad: 15 años
Puntos: 0
Respuesta: Noticia asociada a varias categorias

Es muy buena la idea de David...

Pero si no queres crear otra tabla tambien podes separar dentro del campo las categorias con comas, por ejemplo...
1,2,4

Despues tendras que hacer que cuando lea ese campo el PHP entienda que la coma separa categorias...
  #4 (permalink)  
Antiguo 06/04/2009, 12:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Noticia asociada a varias categorias

Es más complicado de la forma que expones FMB89, ya que para búsquedas es más optimo las relaciones m:n en cuanto a velocidad, imaginate que quieres listar todas las noticias de "tecnología", buscar por todos los campos es más lento.

Saludos.
  #5 (permalink)  
Antiguo 06/04/2009, 12:11
 
Fecha de Ingreso: abril-2009
Mensajes: 15
Antigüedad: 15 años
Puntos: 0
Respuesta: Noticia asociada a varias categorias

Es cierto GatorV, no tuve en cuenta eso...

Lo pense unicamente como para buscar una notica X y ver sus categorias...
  #6 (permalink)  
Antiguo 07/04/2009, 11:42
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 5 meses
Puntos: 74
Respuesta: Noticia asociada a varias categorias

Buenas, bueno al final he hecho alguna modificacion en la estructura de las tablas para que quede todo un poco más organizado.

Lo que he hecho ha sido dejar la tabla noticias así:
Tabla noticias:
id,
titulo,
cuerpo_noticia,
id_categoria
etc.

Tabla categorias:
id,
nombre_categoria,
imagen_categoria,
id_noticia.

He hecho este cambio porque creo que es el mas recomendado, ya que la tabla categorias es la que ha de llamar a la id de la noticia, ¿no?.

Bueno, también he creado la tabla intermediaria que se me aconseja. Ésta es:
Tabla intermediaria (¡qué imaginación! xD)
id,
id_noticia,
id_categoria

Todo esto me funciona, inserto una misma id_noticia con distintas id_categoria con lo cual, lo que quiere decir que una noticia puede tener varias categorias, ¿problema? que todo eso ocurre si lo hago manualmente desde phpmyAdmin.

Yo lo que quiero es que en el formulario de envio de la noticia pueda elejir las categorias en las cuales quiero asociar esa noticia. Y claro, no se como hacerlo porque el select solo me permite seleccionar una categoria.

Lo he intentado hacer con checkbox, pero mas de lo mismo, por muchos checkbox que seleccione, a la hora de subirse, solo se sube la ultima categoria seleccionada.

Eso es todo, muchas gracias y una vez más, les pido ayuda.

Saludos,
  #7 (permalink)  
Antiguo 07/04/2009, 11:47
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Noticia asociada a varias categorias

Con checkbox se puede hacer, pero tienes que reestructurar tanto el formulario como el PHP que procesa el formulario. ¿Podrías mostrarnos lo que tienes en este momento y qué es lo que falla?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 09/04/2009, 11:45
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 5 meses
Puntos: 74
Respuesta: Noticia asociada a varias categorias

Buenas de nuevo y perdón por la tardanza. Verás ya lo he conseguido hacer funcionar.
El problema que decir es que no sabia como subir una variable del tipo array a la base de datos.

Estuve leyendo y lo consegui solucionar gracias a algunos casos que se dieron en el foro.

Aquí esta la parte del código donde se muestra las categorias

Código categorias:
Ver original
  1. <?php
  2.  
  3.                         $sql = "SELECT * FROM categorias ORDER BY id";
  4.                         $res = do_sql ($sql);
  5.  
  6.                         while ($row = mysql_fetch_array($res)) {
  7.                      
  8.                 ?>
  9.  
  10. <input type="checkbox" name="id[]" value="<?php echo $row['id']?>"><?php echo $row['nombre_categoria']; ?><br />
  11.  <?php
  12.                         }
  13.                 ?>

Y este es el código que me inserta la categoria o categorias escojidas en la BD:

Código ss:
Ver original
  1. $id_categoria=$_POST['id'];
  2. foreach ($id_categoria as $valor) {
  3.  
  4. //...conexion....
  5.  
  6. $query="INSERT INTO intermediaria (id_noticia,id_categoria) values ('$idn','$id_categoria')";
  7. $result=mysql_query($query) or die (mysql_error());
  8. }

Bueno como dije ya se encuentra solucionado. El problema que tenia era ese que no sabia meter varias categorias en la BD

Saludos y muchas gracias por todo,
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 19:00.