Foros del Web » Programando para Internet » PHP »

Como agregar valores a un campo de una tabla sin que se repita y mostrarlos.

Estas en el tema de Como agregar valores a un campo de una tabla sin que se repita y mostrarlos. en el foro de PHP en Foros del Web. Hola amigos de FDW. Quisiera que en está ocasión me ayudarán con una duda que tengo, en mi web publico información de libros (nombre, autor, ...
  #1 (permalink)  
Antiguo 14/03/2013, 18:01
 
Fecha de Ingreso: enero-2013
Mensajes: 18
Antigüedad: 11 años, 2 meses
Puntos: 5
Pregunta Como agregar valores a un campo de una tabla sin que se repita y mostrarlos.

Hola amigos de FDW. Quisiera que en está ocasión me ayudarán con una duda que tengo, en mi web publico información de libros (nombre, autor, paginas, genero, etc) y en la misma publicación muestro comentarios hacia el libro de mis usuarios. Ahora decidi meter un sistema de perfil para los usuarios registrados en el cual se muestra información que ellos proporcionaron pero aquí viene mi problema porque a cada publicación de los libros quiero agregarles un botón que diga 'Marcar Como Favorito' y que todas las publicaciones (Los libros) se agreguen al perfil del usuario. Estás son mis tablas de SQL:

USUARIOS:
Código:
CREATE TABLE IF NOT EXISTS `users` (
  `id_us` int(1) NOT NULL AUTO_INCREMENT,
  `nme_us` varchar(100) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  `nck_us` varchar(50) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  `pss_us` varchar(100) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  `eml_us` varchar(100) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  `sex_us` varchar(10) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  `cnt_us` varchar(50) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  `rnk_us` varchar(20) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL DEFAULT 'Miembro',
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id_us`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
LIBROS:
Código:
CREATE TABLE IF NOT EXISTS `books` (
  `id_bk` int(1) NOT NULL AUTO_INCREMENT,
  `nme_bk` varchar(255) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL DEFAULT '',
  `atr_bk` varchar(255) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL DEFAULT '',
  `pag_bk` varchar(255) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL DEFAULT '',
  `1gn_bk` varchar(255) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL DEFAULT '',
  `2gn_bk` varchar(255) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL DEFAULT '',
  `3gn_bk` varchar(255) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL DEFAULT '',
  `syp_bk` text CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL,
  `pbl_bk` varchar(255) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL DEFAULT '',
  `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id_bk`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
La verdad no sé mucho de PHP & MySQL, apenas voy agarrando la onda a estos lenguajes, pero pienso que para hacer lo que yo quiero debería agregar otro campo en mi tabla de USUARIOS (fav_us) donde se vaya agregando la ID de la tabla de LIBROS y teniendo el ID de los libros podre colocar los datos principales de los libros que el usuario agregue a Favoritos (Como el nombre y el link del libro) pero me pregunto si hay forma de que cuando se agregue un nuevo valor a 'FAV_US' se puede ir agregando comas o algo para que los separe? Porque si se mandan los números de ID de cada libro que se agregue a favoritos entonces podría tomarse varios ID's de libros como uno. Esa es la manera que veo para que pueda obtener lo que quiero pero ustedes son los maestro ¿Cómo podría hacerle para obtener mi resultado deseado? Gracias.
  #2 (permalink)  
Antiguo 14/03/2013, 19:14
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 12 años, 6 meses
Puntos: 31
Respuesta: Como agregar valores a un campo de una tabla sin que se repita y mostrarlo

Hola, por una cuestión práctica no te conviene modificar las tablas existentes. Simplemente crea una nueva tabla con el id de usuario y el id del libro. Para que no queden duplicados podes jugar con la indexación o al cargar el libro verificar si se encuentra en favoritos y anular la acción.

Agregar un nuevo campo a cualquiera de las dos tablas, separando los ids con comas no es recomendable, imaginate que tu tabla de usuarios o de libros crezca, el proceso para separar los ids lleva mas tiempo, la consulta implica mas datos, etc.

Saludos
  #3 (permalink)  
Antiguo 16/03/2013, 15:32
 
Fecha de Ingreso: enero-2013
Mensajes: 18
Antigüedad: 11 años, 2 meses
Puntos: 5
Pregunta Respuesta: Como agregar valores a un campo de una tabla sin que se repita y mostrarlo

Cita:
Iniciado por cachusan Ver Mensaje
Hola, por una cuestión práctica no te conviene modificar las tablas existentes. Simplemente crea una nueva tabla con el id de usuario y el id del libro. Para que no queden duplicados podes jugar con la indexación o al cargar el libro verificar si se encuentra en favoritos y anular la acción.

Agregar un nuevo campo a cualquiera de las dos tablas, separando los ids con comas no es recomendable, imaginate que tu tabla de usuarios o de libros crezca, el proceso para separar los ids lleva mas tiempo, la consulta implica mas datos, etc.

Saludos
Tienes razón, tu idea tiene más lógica, por último ¿Conoces algún link que me pueda servir? Muchas gracias :)
  #4 (permalink)  
Antiguo 16/03/2013, 22:14
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 12 años, 6 meses
Puntos: 31
Respuesta: Como agregar valores a un campo de una tabla sin que se repita y mostrarlo

Cita:
Iniciado por iDiegoEscobar Ver Mensaje
Tienes razón, tu idea tiene más lógica, por último ¿Conoces algún link que me pueda servir? Muchas gracias :)
Te recomiendo leer tutoriales de JOIN para optimizar la consulta y traer los datos que necesitas de las diferentes tablas. Ejemplo: traer todos los libros y a la vez traer todos los favoritos que tenga el usuario identificado.

Acá hay una explicación muy gráfica de como funciona, está en ingles pero se entiende incluso si no manejas el idioma:

http://www.codinghorror.com/blog/200...sql-joins.html

Etiquetas: favoritos, mysql, tablas
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 09:12.