elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Insertar datos con php avanzado
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Insertar datos con php avanzado  (Leído 2,829 veces)
ppfenix79

Desconectado Desconectado

Mensajes: 10



Ver Perfil
Insertar datos con php avanzado
« en: 16 Febrero 2016, 20:25 pm »

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..

Código
  1. <form method="post" action="crear.php" >
  2. <label>De:</label><br />
  3. <input type="text" name="email"><br />
  4. <label>Para: </label><br />
  5. <input type="text" name="emailamigo"><br />
  6. Asunto:<br />
  7. <input type="text" name="asunto" /><br />
  8. Mensaje:<br />
  9. <textarea name="texto"></textarea>
  10. <br /><br />
  11. <input type="submit" name="enviar" value="Enviar" />
  12. </form>
  13.  
  14. <?php
  15. if(isset($_POST['enviar']))
  16. {
  17. $nombre=$_POST['email'];//id de la tabla usuario
  18. $amigo=$_POST['emailamigo'];//id de la tabla usuario pero con otro nombre
  19. $asunto=$_POST['asunto'];//de la tabla mensajes
  20. $texto=$_POST['texto'];//de la tabla mensajes
  21. $fecha = date("Y/m/j");//de la tabla mensajes
  22. $sql = "INSERT INTO mensajes (email,emailamigo,leido,fecha_mensaje,asunto,texto) VALUES ('".$nombre."','".$amigo."','No','".$fecha."','".$asunto."','".$texto."')";
  23. mysql_query($sql);
  24. echo "<script type='text/javascript'>
  25. alert('Mensaje Enviado Correctamente');</script>";
  26. }
  27. ?>

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
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Insertar datos con php avanzado
« Respuesta #1 en: 16 Febrero 2016, 21:06 pm »

Citar
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...

Citar
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í
Código
  1. $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

Código
  1. if(!mysql_query($sql)) {
  2.   die('Consulta no válida: ' . mysql_error());
  3. }


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 Desconectado

Mensajes: 10



Ver Perfil
Re: Insertar datos con php avanzado
« Respuesta #2 en: 17 Febrero 2016, 14:39 pm »

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
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Insertar datos con php avanzado
« Respuesta #3 en: 17 Febrero 2016, 15:04 pm »

Citar
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 Desconectado

Mensajes: 10



Ver Perfil
Re: Insertar datos con php avanzado
« Respuesta #4 en: 17 Febrero 2016, 15:43 pm »

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;
Código
  1. <form name="form1" action="crear.php" method="POST">
  2.     De:
  3. <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*/
  4. Para:
  5. <input type="text" name="emailamigo">/*Aqui el nombre quien recibe el mensaje ejemplo "Engel Lex" que hay en mi tabla usuario*/
  6. Asunto:<br />
  7. <input type="text" name="asunto" />//Aqui un nuevo asunto
  8. Mensaje:<br />
  9. <textarea name="texto"></textarea>//y el cuerpo del mensaje nuevo
  10. <br /><br />
  11. <input type="submit" name="enviar" value="Enviar" />//Envia los datos...
  12. </form>
  13.  
  14.  
  15. <?php
  16. if(isset($_POST['enviar']))
  17. {
  18. $nombre=$_POST['email'];/*Obtengo el nombre y apellido de quien envia el mensaje "Juan Ramirez"*/
  19. $amigo=$_POST['emailamigo'];/*Obtengo el nombre y apellido al que voy a enviar el mensaje a "Engel Lex"*/
  20. $asunto=$_POST['asunto'];//Obtengo el asunto del mensaje
  21. $texto=$_POST['texto'];//obtengo el mensaje
  22. $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*/
  23.  
  24.  
  25. $sql = "INSERT INTO mensajes (email,emailamigo,leido,fecha_mensaje,asunto,texto)
  26. VALUES ('$nombre','$amigo','No','$fecha','$asunto','$texto')";
  27. if(!mysql_query($sql)){
  28. die('Consulta no válida: ' . mysql_error());//sale error
  29.  
  30. }else{
  31. echo "<script type='text/javascript'>
  32. alert('Mensaje enviado correctamente');/*Envia los datos a la tabla mensajes*/
  33. </script>";
  34. }
  35.  
  36. }
  37. ?>


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
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Insertar datos con php avanzado
« Respuesta #5 en: 17 Febrero 2016, 15:53 pm »

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 Desconectado

Mensajes: 165


Ver Perfil
Re: Insertar datos con php avanzado
« Respuesta #6 en: 17 Febrero 2016, 16:04 pm »

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 Desconectado

Mensajes: 10



Ver Perfil
Re: Insertar datos con php avanzado
« Respuesta #7 en: 17 Febrero 2016, 16:14 pm »

Citar
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
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Insertar datos con php avanzado
« Respuesta #8 en: 17 Febrero 2016, 16:43 pm »

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 Desconectado

Mensajes: 10



Ver Perfil
Re: Insertar datos con php avanzado
« Respuesta #9 en: 17 Febrero 2016, 17:01 pm »

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Insertar datos con inyeccion sql
Nivel Web
Gorky 4 6,193 Último mensaje 7 Noviembre 2009, 00:54 am
por OzX
Insertar datos en la base de datos
.NET (C#, VB.NET, ASP)
andaluz 5 4,692 Último mensaje 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 5,018 Último mensaje 6 Octubre 2012, 20:22 pm
por RevangelyonX
Insertar datos php mysql
Desarrollo Web
aprendiz_web 1 2,343 Último mensaje 29 Noviembre 2013, 04:22 am
por :ohk<any>
Insertar datos no repetidos
Bases de Datos
.:UND3R:. 5 4,263 Último mensaje 22 Agosto 2016, 14:46 pm
por user-marcos
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines