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

Guardar varios datos en 1 columna

Estas en el tema de Guardar varios datos en 1 columna en el foro de Bases de Datos General en Foros del Web. Hola! tengo la siguiente duda y espero que la puedan entender. Quiero hacer algo asi como: Escribe los nombres que conozca: 5 campos de texto ...
  #1 (permalink)  
Antiguo 27/07/2012, 19:00
Avatar de evairdesign  
Fecha de Ingreso: abril-2012
Mensajes: 54
Antigüedad: 12 años
Puntos: 7
Guardar varios datos en 1 columna

Hola! tengo la siguiente duda y espero que la puedan entender.

Quiero hacer algo asi como:
Escribe los nombres que conozca:
5 campos de texto para que escriban 5 nombres y estos se inserten en la bd.

Mi duda es....
¿Como insertaria esos 5 nombres (ingresados en los campos de texto) en la BD sin necesidad de crear 5 columnas, como Nombre1 Nombre2 Nombre3 Nombre4 Nombre5
Quiero guardar esos 5 nombres en 1 sola columna "Nombres" y asi mismo tener las funciones de "eliminar nombre, editar nombre, agregar nombre"
Esto debido a que cada usuario ingresa nombres diferentes, por lo tanto los datos deben guardarse en 1 columna y en la misma fila.
¿Es posible?
__________________
Todo debe hacerse lo más simple posible pero no más simple
  #2 (permalink)  
Antiguo 27/07/2012, 20:55
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 3 meses
Puntos: 155
Respuesta: Guardar varios datos en 1 columna

pero lo que no entiendes es como insertar en la base de datos esos nombres o como mandarlos desde un formulario?
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #3 (permalink)  
Antiguo 27/07/2012, 21:36
Avatar de evairdesign  
Fecha de Ingreso: abril-2012
Mensajes: 54
Antigüedad: 12 años
Puntos: 7
Respuesta: Guardar varios datos en 1 columna

mm..no se entiende bien, se como insertar y todo eso de php xD, el problema es que por ejemplo si quiero insertar 5 nombres, usaria 5 textfield y se crearian 5 filas en la columna NOMBRES.

Ahora bien, si quiero insertar 5 nombres, usar 5 texfield pero crear 1 sola fila. para que tengan el mismo id

EJEMPLO:
id - NOMBRES
1 - carlos juan alberto gustavo ricardo

y que esos datos al llamarlos se muestren en los 5 campos texfield

En vez de tener que hacerlo asi:
id - n1 - n2 - n3 - n4 - n5
1 - carlos - juan - alberto - gustavo - ricardo
__________________
Todo debe hacerse lo más simple posible pero no más simple
  #4 (permalink)  
Antiguo 27/07/2012, 21:44
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 3 meses
Puntos: 155
Respuesta: Guardar varios datos en 1 columna

jeje no we no te capto bien que problema hay en guardar todos esos nombres en un solo campo de la base de datos y después mostrarlo?


por que todo en un solo id que problema habria si fueran distintos campos de la base de datos?
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #5 (permalink)  
Antiguo 27/07/2012, 22:15
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años
Puntos: 34
Respuesta: Guardar varios datos en 1 columna

o haces nombre1 nombre2 nombre3 nombre4 nombre5...

o, lo que sería mejor, y mas normalizado: insertas hasta 5 nombres compartiendo un mismo id, o si hay mas datos normalizas a 2 tablas. no está bien poner mas de un dato en un campo. trae problemas
  #6 (permalink)  
Antiguo 27/07/2012, 22:43
Avatar de evairdesign  
Fecha de Ingreso: abril-2012
Mensajes: 54
Antigüedad: 12 años
Puntos: 7
Respuesta: Guardar varios datos en 1 columna

Bien, lo explicaré detalladamente con imagenes y codigo, tal vez así me entiendas mejor.

https://www.dropbox.com/s/kdq0wb077abg63c/Captura.PNG

Esa es la estructura de mi base de datos, la cual funciona de la siguiente mandera.

Modifique mi archivo .htaccess y cree url amigables, por lo tanto cuando el usuario escribe por ejemplo: www.misitio.com/ana automaticamente se crea una variable de sesion llama RBD la cual le asigna el rbd correspondiente al usuario ingresado.

Si escribo ana en la url, la variable de sesion seria $_SESSION['RBD'] = 2
Si escribo ricardo en la url, la variable de sesion seria $_SESSION['RBD'] = 1

para de esa manera mostrar los datos correspondientes al usuario designado.

Hasta ahí bien.

ahora quiero crear un formulario con 5 campos de texto. en donde el usuario ingrese por ejemplo:

Regiones que haz conocido:
CAMPO DE TEXTO1
CAMPO DE TEXTO2
CAMPO DE TEXTO3
CAMPO DE TEXTO4
CAMPO DE TEXTO5

Al enviar esos datos se guardaran en la columna "region" pero tengo 5 regiones, si es que el usuario ingreso mas de una, por lo tanto la pregunta es ¿como guardar esas 5 regiones en una sola columna?

La solucion mas burda, seria algo asi:

https://www.dropbox.com/s/s2g1w660g8ycp4e/Captura2.PNG
pero para eso tendria que usar 5 columnas y solo quiero usar 1.

Eso es lo que no sé hacer guardar varios datos en un solo campo
algo asi...

https://www.dropbox.com/s/5gch5z73lhyjg3v/Captura3.PNG

y que al llamar dichos datos, se puedan usar individualmente, la verdad no se que soluciones se utilizan para ese tipo de requerimientos :/ por que no quiero colapsar con columnas

