Foros del Web » Programando para Internet » PHP »

clasificación de noticias con mysql

Estas en el tema de clasificación de noticias con mysql en el foro de PHP en Foros del Web. Hola a todos, os cuento mi problemilla o mejor dicho mi duda para que alguno me de una sugerencia de como poder hacerlo. Tengo actualmente ...
  #1 (permalink)  
Antiguo 10/12/2007, 12:07
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
clasificación de noticias con mysql

Hola a todos, os cuento mi problemilla o mejor dicho mi duda para que alguno me de una sugerencia de como poder hacerlo.
Tengo actualmente en mi web una base de datos con una tabla de noticias. Cada noticia esta asociada a una categoria (deportes, politica, sucesos, etc..). Mi duda está en que no se bien como diseñar mi base de datos para conseguir que una noticia pueda pertenecer a más de una categoría a la vez. Es decir, que cuando yo la inserte desde mi panel de control la noticia se agregue a las categoría que yo desee.
Alguien sabría como diseñar la base de datos para conseguir ésto?
Muchas gracias por todo.
  #2 (permalink)  
Antiguo 10/12/2007, 12:23
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: clasificación de noticias con mysql

Tres Tablas:

Noticias
Categorias
Noticias_categorias

Noticias: ID_Noticia, Titulo, blabla
Categorias: ID_Categoria, Nombre, blabla

Y la otra tabla llevará la relación de las otras dos:
Noticias_Categorias: ID_Noticia, ID_Categoria

Los dos campos deben ser la clave principal de la tabla. De éste modo un ID de Noticia podrá estar vinculado a todos los IDs de categoría que se deseen.

(no sé si lo habré explicado medianamente bien)
  #3 (permalink)  
Antiguo 10/12/2007, 12:26
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Re: clasificación de noticias con mysql

Me parece bueno el planteamento que te hace Keysher, pero este tipo de preguntas te sugiero que te dirijas al foro de Base de Datos donde te sabran orientar mucho mejor.

Saludillos.
  #4 (permalink)  
Antiguo 10/12/2007, 16:37
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
Re: clasificación de noticias con mysql

Vale eso lo entiendo, pero cuando yo vaya a meter la noticia en mi panel de control suponiendo que el tipo de noticia lo voy a marcar con chekbox en el formulario de inserción cómo sería la consulta de inserción a la base de datos para que en la tabla noticias_categorias se me meta tantas veces como categorias se le haya dado a la noticia?
No se muy bien como poder hacerlo.
Un saludo y gracias
  #5 (permalink)  
Antiguo 10/12/2007, 16:41
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: clasificación de noticias con mysql

Umm, pues así analizándolo rápidamente sería un bucle que recorra todos los checkbox, y cada vez que encuentre uno que esté marcado inserte en esa tabla intermedia un nuevo registro, los valores serían el valor de la noticia (insertada previamente) y el de la categoría (que iría asociada al checkbox).

¿Se entiende más o menos?
  #6 (permalink)  
Antiguo 11/12/2007, 04:30
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
Re: clasificación de noticias con mysql

si , pero no parece fácil no? porque primero habría que meter la noticia en la table de noticias para darle un id a esa noticia, y luego con ese id de noticia ir a la tabla noticias_categorias e ir metiendo esa noticia con su id tantas veces como a categorías haya sido asignada no?
Si es así creo que me va a tocar comerme la cabeza porque no parece fácil el asunto creo
  #7 (permalink)  
Antiguo 11/12/2007, 04:42
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: clasificación de noticias con mysql

En realidad no es muy complicado. Es más o menos como tú dices:

- Primero insertas la Noticia.
- Luego sacas el ID de esa noticia
- Y por último haces el bucle que recorra todos los checkboxes y vaya insertando en la tabla de relaciones el ID de la notica con el ID de la categoría.

A tener en cuenta:
- Tienes que tener relacionado el nombre del checkbox con el ID de la categoría.
- Tienes que controlar los errores (al ser muchas consultas alguna puede fallar).

Por lo demás no me parece muy complicado, quizás algo liado, es posible que haya alguna manera más óptima, pero en principio me parece una buena opción.
  #8 (permalink)  
