Foros del Web » Programando para Internet » PHP »

Ingresar datos en una base de datos y enviar un Email

Estas en el tema de Ingresar datos en una base de datos y enviar un Email en el foro de PHP en Foros del Web. Hola a tod@s. Veréis voy a resumir mi problema, tengo un formulario que me envía los datos a una base de datos y funciona perfectamente ...
  #1 (permalink)  
Antiguo 23/10/2014, 11:57
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 2 meses
Puntos: 7
Ingresar datos en una base de datos y enviar un Email

Hola a tod@s.

Veréis voy a resumir mi problema, tengo un formulario que me envía los datos a una base de datos y funciona perfectamente pero ahora necesito que esos mismos datos lleguen también a un determinado correo (email) y la verdad he probado a hacerlo por mi mismo y no consigo hacerlo funcionar.

El código que tengo lo he resumido al máximo (solo he puesto 2 campos) con el fin de que sea mas fácil para los que me podáis ayudar.

pagina donde esta el formulario:
Código:
<form name="EnvioForPersonal" id="EnvioForPersonal" action="Enviar_FormularioPersonal.php" method="post">
  <div id="DatosNombre">
    <input type="text" name="nombrepersonal" id="nombrepersonal"/></div>
 <div id="Datos1Apellido"> 
   <input type="text" name="apellidopersonal1" id="apellidopersonal1"/></div> 
 <div id="BotonIngresarPersonal"><input type="button" value="Ingresar" onclick="validarregistropersonal()"/>
  </form>