Si tuviera 10 regiones, 10 nombres, 10 animales, 10 paises para un mismo usuario, seria ilogico hacerlo de la siguiente manera
region1 region2 region3...... nombre1 nombre2...animales1....etc.

asi mismo como dicen ustedes asignarle el "usuario" tampoco seria una buena solucion, ya que colapsaría de filas mi base de datos, suponiendo que tuviera mas de 20.000 usuarios. y tuviera 10 regiones, 10 nombres, 10 animales, 10 paises serian alrededor de 200 millones de filas...me explico? :$ se que es confusa mi manera de explicar, pero si yo no lo entiendo, se me hace dificil que ustedes lo entiendan, de todas maneras gracias por comentar
__________________
Todo debe hacerse lo más simple posible pero no más simple

Última edición por evairdesign; 27/07/2012 a las 22:49
  #7 (permalink)  
Antiguo 28/07/2012, 15:02
 
Fecha de Ingreso: enero-2010
Mensajes: 73
Antigüedad: 14 años, 3 meses
Puntos: 9
Respuesta: Guardar varios datos en 1 columna

Si te he entendido bien, te basta con guardar en un campo nombres todos juntos, separados por un símbolo que escojas. Cuando he visto algo del estilo, normalmente era la almohadilla "#" de tal manera que tendrías esto:

id - NOMBRES
1 - #carlos jesus#juan#alberto#gustavo#ricardo

Ahora para recuperar los nombres, tienes que recorrerte la cadena al completo, buscando las posiciones de las almohadillas. Si te fijas, el primero de los nombres, lo he puesto compuesto, de manera que lo cogerá entero y sin problemas, porque en medio no tiene una almohadilla
  #8 (permalink)  
Antiguo 28/07/2012, 20:15
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años
Puntos: 34
Respuesta: Guardar varios datos en 1 columna

para hacerlo BIEN, tenes que hacer OTRA tabla, usando el rbd ese como fk y un campo "region" agregas regiones segun el rbd de la otra tabla. Eso estaría BIEN normalizado.

ej: una tabla regiones_perfil
+--------+------------------------------+
|....rbd...|..........region....................|
|.......1...|....noroeste......................|
|.......1...|.....metropolitana.............|
|........1..|......campo campo............|


eso esta BIEN hecho.

Como vos lo haces te va a traer problemas, por ej, que ocurre si tenes que buscar todos los que tengan una determinada region? o listar las regiones, si estan todas juntas como haces? te complicas la vida. O los que tengan solo 2 regiones? por ej
  #9 (permalink)  
Antiguo 28/07/2012, 20:20
Avatar de patriciomase  
Fecha de Ingreso: abril-2012
Ubicación: Mar del Plata
Mensajes: 323
Antigüedad: 12 años
Puntos: 34
Respuesta: Guardar varios datos en 1 columna

Cita:
asi mismo como dicen ustedes asignarle el "usuario" tampoco seria una buena solucion, ya que colapsaría de filas mi base de datos, suponiendo que tuviera mas de 20.000 usuarios. y tuviera 10 regiones, 10 nombres, 10 animales, 10 paises serian alrededor de 200 millones de filas...me explico? :$ se que es confusa mi manera de explicar, pero si yo no lo entiendo, se me hace dificil que ustedes lo entiendan, de todas maneras gracias por comentar
no son 10 millones de filas! eso se llama normalizacion, tendrías una tabla animales, otra paises y así. Y tablas usuarios_paises, usuarios_animales, usuarios_regiones, solo con los ids
  #10 (permalink)  
Antiguo 28/07/2012, 21:21
Avatar de naiger67  
Fecha de Ingreso: enero-2011
Mensajes: 22
Antigüedad: 13 años, 3 meses
Puntos: 3
Respuesta: Guardar varios datos en 1 columna

Chamo para lo que quieres hacer basta con crear un string con tu pagina del lado servidor
algo.php por ejemplo. Y recuperar los datos del array
Código PHP:
Ver original
  1. $_POST[]
por ejemplo
Código HTML:
Ver original
  1. <input type='text' name='uno'>
  2. <input type='text' name='dos'>
  3. <input type='text' name='n'>
los recuperas asi:
Código PHP:
Ver original
  1. $cadenaDeNombres = $_POST['uno'].' '. $_POST['dos'].' '. $_POST['n'];
y luego insertas dicho string. pero esto es una chapucita pa salir del paso no?
ya q como te dijo el pana patriciomase toda tabla debe ser normalizada por lo menos hasta tercera forma y tu modelo rompe la primera y evidentemente todas... Suerte con esto
  #11 (permalink)  
Antiguo 29/07/2012, 18:00
Avatar de evairdesign  
Fecha de Ingreso: abril-2012
Mensajes: 54
Antigüedad: 12 años
Puntos: 7
Respuesta: Guardar varios datos en 1 columna

@Hexplore Muchas gracias, tambien es una buena opcion lo que planteas, encontre la funcion explode() que me ayudaria a buscar ciertos caracteres y lograr separarlos

@patriciomase Perdona mi ignorancia xD estuve leyendo un poco de normalizacion de tablas y ya me di cuenta de la manera en que funciona y me parece que es la solucion mas acertada a lo que busco hacer.
http://www.angelfire.com/ult/lupa/bd/normalizacion1.htm

Pero tengo una duda, haciendolo de esa manera, con varias tablas, ¿aumentaria las peticiones sql al servidor o me equivoco?

@naiger67 Lo que planteas funciona exelente para insertar datos, pero para recuperarlos, sería un lío y como bien dices, creo que la normalizacion de tablas es la mejor opcion, gracias de todas maneras
__________________
Todo debe hacerse lo más simple posible pero no más simple

Etiquetas: columna
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 21:02.