Antiguo 11/12/2007, 06:59
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
Re: clasificación de noticias con mysql

ok gracias lo intentaré próximamente aunque le daré el coco para ver si encuentro otra forma aunque esta no me parece nada mala.
Muchiiisiiimas gracias amigo.
Nos vemos
  #9 (permalink)  
Antiguo 11/12/2007, 07:20
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: clasificación de noticias con mysql

De nada, ya te digo que es la lógica que yo seguiría. En cuanto al código en sí no es demasiado complejo, pero pasa como en todas las aplicaciones, hay que tener en cuenta un millón de posibilidades, así como mantener la seguridad de la aplicación, por ello siempre se va enrevesando cada vez más.
  #10 (permalink)  
Antiguo 11/12/2007, 09:08
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: clasificación de noticias con mysql

buenos dias por la mañana, pues yo discrepo con Keysher, y argumento porque, lo que quiere nuestro amigo acholaco es darle una o mas categorias a una noticia, y de esa manera creo que es algo opsoleta , y con dos tablas es suficiente, una noticias y otra categorias, primero ingreso la o las categorias y luego la noticia, y le aplico las categorias mediante un checkbox como se ha dicho ya, en la tabla noticias tengo un campo categoria_ID, pero no guardo como INT los valores, si no como VARCHAR, como una cadena de caracteres mediante la funcion implode(), despues, bueno, despues te lees este post, que es donde esta la solucion al problema:
http://www.forosdelweb.com/f18/explo...ultado-534231/

y si funciona, ok

saludos y espero les sirva a todos esto que aqui les dejo
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #11 (permalink)  
Antiguo 11/12/2007, 09:14
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: clasificación de noticias con mysql

Yo me he ceñido al módelo de bases de datos relacionales. Lo de que está obsoleto.... bueno, puede ser, no lo sé. La verdad es que de la forma que dices tú puede ser más cómodo, pero no lo acabo de ver claro (será porque estoy muy acostumbrado al otro módelo).
  #12 (permalink)  
Antiguo 11/12/2007, 09:43
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
Re: clasificación de noticias con mysql

No se no se creo que me quedare con la de keysher porque estoy más acostumbrado a hacerlo con ids numericos antes que con varchar. Uf me haceis ahora de dudar
Pero bueno gracias que esto se agradece y mucho.
Espero otras propuestas.
  #13 (permalink)  
Antiguo 11/12/2007, 09:54
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: clasificación de noticias con mysql

Oops. perdon, tal ves no me exprese bien...! no digo que el modelo de bases de datos relacionales este opsoleto, me referia a la manera que has dicho que lo hiciera, no es nada comodo despues de insertar una noticia, empesar a darle a un boton hasta completar la cantidad de categorias a la que pertenece, es a eso a lo que me referia, es mejor de la otra forma, que al insertar la noticia, ya va con sus categorias, en cuanto a las relaciones en este caso se perderian, porque lo que se ingresa es una cadena y no un numero, luego las llamas por consultas y ya.

ahora, si lo que quieres es cuidar las relaciones y no perderlas seria de la otra manera, pero igual buscaria la forma de hacerlo mediante un bucle que al ingresar la noticia se generen tantas consultas INSERT como categorias se le apliquen a la noticia para guardar la relacion en la tabla noticias-categorias.

es que parece que tu trabajas con InnoDB, yo lo hago con MyISAM, tal vez por eso lo hago de una manera y tu de otra.

saludos y suerte
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #14 (permalink)  
Antiguo 11/12/2007, 10:05
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: clasificación de noticias con mysql

Cita:
Iniciado por acholaco Ver Mensaje
No se no se creo que me quedare con la de keysher porque estoy más acostumbrado a hacerlo con ids numericos antes que con varchar. Uf me haceis ahora de dudar
Pero bueno gracias que esto se agradece y mucho.
Espero otras propuestas.
bueno, no fue mi intencion hacerte dudar.
en mi caso, cuando dibuje mi BD hasta le hice la tablita categorias-noticias, pero cuando me puse a programar todo, me dije -no creo que sea bueno para el servidor hacer una consulta INSERT por cada categoria que tenga una noticia-, por eso es que lo he hecho de la manera que expongo aqui, y me ha funcionado muy bien, tu eliges claro, cual es la manera mas facil de hacerlo para ti, creo que cualquier forma es valida, lo de opsoleto que dije antes, fue mas bien por lo del botoncito que hay que darle por cada categoria, ya ni recuerdo quien lo dijo.

