Todo iba bien con SMC, relativamente, como habrás podido comprobar por mis entradas eufóricas de estos últimos días sobre el asunto. Todo iba bien, relativamente, digo, hasta que he topado con las categorías.
Mi fuerte, desde luego, no es SQL. No es MySQL. No son las bases de datos. ¿Qué sé yo, si apenas he leído sobre ellas? Y así he llegado al punto en que me planteo las categorías para las entradas de SMC...
He visto como lo soluciona WordPress, y, por primera vez en SMC, he sentido la tentación de copiarlo, directamente. Pero, claro, si no sé qué estoy haciendo... cómo narices voy a copiar nada... y además, copiar se dice muy fácil, porque habría que saber al menos qué se quiere copiar y cómo hacerlo.
En la base de datos de WordPress existen tres tablas que tienen que ver con las categorías de las entradas. En una tabla se guarda información sobre las propias categorías, puesto que estas pueden ser categorías de enlaces o de entradas, por lo menos.
Otra tabla relaciona esta primera con una tercera, donde se guardan, propiamente, los nombres de las categorías. Y yo estoy absolutamente perdido en todo esto. Tengo la estructura de las tablas ahí delante, pero, es como si mirara la luna embobado.
Pienso partir de cero, es decir, llegar a una respuesta a la pregunta "¿Cómo lo harías tú?", pero, me temo que no voy a ser capaz de seguir adelante, y quizás lo tengo más que merecido, por meterme en camisas de once varas, por no pensar las cosas bien antes.
En fin. También puedo dejar pasar un poco el tiempo... como ahora mismo hago escribiendo esto. A ver si de algún modo se me aclaran las ideas, como suele decirse.
jejeje... ¿pero no has hecho antes un análisis? ¿Has echado un vistazo al sistema de categoría del flatpress?, lo digo porque no va con tablas, a ver si sacas alguna idea de ahí. Voy a pensar un ratito, a ver si se me ocurre algo... simple :)
Na... no te preocupes Casimiro. Ahora mismo he dejado el asunto muy parecido a como está en Wordpress, de donde lo he copiado, procurando entenderlo, aunque no del todo. Pero, vamos, que digo que no te preocupes, porque, no sé yo si no voy a abandonar el proyecto... de momento lo he parado, porque han sido estos últimos días algo durillos, y, como bien dices, estas cosas hay que pensarlas mejor. Pensarlas mejor y no ponerse a picar código como un loco para al cabo darte cuenta (tres o cuatro días después...) de que no vas bien por donde vas. No sé. Fíjate que ahora mismo no son ya las categorías lo que me preocupa, sino, la cantidad de cosas que hay que hacer. Son tantas que la verdad ni sé si tengo ganas, interés, voluntad... Tal vez sea cuestión de dejarlo "reposar" un tiempo y veremos a ver qué pasa. Pero, en fin, en todo caso, que me quiten lo bailao, digo yo. Gracias Casimiro. :)
Y comento yo, que para algo esto trata de comentarios :D Puedes hacer un sistema sencillito, hay muchas formas, pero se me ocurre una bien simple: una tabla de categorías con los campos:codigo,nombre,enlaces en la tabla de cada post: un campo categorías, donde escribas directamente las categorías a la que pertenece o seleccionando de una lista, (a gusto del programador, o sea, tú). Cuando tecleas las categorías a las que pertenece, simplemente separándolas por espacios (comas, puntos, guiones... lo que quieras)... si existe la categoría se le suma 1 al campo enlaces de la tabla categoría. Y si no existe esa categoría... se da de alta con el valor 1 en enlaces. Para "complicarlo" un poquito más... puedes crear una tabla itnermedia donde se guarden códigocategoria y códigoposts, ya sabes, un post puede tener muchas categorías y una categoría puede pertenecer a muchos posts. En fin, lo primero creo que es bien simple. Para hacer una búsqueda de post de una categoría sería algo parecido a: ejemplo: De esta manera aparecerían todos los posts que contengan la categoría "Firebird", aunque además pertenezcan a otra categoría. No sé si me he explicado, es bien sencillito y no hay que complicarse mucho la vida, jeje
Ooohhh!!! ha desaparecido el select: select * from tbposts where categorias containing "firebird" Lo del contador es por si quieres algo sacar la típica lista con los posts que la referencian: firebird (2) internet (1) motos (5) etc...
Gracias Casimiro. Acabo de despertar, y ahora mismo es imposible que tenga nada claro, pero, agradezco tu interés. El sistema que propones parece similar al que usan en Wordpress, si bien ahí no hay campos en la tabla de entradas para las categorías. Hay una tabla que guarda términos (pueden ser etiquetas, categorías, o cualquier cosa que se te ocurra), una segunda tabla que indica qué es cada término: es una etiqueta, es una categoría. Y una tercera tabla que relaciona objetos (entradas, páginas, etc.) con esta última tabla, de modo que pueda recurrirse a la primera para obtener los datos oportunos de cada entrada. El asunto podría quedar más o menos así, pero, hay muchas más dificultades, como que una categoría puede tener un "padre", puede ser "padre" de otras, etc., etc., etc. En fin. Es demasiado para mí. Ha estado bien estos días escribir código como un loco (no se lo recomiendo a nadie) pero, creo que no podría jamás acabar algo que mereciera la pena. Qué le vamos a hacer... es lo que se me ocurre y es lo que digo. PD. Sin embargo, cinco minutos después de escribrir este comentario ahí estoy liado de nuevo... a quien me comprenda a mí le pueden dar el premio nobel de quiromancia, por lo menos. :D