Problema al ingresar datos en tablas relacionadas

Hola experto, tengo la siguiente dificultad, estoy tratando de ingresar desde un solo formulario, datos a dos tablas en mysql, las cuales están relacionadas, una se llama clientes y la otra servicios_materiales, cuando mando la información solo se cargan los datos en clientes, pero la tabla servicios_materiales no queda sin registros.
Este es el código hph que estoy utilizando, agradezco su infinita colaboración
include("conexion.php");
$query=mysql_query("INSERT INTO clientes(Cedula,Nombre,Apellidos,Direccion,Telf,Email)"." VALUES (".$_POST["Cedula"].",'".$_POST["Nombre"]."','".$_POST["Apellidos"]."','".$_POST["Direccion"]."','".$_POST["Telf"]."','".$_POST["Email"]."');",$conexion);
 if (mysql_errno()!=0)
  {
     echo "error al ingresar los datos. ".mysql_errno()."-".mysql_error();
 mysql_close($conexion);
 } else {
 mysql_close($conexion);
 header("Location:registro.php");
 }
  include("conexion.php");
$query2=mysql_query("INSERT INTO servicios_materiales(Velocidad,Valor,Fecha de instalacion,Ap,Ip rf,Ip wan,Sm,Reflector,Fuente Canopy,Swchit,Router,Mastil,Abrazadera,Gapas,Cable utp,Supresor,Cable duplex,Caja interperie,Canaletas,Tuberia conduit,Toma doble,Vientos)"."VALUES (".$_POST["Velocidad"].",'".$_POST["Valor"]."','".$_POST["Fecha de instalacion"]."',".$_POST["Ap"].",".$_POST["Ip rf"].",".$_POST["Ip wan"].",".$_POST["Sm"].",'".$_POST["Reflector"]."','".$_POST["Fuente Canopy"]."',".$_POST["Swchit"].",".$_POST["Router"].",".$_POST["Mastil"].",".$_POST["Abrazadera"].",".$_POST["Grapas"].",".$_POST["Cable utp"].",".$_POST["Cable duplex"].",".$_POST["Caja interperie"].",".$_POST["Canaletas"].",".$_POST["Tuberia conduit"].",".$_POST["Toma doble"].",".$_POST["Vientos"].");",$conexion);
 if (mysql_errno()!=0)
  {
    echo "error al ingresar los datos. ".mysql_errno()."-".mysql_error();
 mysql_close($conexion);
 }else {
 mysql_close($conexion);
 header("Location:registro.php");
 } 
?>

1 Respuesta

Respuesta
1
Efectivamente el primer header("Location:registro.php"); deberás eliminarlo, puesto que al terminar la primer query, envías a registro.php y ya no se realiza la segunda consulta. Además no es necesario declarar 2 veces la conexión observa:
Te envío como debe quedar tu PHP:
(Me parece que la consulta de servicios, le faltan comillas a los POST, ya que es una comilla sencilla y luego una doble, la primer consulta tienes correctamente las comillas, solo observa eso, pero así debe quedar el orden:)
include("conexion.php");
$query=mysql_query("INSERT INTO clientes(Cedula,Nombre,Apellidos,Direccion,Telf,Email) VALUES (".$_POST["Cedula"].",'".$_POST["Nombre"]."','".$_POST["Apellidos"]."','".$_POST["Direccion"]."','".$_POST["Telf"]."','".$_POST["Email"]."');",$conexion);
 header("Location:registro.php");
$query2=mysql_query("INSERT INTO servicios_materiales(Velocidad,Valor,Fecha de instalacion,Ap,Ip rf,Ip wan,Sm,Reflector,Fuente Canopy,Swchit,Router,Mastil,Abrazadera,Gapas,Cable utp,Supresor,Cable duplex,Caja interperie,Canaletas,Tuberia conduit,Toma doble,Vientos) VALUES (".$_POST["Velocidad"].",'".$_POST["Valor"]."','".$_POST["Fecha de instalacion"]."',".$_POST["Ap"].",".$_POST["Ip rf"].",".$_POST["Ip wan"].",".$_POST["Sm"].",'".$_POST["Reflector"]."','".$_POST["Fuente Canopy"]."',".$_POST["Swchit"].",".$_POST["Router"].",".$_POST["Mastil"].",".$_POST["Abrazadera"].",".$_POST["Grapas"].",".$_POST["Cable utp"].",".$_POST["Cable duplex"].",".$_POST["Caja interperie"].",".$_POST["Canaletas"].",".$_POST["Tuberia conduit"].",".$_POST["Toma doble"].",".$_POST["Vientos"].");",$conexion);
 mysql_close($conexion);
 header("Location:registro.php");
