Autor
|
Tema: Insertar datos con php avanzado (Leído 2,811 veces)
|
ppfenix79
Desconectado
Mensajes: 10
|
Hola tengo un problema al insertar datos de un formulario a mi tabla no se cual sea el problema pero nose si me pofrian ayudar seria de gran ayuda.. <form method="post" action="crear.php" > <label>De:</label><br /> <input type="text" name="email"><br /> <label>Para: </label><br /> <input type="text" name="emailamigo"><br /> Asunto:<br /> <input type="text" name="asunto" /><br /> Mensaje:<br /> <textarea name="texto"></textarea> <br /><br /> <input type="submit" name="enviar" value="Enviar" /> </form> <?php if(isset($_POST['enviar'])) { $nombre=$_POST['email'];//id de la tabla usuario $amigo=$_POST['emailamigo'];//id de la tabla usuario pero con otro nombre $asunto=$_POST['asunto'];//de la tabla mensajes $texto=$_POST['texto'];//de la tabla mensajes $fecha = date("Y/m/j");//de la tabla mensajes $sql = "INSERT INTO mensajes (email,emailamigo,leido,fecha_mensaje,asunto,texto) VALUES ('".$nombre."','".$amigo."','No','".$fecha."','".$asunto."','".$texto."')"; echo "<script type='text/javascript'> alert('Mensaje Enviado Correctamente');</script>"; } ?>
En los dos inputs primero inputs recojo nombres de mi base de datos de usuario su nombre y apellido donde el ID se llama email, luego donde dice asunto y texto coloco lo que voy a enviar. Despues de eso lo inserto en una tabla MENSAJES y con las tablase de : idp(pk), email(fk), emailamigo(fk), leido, fecha, asunto, texto... En la consulta de insert into es donde falla pero nose en donde les agradeceria si me ayudarian GRACIAS... Mod: Los códigos deben ir en etiquetas GeSHi
|
|
« Última modificación: 16 Febrero 2016, 20:59 pm por engel lex »
|
En línea
|
|
|
|
engel lex
|
Insertar datos con php avanzado no quiero que te sientas insultado... pero esto no es php avanzado... es una practica bastante básica, no tiene más array que el POST, ni tiene objetos... no se cual sea el problema primero que nada, ya no se recomienda el uso de la extensión mysql, se recomienda migrar a mysqli o mysql_pdo, la extensión vieja quedará obsoleta en las proximas versiones de php por otro lado, para simplificar el código recomiendo cambiar la query y colocarla así $sql = "INSERT INTO mensajes (email,emailamigo,leido,fecha_mensaje,asunto,texto) VALUES ('$nombre','$amigo','No','$fecha','$asunto','$texto')";
ya que php si interpreta las variables dentro de comillas dobles... por ultimo... puedes tratar de reportar el error, para leerlo bien }
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
ppfenix79
Desconectado
Mensajes: 10
|
Gracias y ya se que es una consulta basica pero para mi esto es muy avanzado ,.,.pero igual voy a probar con tu ayuda .,,.pero en los campos de los inputs de de email y emailamigo yo no coloco los correros sino que coloco los nombres de una tabla usuario y al tratar de insertarlas en mi tabla mensaje quiero que vaya el id que seria sus emails y no el nombre que coloco en los inputs como podria cambiar eso o igual nomas inserta en los campos???
Consulta no válida: Cannot add or update a child row: a foreign key constraint fails (`bd_racsole`.`mensajes`, CONSTRAINT `mensajes_ibfk_3` FOREIGN KEY (`email`) REFERENCES `usuario` (`email`) ON DELETE CASCADE ON UPDATE CASCADE)
ese es el error que tengo al hacer como me dijiste haber si me lo puedes solucionar,.,.,.
Mod: No hagas doble post, usa el boton "editar"
|
|
« Última modificación: 17 Febrero 2016, 15:01 pm por engel lex »
|
En línea
|
|
|
|
engel lex
|
Cannot add or update a child row: a foreign key constraint fails (`bd_racsole`.`mensajes`, CONSTRAINT `mensajes_ibfk_3` FOREIGN KEY (`email`) REFERENCES `usuario` (`email`) ON DELETE CASCADE ON UPDATE CASCADE)
te traduzco el mensaje no se puede añadir o actualizar una columna hija: una restriccion de foreign key ha fallado es decir, estás usando foreign keys y no estás actualizando apropiadamente... si no sabes que es una FK, entonces revisa la tabla y quitaselas
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
ppfenix79
Desconectado
Mensajes: 10
|
Mmmm haber el problema es el siguiente: tabla 1= usuario email(50) (pk)//Aqui almaceno los correos como su id principal nombre(30) //Su nombre apellido(30)//Su apellido tabla 2= mensajes cod_men int (pk)// su id de cada mesaje email(fk)//aqui donde obtengo el id de la tabla usuario osea su email emailamigo(fk)/*aqui donde obtengo el id de la tabla usuario osea su email pero cambio el nombre para difereciar los nombres nada mas*/ leido(2)//aqui solo dos consultas el SI o NO para ver si lo ha leido o no. fecha_mensajes DATE//la fecha en que se envia el mensaje asunto(100)//El asunto del mensaje texto TEXT//Y el mensaje Ahora hago el form para enviar datos; <form name="form1" action="crear.php" method="POST"> De: <input type="text" name="email">/*Aqui coloco el nombre y su apellido que envia el mensaje ejemplo "Juan Ramirez" que hay en la tabla usuario*/ Para: <input type="text" name="emailamigo">/*Aqui el nombre quien recibe el mensaje ejemplo "Engel Lex" que hay en mi tabla usuario*/ Asunto:<br /> <input type="text" name="asunto" />//Aqui un nuevo asunto Mensaje:<br /> <textarea name="texto"></textarea>//y el cuerpo del mensaje nuevo <br /><br /> <input type="submit" name="enviar" value="Enviar" />//Envia los datos... </form> <?php if(isset($_POST['enviar'])) { $nombre=$_POST['email'];/*Obtengo el nombre y apellido de quien envia el mensaje "Juan Ramirez"*/ $amigo=$_POST['emailamigo'];/*Obtengo el nombre y apellido al que voy a enviar el mensaje a "Engel Lex"*/ $asunto=$_POST['asunto'];//Obtengo el asunto del mensaje $texto=$_POST['texto'];//obtengo el mensaje $fecha = date("Y/m/j");/*Aqui obtengo la fecha actual de hoy.. hasta aqui todo bien pero lo que quiero saber esque yo coloco nombre y apellidos que hay en mi tabla usuario , las obtengo pero cuando las obtengo al insertar a la tabla mensajes quiero que convierta los nombre en los codigos que tiene la tabla usuario osea sus codigos (PK) serian sus correos electronicos y es ahi el error como logro hacer eso acaso hay una consulta mas avanzada para la insertacion de esos datos*/ $sql = "INSERT INTO mensajes (email,emailamigo,leido,fecha_mensaje,asunto,texto) VALUES ('$nombre','$amigo','No','$fecha','$asunto','$texto')"; }else{ echo "<script type='text/javascript'> alert('Mensaje enviado correctamente');/*Envia los datos a la tabla mensajes*/ </script>"; } } ?>
Mod: Los códigos deben ir en etiquetas GeSHi
|
|
« Última modificación: 17 Febrero 2016, 15:48 pm por engel lex »
|
En línea
|
|
|
|
engel lex
|
recuerda usar las etiquetas GeSHi al publicar código...
responde puntualmente, de manera enumeraday precisa, con tu palabras lo siguiente sabes que son las fk? sabes como se usan las fk? para que usas las fk en esta tabla?
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
d91
Desconectado
Mensajes: 165
|
hola, según entiendo tienes una tabla donde están registrados los usuarios con su email, esa seria la tabla padre y como la tabla mensaje tiene una foreign key y apunta hacia la tabla usuarios seria la tabla hija, por lo tanto primero debe existir un registro en la tabla usuario para poder llenar registros en la tabla mensajes, o puede que exista un disparador y no lo estes tomando en cuenta
|
|
|
En línea
|
|
|
|
ppfenix79
Desconectado
Mensajes: 10
|
recuerda usar las etiquetas GeSHi al publicar código...
responde puntualmente, de manera enumeraday precisa, con tu palabras lo siguiente sabes que son las fk? sabes como se usan las fk? para que usas las fk en esta tabla? 1.- Es una limitacion referencial, es la que se refiere a una columna de otra tabla maestra y esa talba debe tener una clave primaria. 2.- A la tabla hija se coloca una clave foranea, esa debe ser de la tabla padre su clave principal asi se hara el vinculo de padre e hija. 3.- Para que los en mi tabla mensajes tenga guardado los datos del emisor y receptor, del que envia el mensaje y para quien es ese mensaje asi cuando el otro vea que mensaje es y de quien la envia. ammm nose si esta bien pero haber ojala haya aprobado.
hola, según entiendo tienes una tabla donde están registrados los usuarios con su email, esa seria la tabla padre y como la tabla mensaje tiene una foreign key y apunta hacia la tabla usuarios seria la tabla hija, por lo tanto primero debe existir un registro en la tabla usuario para poder llenar registros en la tabla mensajes, o puede que exista un disparador y no lo estes tomando en cuenta
Si hay datos en la tabla usuarios, pero los inputs coloco esos datos que hay el nombre y el apellido pero no sus correos cuando inserto hay recien quiero que coloque sus correos y asi veo en la tabla usuario de quen es el correro y veo su nombre y su apellido del quien envia o al que se envio...
|
|
« Última modificación: 17 Febrero 2016, 16:22 pm por engel lex »
|
En línea
|
|
|
|
engel lex
|
no hagas doble post usa el boton editar (como ya e dije arriba)
tus respuestas son correctas para la teoría... la cosa es que hay que saber usarlas, si no te da problemas... lo que dice d91 es cierto... a menos que vayas a usa TRIGGER o CASCADE en mysql no uses fk, ya que practicamente no tienen uso real fuera de eso y recibir alertas
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
ppfenix79
Desconectado
Mensajes: 10
|
no hagas doble post usa el boton editar (como ya e dije arriba)
tus respuestas son correctas para la teoría... la cosa es que hay que saber usarlas, si no te da problemas... lo que dice d91 es cierto... a menos que vayas a usa TRIGGER o CASCADE en mysql no uses fk, ya que practicamente no tienen uso real fuera de eso y recibir alertas
Ammm ok aunque esperaba una respuesta de lo resolvi debes hacer asi...pero igual tratare entender mejor la clves y las relaciones pero de todos modos gracias por las ayudas estoy agradecido ,.,.ojala logre resolverlo pronto para mi examen ggg
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Insertar datos con inyeccion sql
Nivel Web
|
Gorky
|
4
|
6,184
|
7 Noviembre 2009, 00:54 am
por OzX
|
|
|
Insertar datos en la base de datos
.NET (C#, VB.NET, ASP)
|
andaluz
|
5
|
4,671
|
27 Febrero 2012, 21:12 pm
por seba123neo
|
|
|
Insertar datos de dos campos hidden y un campo de texto en la base de datos.
Desarrollo Web
|
70N1
|
4
|
4,965
|
6 Octubre 2012, 20:22 pm
por RevangelyonX
|
|
|
Insertar datos php mysql
Desarrollo Web
|
aprendiz_web
|
1
|
2,313
|
29 Noviembre 2013, 04:22 am
por :ohk<any>
|
|
|
Insertar datos no repetidos
Bases de Datos
|
.:UND3R:.
|
5
|
4,251
|
22 Agosto 2016, 14:46 pm
por user-marcos
|
|