Ayuda con varios insert

Hola nuevamente... Aquí molestando... Jijijiji..
Mira tengo un formulario en la cual recolecto información que van a ir a 3 tablas distintas... No se si ir por parte solicitando la info y a medida que se complete una parte vayan apareciendo las demás como par ir por orden o mostrar todo el formulario de una vez...
La primera parte es la info del cliente: rut, nombre, apellidos, dirección.. Etc.. Y van a la tabla clientes, la cual al momento de agregar estos datos debe comprobar si existe el cliente o no...
La segunda parte es referente a la mercadería, nombre producto, tipo, valor... Y a la la tabla producto...
La tercera parte es referente a la forma de pago, es decir, montocredito, pie, saldo, formapago, cantidadcuotas, vencimiento, interés... Esto va a la tabla convenio...
¿Cómo debo hacer para guardar los datos en las tres tablas?
Atenta a tus comentarios... Gracias...

3 respuestas

Respuesta
1
Ambas ideas planteadas son validas, eso ya depende del tipo de aplicación, y viendo siempre la usabilidad y facilidad de la misma.
Tu puedes ir solicitando información y almacenarlas en variables de session, y cuando las tengas las recuperas y las pasas a la db. Lo del insert es lo de menos, vas ejecutando insert en orden jerárquico según tu diseño de base de datos.
O la otra es un formulario maestro/detalle, pero es algo de avanzada que te podría llevar mucho tiempo ya que no tienes la experiencia/conocimiento. y te retrazaria mucho, pero para que algún día veas la posibilidad de crearlos.
Respuesta
1
Para guardar datos en una tabla ¿MySQL? hay que hacer un insert. Encontrarás toda la sintaxis y referencia en el siguiente enlace:
http://dev.mysql.com/doc/refman/5.0/es/insert.html
Cuando ya tengas claro como hacer un INSERT, solo debes usar los mismos métodos que usas para realizar un SELECT, salvo que un INSERT no te va a devoler datos.
Prueba y ya me comentas.
Hola, gracias por responder... Lo de hacer INsert lo tengo super claro... lo que pasa es que lo hasbia hecho con un formulario para una sola tabla... no para varias como es mi situación actual...
¿Según lo que entiendo entonces es que simplemente hago varios inser seguidos para cada tabla?
INSER TO tabla1 (campo1,campo2,campo3....) VALUEs (val1,val2,val3...);
INSER TO tabla2 (campo1,campo2,campo3....) VALUEs (val1,val2,val3...);
INSER TO tabla3 (campo1,campo2,campo3....) VALUEs (val1,val2,val3...);
así esta bien????
Atenta a tus comentarios.....
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">create table ciudades (
 idciudad bigint not null auto_increment,
 nombre varchar(30),
 primary key (idciudad)
) engine=innodb;
create table cliente(
idcli bigint not null auto_increment,
rut varchar(20) not null,
dv varchar(1),
nombre varchar(100) not null,
apellidos varchar(100) not null,
direccion varchar(100) not null,
idciudad bigint not null,
fono varchar(10),
celular varchar(10),
fax varchar(10),
mail varchar(30),
obs varchar(40),
PRIMARY KEY (idcli),
foreign key (idciudad) references ciudades (idciudad) on delete  restrict on update  restrict
)engine=innodb;
create table tipovehiculo (
 id_tipo_vehi bigint not null auto_increment,
 descrip varchar(15),
 primary key (id_tipo_vehi)
) engine = innodb;
create table vehiculo (
 idvehiculo bigint not null auto_increment,
 id_tipo_vehi bigint not null,
 marca varchar(50) not null,
 modelo varchar(50) not null,
 ano varchar(4) not null,
 color varchar(15),
 valor int not null,
 patente varchar(10),
 foto blob null,
 primary key (idvehiculo),
 foreign key (id_tipo_vehi) references tipovehiculo (id_tipo_vehi) on delete  restrict on update  restrict
) engine=innodb;
create table vendedor (
 idvendedor_ bigint not null auto_increment,
 rut varchar(20) not null,
 dv varchar(1) not null,
 nombres varchar(100) not null,
 apellidos varchar(100) not null,
 direccion varchar(100),
 idciudad bigint not null,
 fono varchar(10),
 celular varchar(10),
 comision double not null,
 obs varchar(40),
 primary key (idvendedor_),
 foreign key (idciudad) references ciudades (idciudad) on delete  restrict on update  restrict
) engine = innodb;
create table notavta (
 idnotavta bigint not null auto_increment,
 idcli bigint not null,
 idvendedor_ bigint not null,
 idvehiculo bigint not null,
 numnotavta int not null,
 fechavta date not null,
 valor int not null,
 pie int not null,
 saldo int not null,
 tipodoc varchar(10),
 tranfer int not null,
 gastos int not null,
 prenda int not null,
 monto_finan int not null,
 cantcuotas int not null,
 valor_cuota int not null,
 tasa decimal not null,
 obs varchar(40),
 primary key (idnotavta),
 foreign key (idcli) references cliente (idcli) on delete  restrict on update  restrict,
 foreign key (idvendedor_) references vendedor (idvendedor_) on delete  restrict on update  restrict,
 foreign key (idvehiculo) references vehiculo (idvehiculo) on delete  restrict on update  restrict
) engine = innodb;
</div>
Si, está bien. Solo debes tener cuidado con lo siguiente:
En la medida en que las claves primarias de tus tablas son autonuméricas dicho campo no deberá incluirse en el insert, porque (por ejemplo la tabla clientes) el campo idcli es calculado después de la inserción. Debes establecer bien el orden de los inserts en función de los id's que vayas a ir necesitando.
Si tienes que crear un cliente, un vendedor y luego una venta entre ambos, lo lógico es hacer un INSERT en clientes, recuperar el id creado con la función "mysql_insert_id" de PHP y almacenarlo en una variable, luego hacer el INSERT del vendedor y hacer lo mismo para el nuevo id del vendedor, y finalmente el insert de la venta.
Puedes documentarte al respecto en el siguiente enlace:
http://us.php.net/manual/es/function.mysql-insert-id.php
Para que me sirve capturar el Id del cliente y del vendedor y luego hacer la venta...
Como es el proceso para utilizar ese id almacenado del cliente y del vendedor para ingresar la venta...
INSER TO cliente (campo1,campo2,campo3....) VALUEs (val1,val2,val3...);
Id_cli=mysql_insert_id();
INSER TO vendedor (campo1,campo2,campo3....) VALUEs (val1,val2,val3...);
Id_vend=mysql_insert_id();
¿Qué hago con esos id para crear la venta en el INSERT TO notavta?
Tienes información en español sobre este proceso... Disculpa mi ignorancia y las molestias causadas...
Atenta a tus comentarios... y muchas gracias...
Notavta tiene dos campos, idcli e idvendedor... El intesert seria algo así...
INSER TO cliente (campo1,campo2,campo3....) VALUEs (val1,val2,val3...);
$Id_cli=mysql_insert_id();
INSER TO vendedor (campo1,campo2,campo3....) VALUEs (val1,val2,val3...);
$Id_vend=mysql_insert_id();
INSERT INTO notavta (idcli, idvendedor,...) VALUES ($Id_cli, $Id_vend, ...)
En la misma página que te indiqué tienes un desplegable. Selecciona Spanish y obtendrás la documentación en español.
Respuesta
1
De cualquiera de las dos formas lo debes hacer, la escogencia de uno u otro de pende de que tan accequible es para el usuario y si no se amontona mucha información en una sola página. Sugeriría para empezar que lo usaras con una sola página.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas