Hacer consultas e inserciones en una base de datos y búsquedas satisfactorias

Hola,

estoy realizando un módulo y me surgen varias dudas que no he podido resolver haciendo una búsqueda por el foro. Espero no estar repitiendo tema.

Os comento. He insertado unas cuantas tablas más en la BD de Drupal para crear nuevas funcionalidades que necesito que tenga el portal. En concreto, he creado una serie de tablas relacionadas con la de user para poder gestionar libros.

Primeramente lo hice en php y poniéndolo en forma de bloque y me funcionaba, pero a parte de que sólo era una medida provisional hasta que me pusiera a hacer un módulo en condiciones, me daba problemas a la hora de hacer búsquedas. En concreto, lo que hacia éste bloque hecho en php, era que me hiciera una consulta simple a la tabla de los libros, me mostrara todos los registros en forma de listado, y que cada libro fuera "clicable" para acceder a la ficha del libro donde se podia consultar más información.

Todo esto me funcionaba, pero no me indexaba el contenido para poder hacer la búsqueda de un libro, por ejemplo. Es decir, yo ponia el nombre de un libro y solo me lo encontraba si era uno de los libros que aparecía en la primera página de resultados. Todos los libros que me apareciesen en las páginas siguientes del listado, ya no me los encontraba.

Para ser más concretos, tampoco encontraba el libro en sí (es decir, su ficha) de la primera página, sino que encontraba la página del listado. O sea, que aunque encontrara algo, tampoco era lo que yo buscaba.

Entonces, lo que he hecho es intentar hacer todo esto via módulo. Primero por motivos de estructura. Me parece lógico que algo así se deba hacer en forma de módulo. Y también para ver si así puedo solucionar el tema de las búsquedas y que cuando ponga el título de un libro, al menos me aparezca como resultado la ficha de ese libro.

Lo que tengo hecho hasta ahora en forma de módulo y funcionando, es que me saque el listado de los libros. Me hace correctamente la consulta y saca los registros en una tabla que he creado. Me lo pagina correctamente haciendo referencia a un php de apoyo para la paginación.

Una vez hecho esto lo que querria es que en cada título hubiese un enlace para poder ampliar la información de cada libro. Es decir, visitar una ficha de un libro. En esa ficha deberia de poder hacer darle una puntuación, es decir, hacer un INSERT.

A parte de que estoy en ello y nosé como plantear el tema de las fichas de los libros (el poder acceder a ellas), tengo el problema de las búsquedas que comentaba.

Yo pensaba que hacer esto con un módulo solucionaria lo de las búsquedas, pero de momento me sigue haciendo lo mismo. Nosé si no tendrá que ver algo el tema de la paginación, que recurro a un php "externo" que está dentro de la carpeta del módulo.

Entonces, y para resumir, necesito consejo para hacer posible que pueda acceder a la ficha de los libros y para el tema de las búsquedas (que pueda hacer una búsqueda de un libro y me aparezca en los resultados su ficha).

Gracias de antemano, y perdonad el tostón, pero no sé como explicar esto en 4 líneas :P.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

la solución a mi problema

Bueno, ya di con la solución, y creo que es conveniente ponerla aquí, por si algun otro usuario se encuentra con el mismo problema.

La solución es más fácil de lo que parecía: node import. Con éste mòdulo he podido solucionar el problema.

Os comento el paso a paso de mi situación.

Hice un pequeño screen scraper para coger datos de una web y no tener que añadirlos yo uno a uno. De ese proceso resulta un archivo XML. Después, hice un pequeño programita con PHP para insertar todos los registros en una tabla.

Claro, aquí venia mi problema, y es que quería poder hacer que cada registro fuera un nodo para que, entre otras cosas, si un usuario hacía una búsqueda pudiese encontrar esos registros.

Entonces cree un tipo de contenido para poder gestionar ese tipo de registros (ponerle los campos que quisiera, etc.).

Al intentar insertar algun registro en la tabla "content_type_nombre" (donde nombre es el nombre del tipo de contenido que he creado) con phpmyadmin a modo de prueba para ver si me creaba el nodo, resulta que en la base de datos me salía pero no en la web.

Después de investigar que podia pasar, me doy cuenta que probablemente cuando uno crea un nodo, hay una serie de registros relacionados que se crean y que desconozco. El problema era dar con esos registros "invisibles".

Al final, y después de mucho investigar, lo que hago es exportar la tabla de mis registros (la que habia llenado con mi programita en PHP) a un archivo CVS. Es importante que sea de tipo UTF 8.

Éste archivo lo retoqué un poco, quitando algunos campos que no me interesaban.

Luego instalo el módulo Node Import en mi página web. Y mediante éste módulo, puedo importar el archivo CVS con todos mis registros mediante una serie de pasos.

Es importante tener creado antes un tipo de contenido con los campos necesarios, ya que con Node Import, al importar los campos necesitarás los campos destino. Es decir, que si tienes estos campos en tu archivo CVS:

- Nombre
- Apellidos
- Dirección
- Código Postal

Luego en tu tipo de contenido, tienes que tener en cuenta que tendrás que tener los campos necesarios para poner los valores.

Una vez hecho esto, tienes cada registro en forma de nodo. Y problema solucionado.

Hola, pues sigo con el mismo

Hola,

pues sigo con el mismo tema.

El caso es que seguí buscando soluciones, pero no he encontrado nada resolutivo.

Os comento, después de discutir sobre el tema en la página web de magmax, saqué alguna idea que comentaré aquí por que me han surgido nuevas dudas y además, quizás a alguien le pueda servir.

Os pongo el enlace del tema de la web de magmax:

http://www.magmax.org/drupal/es/node/41

Resumiendo el tema, es que al final, se llegó a la conclusión que lo que se tenia que hacer a grandes rasgos para solucionar mi problema era:

1.- Crear un tipo de contenido específico.
2.- Crear los campos adicionales necesarios para gestionar cada registro.
3.- Como Drupal te crea una tabla al crear un tipo de contenido (content_type_nombre, donde nombre es el nombre del tipo de contenido que le damos), añadir los registros en esa tabla. Así se tendrá cada registro en un nodo.

Hasta aquí, parecía que todo iba bien. Pero tengo dos problemas. Bien, una duda y un problemón :P.

La duda es que en la tabla que se crea nueva para el tipo de contenido específico (la de content_type_nombre) me aparece un identificador clave, llamado vid, y que tiene el mismo valor que nid (identificador del nodo) y por lo que he visto no tiene nada que ver con el vid de la tabla vocabulary (lo de las taxonomias). La duda es que nose que es, y me gustaria averiguarlo.

Buscando al respecto encontré un artículo en el apartado de FAQ pero también tenian la misma duda. Os dejo el enlace:

http://drupal.org.es/node/3185

El problemón es que he intentado insertar un nodo en esa tabla desde phpmyadmin, pero luego no me aparece dicho nodo en la web. Así que supongo que tendré que añadir algun dato mas en alguna tabla que esté relacionada con la tabla de content_type_nombre.

Resumiendo, que siempre me paso, como puedo añadir registros a una tabla creada en Tipos de contenido y poder así crear nodos que luego aparezcan en la web?

Gracias de antemano.