www.krowmx.com
KrowMx
Realice lo que me comentas con lo del header lo elimine y le agregue las comitas que hacían falta, pero aun solo me carga los archivos en la primera tabla en la segunda sigue que dando sin registros el php quedo de la siguiente manera.
include("conexion.php");
$query=mysql_query("INSERT INTO clientes(Cedula,Nombre,Apellidos,Direccion,Telf,Email) VALUES (".$_POST["Cedula"].",'".$_POST["Nombre"]."','".$_POST["Apellidos"]."','".$_POST["Direccion"]."','".$_POST["Telf"]."','".$_POST["Email"]."');",$conexion);
$query2=mysql_query("INSERT INTO servicios_materiales(Velocidad,Valor,Fecha de instalacion,Ap,Ip rf,Ip wan,Sm,Reflector,Fuente Canopy,Swchit,Router,Mastil,Abrazadera,Gapas,Cable utp,Supresor,Cable duplex,Caja interperie,Canaletas,Tuberia conduit,Toma doble,Vientos) VALUES ('".$_POST["Velocidad"]."','".$_POST["Valor"]."','".$_POST["Fecha de instalacion"]."',".$_POST["Ap"].",".$_POST["Ip rf"].",".$_POST["Ip wan"].",".$_POST["Sm"].",'".$_POST["Reflector"]."','".$_POST["Fuente Canopy"]."','".$_POST["Swchit"]."','".$_POST["Router"]."','".$_POST["Mastil"]."','".$_POST["Abrazadera"]."','".$_POST["Grapas"]."','".$_POST["Cable utp"]."','".$_POST["Cable duplex"]."','".$_POST["Caja interperie"]."','".$_POST["Canaletas"]."','".$_POST["Tuberia conduit"]."','".$_POST["Toma doble"]."','".$_POST["Vientos"]."');",$conexion);
 mysql_close($conexion);
 header("Location:registro.php");
?>
Muy bien amigo, en este caso detecto los siguientes errores en tu consulta 2:
".$_POST["Ap"].",".$_POST["Ip rf"].",".$_POST["Ip wan"]."
Faltan las comillas simples como lo tienes en los demás campos,
Verifica corrigiendo ese error y seguimos buscando, ya que la lógica esta bien realizada, de no ser así, el problema vendrá desde antes a la hora de enviar los datos.
Saludos
KrowMx
www.krowmx.com
Nuevamente te pregunto y de antemano le agradezco, realice los cambios cambie el nombre de la segunda tabla quedo así servicio, para descartar el nombre de la tabla por si produce conflipto, la consulta quedo así
include("conexion.php");
$resul=mysql_query("INSERT INTO clientes(id_Cedula,Nombre,Apellidos,Direccion,Telf,Email)"."VALUES (".$_POST["id_Cedula"].",'".$_POST["Nombre"]."','".$_POST["Apellidos"]."','".$_POST["Direccion"]."','".$_POST["Telf"]."','".$_POST["Email"]."');",$conexion);
$resul2=mysql_query("INSERT INTO servicio(Velocidad,Valor,Fecha,Ap,Ip rf,Ip wan,Sm,Reflector,Fuente Canopy,Swchit,Router,Mastil,Abrazadera,Grapas,Cable utp,Supresor,Cable duplex,Caja interperie,Canaletas,Tuberia conduit,Toma doble,Vientos)"."VALUES ('".$_POST["Velocidad"]."','".$_POST["Valor"]."','".$_POST["Fecha"]."','".$_POST["Ap"]."','".$_POST["Ip rf"]."','".$_POST["Ip wan"]."','".$_POST["Sm"].",'".$_POST["Reflector"]."','".$_POST["Fuentes canopy"]."','".$_POST["Swchit"]."','".$_POST["Router"]."','".$_POST["Mastil"]."','".$_POST["Abrazadera"]."','".$_POST["Grapas"]."','".$_POST["Cable utp"]."','".$_POST["Supresor"]."','".$_POST["Cable duplex"]."','".$_POST["Caja interperie"]."','".$_POST["Canaletas"]."','".$_POST["Tuberia conduit"]."','".$_POST["Toma doble"]."','".$_POST["Vientos"]."');",$conexion);
 if (mysql_errno()!=0)
  {
    echo "error al ingresar los datos. ".mysql_errno()."-".mysql_error();
 mysql_close($conexion);
 }else {
 mysql_close($conexion);
 header("Location:registro.php");
 } 