pero recalco, si vas a hacerlo como dice Keysher, debes a la hora de guardar la noticia, hacer un bucle (debe ser foreach()) por cada categoria que le apliques a la noticia.

saludetes, despues nos cuentas como te salio
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #15 (permalink)  
Antiguo 11/12/2007, 10:05
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: clasificación de noticias con mysql

Lo había entendido bien, es cierto que se ahorran consultas a la BDD. Yo estoy acostumbrado a trabajar con una tabla intermedia de relaciones, lo veo más claro, aunque supongo que en la pŕactica no habrá muchas diferencias.
  #16 (permalink)  
Antiguo 11/12/2007, 10:11
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: clasificación de noticias con mysql

Cita:
Iniciado por Keysher Ver Mensaje
Lo había entendido bien, es cierto que se ahorran consultas a la BDD. Yo estoy acostumbrado a trabajar con una tabla intermedia de relaciones, lo veo más claro, aunque supongo que en la pŕactica no habrá muchas diferencias.
bueno, en este caso no tiene diferencias, no creo que se consuma tanto, pero imaginate otro ejemplo, una relacion profesor - alumnos, un profe puede tener hasta 250 alumnos en una escuela, imaginate hacer un bucle de 250 consultas a tu BD, se te puede colgar, no crees???
he ahi una gran diferencia, en este caso una noticia que puede tener? 5 categorias? ahi esta bien, pero el profe y sus 250 alumnos???

seguiremos informando
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #17 (permalink)  
Antiguo 11/12/2007, 10:36
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: clasificación de noticias con mysql

Me parece una buena discusión. De hecho es posible que del modo que planteas se simplifiquen consultas posteriores....

Cuando me vea con la necesidad de volver a diseñar una base de datos (que será pronto), lanzaré la consulta (quizás aquí y en el foro de BDD), a ver que opina la gente, que, como he dicho, me parece algo interesante.
  #18 (permalink)  
Antiguo 11/12/2007, 10:47
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: clasificación de noticias con mysql

Cita:
Iniciado por Keysher Ver Mensaje
Me parece una buena discusión. De hecho es posible que del modo que planteas se simplifiquen consultas posteriores....

Cuando me vea con la necesidad de volver a diseñar una base de datos (que será pronto), lanzaré la consulta (quizás aquí y en el foro de BDD), a ver que opina la gente, que, como he dicho, me parece algo interesante.
si, creo que es un buen tema para debatir y analizar , de hecho, hay tantas maneras de hacer las cosas como personas en el mundo, cuando lances tu consulta me avisas por MP si quieres, pa no perderme el debate , asi aprendemos todos y siempre se encuentras nuevas y mejores maneras de hacer las cosas.

saludos y aqui estamos pa lo que sea, jajajjaa
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #19 (permalink)  
Antiguo 11/12/2007, 18:35
Avatar de popobcn
Moderador
 
Fecha de Ingreso: noviembre-2006
Ubicación: Cerdanyola del Vallès
Mensajes: 3.892
Antigüedad: 17 años, 5 meses
Puntos: 1142
Re: clasificación de noticias con mysql

Pues yo comparto el mismo punto de vista que Keysher, de echo me resulta mas comodo tener una tabla intermedia para hacer este tipo de relaciones... Quizas por lo claro o "transparente" que me puede llegar a resultar verlo.

No obstante, el introducir todas las id de categorias en las notificas en un único campo delimitado, puede que sea la opción más rápida y menos pesada en carga de consultas a la bbdd... pero a mi, particularmente, me dan rabia los array's xD jajajajajaja

Saludos!
  #20 (permalink)  
Antiguo 12/12/2007, 07:29
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: clasificación de noticias con mysql

es que yo le veo mas sentido a la tabla intermedia si fuera una relacion 1 a 1, pero no para 1 a varios
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
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 14:45.