Página "Enviar_FormularioPersonal.php":
Código PHP:
Ver original
  1. <?php
  2.                 $query = 'INSERT INTO tb_personal (Nombre_Personal, Apellido1_Personal)
  3.                 VALUES (\''.$nombrepersonal.'\',\''.$apellidopersonal1.'\')';
  4.                 mysqli_query($conexion, $query) or die(mysqli_error());
  5. ?>


Función "validarregistropersonal()":
Código Javascript:
Ver original
  1. function validarregistropersonal(){
  2.         var nombrepersonal = document.getElementById("nombrepersonal");
  3.         var apellidopersonal1 = document.getElementById("apellidopersonal1");
  4.  
  5. if(!nombrepersonal.value){
  6.             document.getElementById("AvisoNombre").style.display ="block";
  7.             document.getElementById("AvisoNombre").innerHTML="Ingrese su Nombre";
  8.             return;
  9.             }
  10.            
  11. if(!apellidopersonal1.value){
  12.             document.getElementById("Aviso1Apellido").style.display ="block";
  13.             document.getElementById("Aviso1Apellido").innerHTML="Ingrese su Primer Apellido";
  14.             return;
  15.             }
  16.                      
  17.  document.EnvioForPersonal.submit(); // enviamos el formulario
  18.  }

Como ya he dicho me ingresa correctamente los datos en La base de datos Mysqli
pero no se como hacer para que envíe al mismo tiempo los mismos datos a un determinado correo.

Gracias por vuestra ayuda.
__________________
¿Hay algo mas hermoso que ayudar.?
  #2 (permalink)  
Antiguo 23/10/2014, 12:50
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Ingresar datos en una base de datos y enviar un Email

tienes la función mail(). por otro lado, el envío del formulario no debe de ser dependiente de javascript. cambias a esto, dejará de ser dependiente
Cita:
<form name="EnvioForPersonal" id="EnvioForPersonal" action="Enviar_FormularioPersonal.php" method="post" onsubmit="return validarregistropersonal(this)">

,,,,,

<div id="BotonIngresarPersonal"><input type="submit" value="Ingresar" />
por si tienes alguna duda
http://www.caricatos.net/articulos/formularios.php
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 23/10/2014, 12:59
Avatar de Mcruzmx  
Fecha de Ingreso: abril-2006
Mensajes: 357
Antigüedad: 18 años
Puntos: 9
Respuesta: Ingresar datos en una base de datos y enviar un Email

Php tiene la función mail, que es para mandar correos electrónicos, puedes usarlo justo después de guardar (o donde lo requieras, pero lo que entiendo es que quieres mandar el correo después de guardar), entonces podría ser algo como:

Código PHP:
<?php 
                $query 
'INSERT INTO tb_personal (Nombre_Personal, Apellido1_Personal)
                VALUES (\''
.$nombrepersonal.'\',\''.$apellidopersonal1.'\')';
                
mysqli_query($conexion$query) or die(mysqli_error());

                
mail('[email protected]''asunto'$mensaje);

?>

donde $mensaje es una variable donde puedes meter la información del cuerpo del correo que quieres mandar. También puedes mandar correos con formato HTML así puedes formatear la información, pero eso ya sería otro tema (tu pregunta es como mandar, aquí te comento que sería con la función mail de php justo después de guardar).

Te recomendaría darle una revisada a este enlace http://php.net/manual/es/function.mail.php

Saludos.
  #4 (permalink)  
Antiguo 24/10/2014, 12:31
 
Fecha de Ingreso: enero-2011
Ubicación: España
Mensajes: 222
Antigüedad: 13 años, 2 meses
Puntos: 7
Respuesta: Ingresar datos en una base de datos y enviar un Email

Gracias IsaBelM y Mcruzmx por vuestras respuestas.

IsaBelM con relación al tema que me comentas de que el envió de formulario no deba ser dependiente de JavaScript a un no lo he modificado, pero lo probare en las próximas horas y te comentare si me ha surgido algún problema.

Mcruzmx he seguido la idea que me diste y he hecho esta modificación en mi código y que aparentemente funciona ya que envía los datos por correo pero no lo hace del todo correctamente ni como yo quiero, a continuación te comento:
Código PHP:
Ver original
  1. <?php
  2. $query = 'INSERT INTO tb_personal (Trabajo, Nombre_Personal, Apellido1_Personal, Apellido2_Personal, Nacionalidad_Personal, Edad_Personal, FechaNacimiento_Personal, Dni_Personal, DocIdent_Personal, Direccion_Personal, Numero_Personal, Puerta_Personal, CodPostal_Personal, Provincia_Personal, Poblacion_Personal, Telefono_Personal, Email_Personal, Ip_Personal, Id_Personal, Usuario_Personal)
  3.                 VALUES (\''.$selactividad.'\',\''.$nombrepersonal.'\',\''.$apellidopersonal1.'\',\''.$apellidopersonal2.'\',\''.$selnacionalidadpersonal.'\',\''.$edadpersonal.'\',\''.$fechanacimientopersonal.'\',\''.$docidentidadpersonal.'\',\''.$seldocidentpersonal.'\',\''.$direccionpersonal.'\',\''.$numeropersonal.'\',\''.$puertapersonal.'\',\''.$codpostalpersonal.'\',\''.$selprovincia.'\',\''.$selpoblacion.'\',\''.$telefonopersonal.'\',\''.$emailpersonal.'\',\''.$ipuser.'\',\''.$id_personal.'\',\''.$usuariopersonal.'\')';
  4.                 mysqli_query($conexion, $query) or die(mysqli_error());
  5.                
  6.                     $to      = "[email protected]";//Direccion donde se dirige el correo
  7.  
  8.                     $asunto = '[Contacto desde www.tuzonavalencia.com] : ';
  9.  
  10.                     $msg     = "Nombre: $nombrepersonal \r\n1º Apellido: $apellidopersonal1 \r\nTeléfono: $telefonopersonal \r\nEmail: $emailpersonal\r\n\n";
  11.                    
  12.                    
  13.                     mail($to, $asunto, $msg, "from: $emailpersonal.\r\nReply-To:: $ipuser.\r\nReturn-Path: $id_personal\r\n");
  14. ?>
Las cosas que no funcionan bien son dos:
La primera si el contenido del correo tiene acentos, dependiendo en que programa de correo se visualiza luego, el mismo sale con las letras que tienen acento mal.
El segundo problema es que en la cabecera del correo quiero que salga el email desde el que se envía el correo y no como ahora que tal como esta puesto sale el email que ha introducido en el campo del formulario "$emailpersonal", también quiero que en dicha cabecera me salgan 2 datos mas, el valor del campo "$ipuser" y el de "id_personal", cosa que en este momento no hace.

Espero me podáis ayudar muchas gracias.
__________________
¿Hay algo mas hermoso que ayudar.?
  #5 (permalink)  
Antiguo 24/10/2014, 12:50
Avatar de Mcruzmx  
Fecha de Ingreso: abril-2006
Mensajes: 357
Antigüedad: 18 años
Puntos: 9
Respuesta: Ingresar datos en una base de datos y enviar un Email

bueno, creo que te puedes apoyar con google, puedes buscar "php mail html" o algo asi y seguro saldran muchos ejemplos.

Sobre los acentos, prueba codificandolos primero en UTF-8, php de nuevo tiene una función para esto. http://php.net/manual/es/function.utf8-encode.php

Sobre lo primero te paso un tip, yo normalmente hago un archivo html de como quiero que se vea el contenido del correo, luego reemplazo la información con código php, de modo que después ya copio todo el código y lo meto en $mensaje, solo debes tener cuidado con las comillas

Código PHP:
$mensaje='

<html>
<body>
<tabla>
<td>
<tr>
Aqui va un titulo
</tr>
</td>
<td>
<tr>
'
.$contenidodeltitulo.'
</tr>
</td>
</tabla>
</body>
</html>
'

Saludos.
  #6 (permalink)  
Antiguo 24/10/2014, 13:40
 
Fecha de Ingreso: diciembre-2010
Ubicación: Asunción
Mensajes: 41
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: Ingresar datos en una base de datos y enviar un Email

Mi consejo va en cuestion de usar \r; eliminalos. Las ultimas versiones de PHP rechazan este return del código. O no se si es cuestión de los servidores de correo. Lo cierto es que se rechaza ese \r

Etiquetas: email, formulario, html, mysql, registro, sql
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 01:30.