?>
Coloque el siguiente código para que mostrara el error echo "error al ingresar los datos. ". mysql_errno()."-".mysql_error(); y el error que sale es el siguiente
error al ingresar los datos. 1064-You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'rf,Ip wan,Sm,Reflector,Fuente Canopy,Swchit,Router,Mastil,Abrazadera,Grapas,Cabl' at line 1
¿He revisado desde el principio del código y no lo encuentro?...
Seguramente tu problema ahora radica en que los campos llevan espacios, por ejemplo Ip wan entre otros, para solucionar el problema a tus campos agregales la siguiente comilla (comilla simple invertida) `Ip rf`
Saludos
KrowMx
www.krowmx.com
Gracias por la aclaración, en el día de mañana estaré realizando la corrección: are lo siguiente uniré las palabras como lo es ip rf la colocare ip_rf para ver si funciona, mil gracias, estaré corrigiendo para ver si termino, mañana te comento como me fue gracias maestro
Éxito con el desarrollo.
KrowMx
www.krowmx.com
Ya corregí los espacios, y cuando intento enviar la información aparece lo siguiente
error al ingresar los datos. 1064-You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '','rtrtrytrytr','','rtr','trt','r','trtrt','rtr','t','rtrtyrtrytr','','rt','rt',' at line 1.
Una pregunta más, que otro método puedo utilizar para ingresar los datos, se que existen varios, espero tu orientación
Podrías pegar tu código para ver como quedó, tienes un espacio en blanco puede ser que hayas repetido un campo, o que un campo no este en la tabla, o que solamente hayas omitido ese campo al escribirlo
,'rtrtyrtrytr',''(aaaaqui),'rt'
El único método de insertar datos es precisamente mediante la cláusula INSERT INTO, no hay otra forma en mysql
Pégame tú código para seguir revisándolo.
Revise como tu me dices y si me omití unregistro pero no estaba en el formulario, pero si en la base de datos, lo agregue pero aun sale el error, pego el código como que para que me orientes nuevamente, creo que ya es menos errores
include("conexion.php");
$resul=mysql_query("INSERT INTO clientes(id_Cedula,Nombre,Apellidos,Direccion,Telf,Email)"."VALUES (".$_POST["id_Cedula"].",'".$_POST["Nombre"]."','".$_POST["Apellidos"]."','".$_POST["Direccion"]."','".$_POST["Telf"]."','".$_POST["Email"]."');",$conexion);
$resul2=mysql_query("INSERT INTO servicio(Velocidad,Valor,Fecha,Ap,Ip_rf,Ip_wam,Sm,Reflector, Fuente_Canopy,Swchit,Router,Mastil,Abrazadera,Grapa,Cable_utp,Supresor, Cable_duplex,Caja_interperie,Canaletas,Tuberia_conduit, Toma_doble, Vientos,Observacion)"."VALUES ('".$_POST["Velocidad"]."','".$_POST["Valor"]."','".$_POST["Fecha"]."',".$_POST["Ap"]."','".$_POST["Ip_rf"]."','".$_POST["Ip_wam"]."','".$_POST["Sm"]."','".$_POST["Reflector"]."','".$_POST["Fuente_Canopy"]."','".$_POST["Swchit"]."','".$_POST["Router"]."','".$_POST["Mastil"]."','".$_POST["Abrazadera"]."','".$_POST["Grapa"]."','".$_POST["Cable_utp"]."','".$_POST["Supresor"]."','".$_POST["Cable_duplex"]."','".$_POST["Caja_interperie"]."','".$_POST["Canaletas"]."','".$_POST["Tuberia_conduit"]."','".$_POST["Toma_doble"]."','".$_POST["Vientos"]."','".$_POST["Observacion"]."');",$conexion);
 if (mysql_errno()!=0)
  {
    echo "error al ingresar los datos. ".mysql_errno()."-".mysql_error();
 mysql_close($conexion);
 }else {
 mysql_close($conexion);
 header("Location:registro.php");
 } 
