Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

[SOLUCIONADO] ¿Cómo guardar en el campo tipo SET?

Estas en el tema de ¿Cómo guardar en el campo tipo SET? en el foro de Bases de Datos General en Foros del Web. Hola! Mi problema es cómo guardar valores en un campo tipo SET . Veo que tal campo sólo puede contener valores preestablecidos por mí. Por ...
  #1 (permalink)  
Antiguo 12/05/2015, 06:34
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Pregunta ¿Cómo guardar en el campo tipo SET?

Hola!

Mi problema es cómo guardar valores en un campo tipo SET. Veo que tal campo sólo puede contener valores preestablecidos por mí. Por ejemplo:
Código MySQL:
Ver original
  1. ciudad set('Distrito Federal','Puebla','Guanajuato','Querétaro')

Áhora, digamos que tenemos un formulario con este select:
Cita:
Editado: Código de programación no permitido en foros de Bases de datos.
Leer las reglas del foro, por favor.
Pregunta: ¿Cómo guardar el valor elegido de este select en el campo SET?

Imagino que hay que hacer una especie de comparación, como: "Si el valor del select coincide con alguno de los valores preestablecidos de SET, entonces guarda". Pero no sé cómo hacerlo. Evidentemente, la cosa no funciona con:

Código MySQL:
Ver original
  1. INSERT INTO `mi_bd`.`mi_tabla` (`ciudad`) VALUES ('$ciudad')

Saludos!

Última edición por gnzsoloyo; 12/05/2015 a las 06:55
  #2 (permalink)  
Antiguo 12/05/2015, 07:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ¿Cómo guardar en el campo tipo SET?

No puedes recuperar un valor dado por deficion de campo, es decir, no puedes recuperar la lista de valores del Set. Solo puedes poner el dato, el cual será ignorado con un warning si no está entre los valroes permitidos.
Conceptualmente, lo que estás haciendo es erróneo. Es mucho mejor manejar los nombres de ciudades en una tabla específica de ciudades, donde sí puedas validar si existe, y en la tabla donde estás poneindo el SET, poner en realidad el ID de la tabla de ciudades como FK.

No compliques las cosas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 12/05/2015, 21:17
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Respuesta: ¿Cómo guardar en el campo tipo SET?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
...Solo puedes poner el dato, el cual será ignorado con un warning si no está entre los valroes permitidos...
Ea! Muy bien, gracias maestro gnzsoloyo, la cosa funcionó como indicas, guardar el dato así nada más; y tienes razón, no guarda valores que no coincidan con los preestablecidos.

Pero resulta que yo quería insertar un valor con vocales acentuadas. No se guardó el valor, aunque en el SET el valor está así, con acento. Recurrí a la función utf8_decode() de PHP y se arregló el problema. Sin embargo, te pregunto, ¿hay forma de hacer que la BD guarde el valor acentuado así sin problemas? Uno pensaría que con el cotejamiento, pero no es así (?), porque mi BD tiene cotejamiento UTF-8_general_ci, que acepta acentos, y aún así no funciona.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
...y en la tabla donde estás poneindo el SET, poner en realidad el ID de la tabla de ciudades como FK...
De hecho precisamente estoy aprendiendo a realizar claves foráneas, y vi que en el ejemplo que sigo, tienen un campo SET, por eso lo puse .

Saludos!

Etiquetas: mysql
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 10:54.