Bueno, como me parecia una tonteria poner una tabla intermedia en la relacion de muchos a muchos en de
noticias<----<>---->categorias
Pense en un algoritmo que me permitiera en un solo campo almacenar todas las categorias de forma sencilla y con dos funciones las cuales, una de ellas te dice si el id de la noticia que le envias por argumento tiene como categoria la categoria cuyo id envias por argumento.
Luego una segunda funcion que simplemente cuenta las noticias que tienen X categoria ayudandose de la funcion anterior.
La idea me surgio cuando recorde como funcionaba el MsgBox de visualbasic. En un solo argumento, un numero entero, indicabas el icono, los botones y no se que mas a traves de la suma de numeros.
Entonces lo hice asi:
Cada categoria, tiene la id tipica, 1,2,3 ... y luego una segunda id, llamemosla idb aunque yo la llame nombre_corto por que tenia hecho el campo y asi no me ponia a modificar xD. Bueno, pues en esta segunda id, esta almacenado un 2 elevado a la primera id.
Es decir, para que nos aclaremos:
Categoria 1, internet, idb:2
Categoria 2, juegos, idb:4
Categoria 3, musica, idb:8
Categoria 4, hostiasenvinagre, idb:16
Entonces, a la hora de seleccionar las categorias, sumara las idb's de las que haya elegido a traves de checkboxes y las sumara.
Por ejemplo: 14, sabemos que a la fuerza va a ser de las categorias 1,2 y 3.
El algoritmo seria algo asi:
Almacenamos en A la idb mas alta y el B la suma de idb's que esta almacenada en la noticia, osease, A=16 y B=12.
mientras B sea mayor o igual que 2:
si B es mayor que A entonces:
imprimimos que esta noticia tiene la categoria A
B es igual a B menos A
fin si.
A es igual a A entre 2
fin mientras.
Bueno este algoritmo funciona perfectamente, y bueno, aunque en mi web repito mucho codigo por pereza a hacer funciones, va perfecto y como me costo hacerlo pues dije, voy a compartirlo con mv que me ha gustado el sistema que use.
Un saludo