?>
Revisando nuevamente y verificando uno a uno cada parte del formulario y del código php, e mirado qeno estoy colocando el id_Cedula que es la clave foránea en la segunda tabla, sera esa la razón, si es como puedo llamar el registro para que quede incluido el la segunda tabla y me haga la relación, AGRADECIENDO TU VALIOSA ATENCIÓN
¿Cómo quedó finalmente tu PHP?,
¿Y ahora que error te marca?
Ya estamos a nada
www.krowmx.com
KrowMx
El código quedo de la siguiente manera
le asigne a id_cedula de la segunda tabla en campo del frmulario cedula
include("conexion.php");
$resul=mysql_query("INSERT INTO clientes(id_Cedula,Nombre,Apellidos,Direccion,Telf,Email)"."VALUES (".$_POST["id_Cedula"].",'".$_POST["Nombre"]."','".$_POST["Apellidos"]."','".$_POST["Direccion"]."','".$_POST["Telf"]."','".$_POST["Email"]."');",$conexion);
$resul2=mysql_query("INSERT INTO servicio(id_Cedula,Velocidad,Valor,Fecha,Ap,Ip_rf,Ip_wam,Sm,Reflector, Fuente_Canopy,Swchit,Router,Mastil,Abrazadera,Grapa,Cable_utp,Supresor, Cable_duplex,Caja_interperie,Canaletas,Tuberia_conduit, Toma_doble, Vientos,Observacion)"."VALUES ('".$_POST["id_Cedula"]."','".$_POST["Velocidad"]."','".$_POST["Valor"]."','".$_POST["Fecha"]."',".$_POST["Ap"]."','".$_POST["Ip_rf"]."','".$_POST["Ip_wam"]."','".$_POST["Sm"]."','".$_POST["Reflector"]."','".$_POST["Fuente_Canopy"]."','".$_POST["Swchit"]."','".$_POST["Router"]."','".$_POST["Mastil"]."','".$_POST["Abrazadera"]."','".$_POST["Grapa"]."','".$_POST["Cable_utp"]."','".$_POST["Supresor"]."','".$_POST["Cable_duplex"]."','".$_POST["Caja_interperie"]."','".$_POST["Canaletas"]."','".$_POST["Tuberia_conduit"]."','".$_POST["Toma_doble"]."','".$_POST["Vientos"]."','".$_POST["Observacion"]."');",$conexion);
 if (mysql_errno()!=0)
  {
    echo "error al ingresar los datos. ".mysql_errno()."-".mysql_error();
 mysql_close($conexion);
 }else {
 mysql_close($conexion);
 header("Location:registro.php");
 } 
?>
Y sale el siguiente error Notice: Undefined index: id_Cedula in C:\wamp\www\bame\nuevo usuario2.php on line 2, pero ingreso el respectivo registro que es numero, para mi pensar es que como coloque el id_cedula en la segunda tabla me esta indicando eso que falta ese campo, como hago para que tome el campo de la primera tabla que es id_cedula en la segunda tablapongo el ejemplo:
tabla                               tabla
clientes                               servicios 
id_cedula key                      id_cedula que es la foranea
Bueno en realidad no es un error, lo que quiere decir ahí, es que id_cedula no tiene ningún valor, tienes que hacer una 3er consulta intermedia para sacar el ultim o valor del id_cedula:
Quedaría así:
(¿Id_cedula es autoincrement correcto?)
$resul=mysql_query("INSERT INTO clientes(id_Cedula,Nombre,Apellidos,Direccion,Telf,Email)"."VALUES (".$_POST["id_Cedula"].",'".$_POST["Nombre"]."','".$_POST["Apellidos"]."','".$_POST["Direccion"]."','".$_POST["Telf"]."','".$_POST["Email"]."');",$conexion);
$ultimo=mysql_insert_id();
$resul2=mysql_query("INSERT INTO servicio(id_Cedula,Velocidad,Valor,Fecha,Ap,Ip_rf,Ip_wam,Sm,Reflector, Fuente_Canopy,Swchit,Router,Mastil,Abrazadera,Grapa,Cable_utp,Supresor, Cable_duplex,Caja_interperie,Canaletas,Tuberia_conduit, Toma_doble, Vientos,Observacion)"."VALUES ('$ultimo','".$_POST["Velocidad"]."','".$_POST["Valor"]."','".$_POST["Fecha"]."',".$_POST["Ap"]."','".$_POST["Ip_rf"]."','".$_POST["Ip_wam"]."','".$_POST["Sm"]."','".$_POST["Reflector"]."','".$_POST["Fuente_Canopy"]."','".$_POST["Swchit"]."','".$_POST["Router"]."','".$_POST["Mastil"]."','".$_POST["Abrazadera"]."','".$_POST["Grapa"]."','".$_POST["Cable_utp"]."','".$_POST["Supresor"]."','".$_POST["Cable_duplex"]."','".$_POST["Caja_interperie"]."','".$_POST["Canaletas"]."','".$_POST["Tuberia_conduit"]."','".$_POST["Toma_doble"]."','".$_POST["Vientos"]."','".$_POST["Observacion"]."');",$conexion);
Gracias resolví mi dificultad tenias la razón así como decías era, te agradezco, si se me presenta otra dificultad te consultare eres un buen guía mis respetos y mi saludos a un gran maestro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas