Ver Mensaje Individual
  #5 (permalink)  
Antiguo 11/08/2014, 12:12
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: Al insertar los datos de un select multiple solo se guarda un valor en la

Cita:
por eso queria que se guarden todos los valores del select en una misma tabla, esta mal ?
A nivel de programación, parece una buena idea. Pero a nivel de datos, no. Es incorrecto porque tienes N usuarios relacionado con N idiomas, y eso forzosamente se hace al menos en tres tablas, una para el usuario, otra para los idiomas y una que relacione ambos. De ese modo no se producen redundancias nocivas en la tabla usuarios ni en la de idiomas de usuario.
Adicionalmente la de paises evitaría tener que ingresar manualmente el nombre de cada pais en cada usuario. Lo haces por tabla de parametros fija y listo.
La cantidad de idiomas (con o sin discriminación) se obtiene a partir de una consulta.

Es un tema más para BBDD que para PHP, en realidad.
Cita:
Usuario(id_usuario, nombre, apellido, pais_id, otros datos...)
idiomas(id_idioma, denominacion)
pais(pais_id, nombre_pais)
Idiomas_usuario(id_usuario, id_idioma)
En MySQL sería as o menos así:
Código MySQL:
Ver original
  1. SELECT CONCAT(nombre, ' es de ', nombre_pais , 'y habla ', idiomas, ' idiomas') datosUsuario
  2.     (SELECT U.nombre, P.pais, COUNT(IU.id_idioma) idiomas
  3.     FROM usuarios U INNER JOIN pais P ON U.pais_id = P.pais_id
  4.         LEFT JOIN idiomas_usuario IU ON U.usario_id = I.usuario_id
  5.     GROUP BY usuario_id) tabla;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)