Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] recepcion de datos y envio por mail

Estas en el tema de recepcion de datos y envio por mail en el foro de PHP en Foros del Web. buenos días, no tengo mucha idea de php, pero me metí porque parecía muy sencillo, y por hacer un favor, y se me está complicando. ...
  #1 (permalink)  
Antiguo 28/11/2013, 01:17
 
Fecha de Ingreso: noviembre-2013
Mensajes: 2
Antigüedad: 10 años, 4 meses
Puntos: 0
recepcion de datos y envio por mail

buenos días,
no tengo mucha idea de php, pero me metí porque parecía muy sencillo, y por hacer un favor, y se me está complicando. A ver si me pueden echar una mano.

Formulario html: con Nombre, y email + botón submit, que tiene en el action llamar al script php llamado addreg.php.Luego en el addreg.php, como entendéreis, es para agregar esos datos capturados del formulario a una base de datos mysql que tiene los siguientes campos.
ID-Autonumerico
Nombre
Email
Y os explico lo que necesito hacer. El usuario mete su datos en el formulario, y una vez se añade el registro, necesitaria mandar la información relativa a ese usuario por mail al propio correo electronico del usuario, con el ID.

Entiendo, que al no pasar el campo ID desde el formulario, antes de cerrar la conexión, podría lanzar un Select sobre la tabla para obtener el valor de este ID, comparando por el mail por ejemplo, y a continuación hacer el envío del mail, con las variables que tengo almacenadas, usando la funcion mail() no?

Hasta ahora tengo este codigo...perdonad si os duelen los ojos, que es un poco chapuza.

<?php
//parameros de conexion
$user = "";
$pass = "";
$server = "";
$bdd = "";

//creo cadena de conexion
$cn = mysql_connect($server, $user, $pass) or die(mysql_error());

//selecciono base datos a usar
mysql_select_db($bdd) or die(mysql_error());

// recojo las variables enviadas por el formulario
$nombre = $_POST["nombre"];
$email = $_POST["email"];

//creo el query para insercion en mysql
$sql = "INSERT INTO datos (nombre, email) VALUES ('".$nombre."', '".$email."')";
echo mysql_error();

//creo el recordset con el query para ejecutarlo
mysql_query($sql, $cn);

//verifico si los datos se agregaron o no
if (mysql_affected_rows()>0){
echo "Datos recogidos correctamente. en breve recibira un email con su nº de participacion";
$sql2 = "SELECT ID FROM datos where email = '$email'";
$id =mysql_query($sql2);

// Ahora se envía el e-mail usando la función mail() de PHP
//$headers = 'From: '.$email_from."\r\n";
//'Reply-To: '.$email_from."\r\n";
//'X-Mailer: PHP/' . phpversion();
//@mail($email, "correo de prueba", "correo de prueba, tu id es: "$id"", $headers);
}
else{
echo "Se ha producido un error. Intentelo de nuevo";
}


//cierro conexion
mysql_close();
?>

</body>
</html>

Por favor, a ver si alguien me puede echar una mano con esto, que para muchos de vosotros será una tonteria, pero yo llevo tres días amargado intentando solucionarlo. MUchas gracias de antemano a todos, simplemente por leer este rollo. Saludos
  #2 (permalink)  
Antiguo 28/11/2013, 01:38
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 21 años, 11 meses
Puntos: 1284
Respuesta: recepcion de datos y envio por mail

Hola:

Supongo que tendrás un campo "id" autoincrement...

Si es así, tienes la función mysql_insert_id(), así evitas la segunda consulta...

Por cierto, estás usando instrucciones que son obsoletas en versiones php modernas: mysql_insert_id.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 28/11/2013, 08:40
Avatar de TSG
TSG
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 373
Antigüedad: 10 años, 6 meses
Puntos: 9
Respuesta: recepcion de datos y envio por mail

Recuerda que la variable $nombre hace referencia (filtra) el $_POST['nombre'] que sería el imput del nombre:

Código HTML:
Ver original
  1. <input type="text" name="nombre" placeholder="Nombre">

Código PHP:
Ver original
  1. $nombre = utf8_decode(mysqli_real_escape_string($conexion, $_POST['nombre']));
  2.  
  3. $registrando = mysqli_query($conexion, "INSERT INTO tutabla(nombre,email) VALUES ('".$nombre."','".$email."')")or die(mysqli_error());
  4.             $yasacar = mysqli_query($conexion, "SELECT email FROM tutabla WHERE nombre = '".$nombre."'")or die(mysqli_error());
  5.             while($reg = mysqli_fetch_assoc($yasacar)){
  6.                 mail("$email","Titulo del mensaje","Hola, $reg['nombre'], <- asín sería el nombre.");
  7.             }
  8.             echo "Te has registrado correctamente";

Prueba y coméntanos.
Un cordial saludo.
  #4 (permalink)  
Antiguo 29/11/2013, 00:15
 
Fecha de Ingreso: noviembre-2013
Mensajes: 2
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: recepcion de datos y envio por mail

Lo primero, muchas gracias por responder a los dos, usando los conocimiientos que me habeis aportado cada uno he conseguido arreglarlo, y ahora sólo me falta formatearlo para que quede bonito, e intentare hacer una validación para comprobar si el mail está duplicado.....en blanco...etc....Pego el código que tengo hasta ahora, por si a alguien le pudiera servir. Evidentemente he pasado a usar mysqli para todo....

De nuevo, muchas gracias!!

<?php
//parameros de conexion
$user = "";
$pass = "";
$server = "";
$bdd = "";

//creo cadena de conexion
$cn = mysqli_connect($server, $user, $pass) or die(mysqli_error());

//selecciono base datos a usar
mysqli_select_db($cn, $bdd) or die(mysqli_error());

// recojo las variables enviadas por el formulario
$nombre = $_POST["nombre"];
$email = $_POST["email"];


$nombre = utf8_decode(mysqli_real_escape_string($cn, $_POST['nombre']));

$registro = mysqli_query($cn, "INSERT INTO datos(nombre,email) VALUES ('".$nombre."','".$email."')")or die(mysqli_error($cn));
$ymuestro = mysqli_query($cn, "SELECT email FROM datos WHERE nombre = '".$nombre."'")or die(mysqli_error($cn));
$id = mysqli_insert_id($cn);
// Realizamos el envio del formulario a la cuenta de correo que nos indicaron
$envia = "From: aaal@aaaaacom\r\n";
$destino = $email;
$asunto = "Inscripcion en concurso";
while($registro = mysqli_fetch_assoc($ymuestro)){
//mail($destino, $asunto, "Hola,$registro ['nombre']", $envia);
mail($destino, $asunto, "Hola,$nombre, se te ha asignado el numero $id para el concurso. No borres este correo, lo usaras como justificante ", $envia);
}
echo "Te has registrado correctamente";
//cierro conexion
mysqli_close($cn);
?>

Etiquetas: formulario, html, mail, mysql, registro, select, sql, tabla, variable
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 18:24.