Foros del Web » Programando para Internet » PHP »

Campos a tabla mysql por php

Estas en el tema de Campos a tabla mysql por php en el foro de PHP en Foros del Web. Hola, hace un tiempo logre agregar campos a un formulario por medio de un botón pero lo malo es que tengo que tener definido en ...
  #1 (permalink)  
Antiguo 14/07/2011, 05:32
 
Fecha de Ingreso: abril-2011
Mensajes: 121
Antigüedad: 13 años
Puntos: 1
Campos a tabla mysql por php

Hola, hace un tiempo logre agregar campos a un formulario por medio de un botón pero lo malo es que tengo que tener definido en la tabla mysql la cantidad de campos por ejemplo

descripcion1, descripcion2, descripcion3, y asi hasta el 20....

mi idea es que a medida que agrego un campo en el formulario tambien agregue un campo en mysql... como debiera hacer esto?? se puede hacer?? por que si si tengo definido descripcion hasta el 20 y agrego 21 campos en el form tendré problemas...

agradezco las ayudas... orientenme por favor... gracias.
  #2 (permalink)  
Antiguo 14/07/2011, 05:44
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Campos a tabla mysql por php

No es un problema de PHP, es de diseño de la base de datos. Si tienes en una tabla 20 campos llamados descripcion1, descripcion2... es un mal diseño. Deberías tener una tabla Descripcion, que almacenara un id primario para cada descricpión y un id foráneo (FOREING KEY) que lo relacionara con el objeto que describe.

Así, cada campo descripción del formulario generaría un insert a la tabla Descripcion.

No sé si me sigues, espero que te sirva, un saludo.
  #3 (permalink)  
Antiguo 14/07/2011, 05:57
 
Fecha de Ingreso: abril-2011
Mensajes: 121
Antigüedad: 13 años
Puntos: 1
Respuesta: Campos a tabla mysql por php

Agradezco mucho tu respuesta.... Si, veo que tienes razon... mira, voy a ver bien este tema del diseño y luego comento....

pero, mira... te dejo como esta diseñada y si me puedes corregir te lo agradecería...

hay una tabla cliente con campos... nombre, rut, direccion, etc...
hay otra tabla factura con campos cantidad, descripcion, valor_unidad, subtotal.... etc.

es justamente para estos campos de la tabla factura que en estos momentos tengo ya definidas 20 filas me refiero a cantidad1, cantidad2 hasta el 20 y lo mismo con descripcion, subtotal.....

veo que no debería ser asi... ¿como debería ser la estructura de las tablas para no cometer este error... ?

bueno, mi pregunta inicial se fué para otro lado... pero agradeceré mucho que me ayuden con esto ya que hasta ahora funciona bien pero se que esta mal armado esto..

saludos y gracias.
  #4 (permalink)  
Antiguo 14/07/2011, 06:12
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Campos a tabla mysql por php

Buenas, un buen diseño de base de datos te puede ayudar mucho a la hora de simplificar el código que tire de la misma, ya sea PHP o el que sea. Insisto mucho en esto, pero es que me he dedicado casi 3 años a bases de datos y me viene de vuelta ya. Te recomiendo encarecidamente que eches un vistazo a algún manual de diseño de bases de datos, porque veo muchos errores. Te comento:
1. No tienes claves primarias en las tablas, siempre es bueno poner un autonumérico como clave:
Código:
CREATE TABLE Cliente (
	id_cliente integer auto_increment,
	name varchar(20) not null,
	rut varchar(20),
	direccion text,
	PRIMARY KEY(id_cliente)
);
2. La tabla factura la veo demasiado general, no has dado muchos datos, pero deduzco que lo que guardas es para cada concepto que incluyas en la factura la cantidad, el precio de una unidad y la descripción del concepto. Esta tabla es demasiado amplia, deberías separarla al menos en un par de tablas:
Código:
CREATE TABLE Factura (
	id_factura integer auto_increment,
	//otros datos de la factura: fecha, cliente...
	PRIMARY KEY(id_factura)
);

CREATE TABLE Concepto (
	id_concepto integer auto_increment,
	cantidad integer not null,
	descripcion varchar(20) not null,
	valor_unidad integer not null,
	subtotal integer not null,  //este campo realmente no es necesario, se puede calcular como valor_unidad * cantidad
	id_factura integer,
	PRIMARY KEY(id_concepto),
	FOREIGN KEY(id_factura) REFERENCES Factura(id_factura)
);
De esta forma, en la tabla factura tienes un único registro para cada factura almacenada y en la tabla Concepto tienes un registro para cada línea de la factura. La forma en que se enlaza una factura con todos sus conceptos es con id_factura en la línea FOREIGN KEY(id_factura) REFERENCES Factura(id_factura). La base de datos no te permite poner una factura en la tabla Concepto que no esté creada en la tabla Factura.

De todas formas, estas son indicaciones básicas, si no tienes ni idea de lo que te hablo, te sugiero que le eches un ojo a un manual.

Un saludo y espero que te sirva.
  #5 (permalink)  
Antiguo 14/07/2011, 06:52
 
Fecha de Ingreso: abril-2011
Mensajes: 121
Antigüedad: 13 años
Puntos: 1
Respuesta: Campos a tabla mysql por php

jeje, agradezco nuevamente tu respuesta, bueno, en el post anterior efectivamente no detallé las tablas si tengo las primarias foraneas y eso solo que me quedaba grande lo que tu me aclaras muy bien y es crear una tabla conceptos...

no lo habia pensado y es mucho mas limpio así... infinitas gracias!!!.... saludos.
  #6 (permalink)  
Antiguo 14/07/2011, 06:56
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Campos a tabla mysql por php

No hay de qué, hombre.

Me gusta ser detallista en los diseños de las bases de datos, que son mucho más importantes de lo que la gente suele creer y si puedo convencer a uno al menos, pues mejor.

Un saludo y suerte.

Etiquetas: campos, mysql, tabla, formulario
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 16:08.