Foros del Web » Programando para Internet » PHP »

enviar un formulario a la bbdd y al email

Estas en el tema de enviar un formulario a la bbdd y al email en el foro de PHP en Foros del Web. Muy buenas. Necesito que me saqueis de una duda que lleva dandome guerra demasiado tiempo ya! Tengo un formulario en la web que es enviado ...
  #1 (permalink)  
Antiguo 28/01/2013, 05:40
Avatar de paxarin  
Fecha de Ingreso: enero-2010
Ubicación: Santander
Mensajes: 413
Antigüedad: 14 años, 2 meses
Puntos: 6
enviar un formulario a la bbdd y al email

Muy buenas.
Necesito que me saqueis de una duda que lleva dandome guerra demasiado tiempo ya!
Tengo un formulario en la web que es enviado a la bbdd para que allí a traves del cms sea visto.
Este es el formulario.
Código:
<div id="formulario">
        	<form id="pie" onSubmit="return validar2(this)" action="insertar-datos.php" method="post">
                    <input type="text" name="nombre" id="nombre" alt="Nombre" value="Nombre"  onfocus="cambiar(true,'nombre','Nombre')" onBlur="cambiar(false,'nombre','Nombre')"/>
                    <input type="text" name="mail" id="mail" alt="E-mail" value="E-mail" onFocus="cambiar(true,'mail','E-mail')" onBlur="cambiar(false,'mail','E-mail')" />
                    <select name="tipo" id="tipo">
                    <option value="">¿En que podemos ayudarte?</option>
                    <option value="Remedios caseros">Más información sobre:</option>
                    <option value="Plantas medicinales">Envio de articulos</option>
                    <option value="Terapias naturales">Información legal </option>
                    <option value="Diseño publicidad">Sugerencias</option>
                    <option value="Cosmetica natural">Enviarnos tus articulos</option>
               		</select>
                    <label id="msg"><p>Explicanos un poco más.</p></label>
                    <textarea name="msg" class="color" id="msg" alt="Comentario" value="Comentario" onFocus="cambiar(true,'msg','Comentario')" onBlur="cambiar(false,'msg','Comentario')"></textarea> 
                    <div id="btn_form">
                    <input type="submit" value=""  />
                    </div>
              </form>
En inserta-datos.php esta este codigo.
Código:
<?php
$conexion = mysql_connect("localhost","xxxxxx","xxxx");
        mysql_select_db("xxxxxxxxxxx",$conexion);

        // Con esta sentencia SQL insertaremos los datos en la base de datos
        mysql_query("INSERT INTO tblcontac (strNombre,strEmail,strTelefono,IntTipo,IntConocer,strComentario)
        VALUES ('{$_POST['nombre']}','{$_POST['mail']}','{$_POST['telefono']}','{$_POST['tipo']}','{$_POST['conocer']}','{$_POST['msg']}')",$conexion);
		if (mysql_errno()!=0)
{
	echo "No se pudo insertar los datos en la tabla. Error" .mysql_errno() ." - ".mysql_error();
	mysql_close($conexion);
}	else{
	$conexion;
	header("location:enviado.html");
	}
?>
Hasta aqui todo correcto, pero mi duda es la siguiente.
Se que tengo que hacer uso de una función mail() en la que le indico a que correo quiero enviar la respuesta del formulario recibido.
Pero donde debo de llamarla?
y como hacerlo correctamente?
Estuve buscando por la red y la verdad no encontre nada claro sobre esto.
Tengo hecho el php para enviarlo al correo.
Código:
<!DOCTYPE html >
<html lang="es-es">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
$nombre 	= $_POST['nombre'];
$servicios 	= $_POST['servicios'];
$mail 	= $_POST['mail'];
$telefono 		= $_POST['telefono'];
$conocer 		= $_POST['conocer'];
$mensaje 	= $_POST['msg'];

$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje = "Este correo electronico fue enviado por " . $nombre . " \r\n";
$mensaje .= "Realizando una consulta sobre el siguiente servicio : " . $servicios . " \r\n";
$mensaje .= "Su numero de telefono es el: " . $telefono . " \r\n";
$mensaje .= "Su e-mail es: " . $mail . " \r\n";
$mensaje .= "¿Como nos conocio?".$conocer. " \r\n";
$mensaje .= "Mensaje: " . $_POST['msg'] . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());

$para = '[email protected]';
$asunto = 'Desde Otra forma de vida';

mail($para, $asunto, utf8_decode($mensaje), $header);
/**
	Validate an email address.
	Provide email address (raw input)
	Returns true if the email address has the email 
	address format and the domain exists.
	*/
	function isValidEmail($email) {
		$isValid = true;
		if (strstr($_SERVER['HTTP_HOST'],'localhost') == FALSE) {
			$atIndex = strrpos($email, "@");
			if (is_bool($atIndex) && !$atIndex) {
			  $isValid = false;
			} else {
			  $domain = substr($email, $atIndex+1);
			  $local = substr($email, 0, $atIndex);
			  $localLen = strlen($local);
			  $domainLen = strlen($domain);
			  if ($localLen < 1 || $localLen > 64) {
				 // local part length exceeded
				 $isValid = false;
			  } else if ($domainLen < 1 || $domainLen > 255) {
				 // domain part length exceeded
				 $isValid = false;
			  } else if ($local[0] == '.' || $local[$localLen-1] == '.') {
				 // local part starts or ends with '.'
				 $isValid = false;
			  } else if (preg_match('/\\.\\./', $local)) {
				 // local part has two consecutive dots
				 $isValid = false;
			  } else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) {
				 // character not valid in domain part
				 $isValid = false;
			  } else if (preg_match('/\\.\\./', $domain)) {
				 // domain part has two consecutive dots
				 $isValid = false;
			  } else if (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\","",$local))) {
				 // character not valid in local part unless 
				 // local part is quoted
				 if (!preg_match('/^"(\\\\"|[^"])+"$/',str_replace("\\\\","",$local))) $isValid = false;
			  }
			  if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A"))) {
				 // domain not found in DNS
				 $isValid = false;
			  }
			}
		}
		return $isValid;
	}

 echo "<script>window.location='http://localhost/paxarin/otra-forma/enviado.html</script>";
?>
Pero si hago una cosa no puedo hacer la otra.
Alguien puede decirme como puedo hacerlo? o donde puedo buscar la solución.
Muchas gracias!!
__________________
http://www.paxarindesign.es
  #2 (permalink)  
Antiguo 28/01/2013, 05:52
 
Fecha de Ingreso: julio-2012
Ubicación: UK
Mensajes: 50
Antigüedad: 11 años, 8 meses
Puntos: 10
Respuesta: enviar un formulario a la bbdd y al email

yo tuve un problema parecido y opté por empezar a hacer pruebas desde un codigo muy simple e ir añadiendo mas variables y sentencias del programa poco a poco para intentar localizar cual era el foco del problema. Localizar el problema empezando desde la totalidad del programa y con un codigo mas extenso hace mucho mas dificil encontrar el problema y mas tratandose de la funcion mail() la cual a mi personalmente y a otra mucha gente nos ha dado muchos quebraderos de cabeza, asi que te recomiendo que hagas lo mismo que yo, a mi me funcionó :)
  #3 (permalink)  
Antiguo 29/01/2013, 03:18
Avatar de paxarin  
Fecha de Ingreso: enero-2010
Ubicación: Santander
Mensajes: 413
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: enviar un formulario a la bbdd y al email

Cita:
Iniciado por pvzzle Ver Mensaje
yo tuve un problema parecido y opté por empezar a hacer pruebas desde un codigo muy simple e ir añadiendo mas variables y sentencias del programa poco a poco para intentar localizar cual era el foco del problema. Localizar el problema empezando desde la totalidad del programa y con un codigo mas extenso hace mucho mas dificil encontrar el problema y mas tratandose de la funcion mail() la cual a mi personalmente y a otra mucha gente nos ha dado muchos quebraderos de cabeza, asi que te recomiendo que hagas lo mismo que yo, a mi me funcionó :)
Gracias por la respuesta, probare!!
__________________
http://www.paxarindesign.es
  #4 (permalink)  
Antiguo 30/01/2013, 05:16
Avatar de paxarin  
Fecha de Ingreso: enero-2010
Ubicación: Santander
Mensajes: 413
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: enviar un formulario a la bbdd y al email

me debo de estar voviendo........por que no consigo que esto funcione, xd!!
Alguien me puede dar una idea por favor?
__________________
http://www.paxarindesign.es
  #5 (permalink)  
Antiguo 30/01/2013, 08:01
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 6 meses
Puntos: 397
Respuesta: enviar un formulario a la bbdd y al email

Cita:
Iniciado por paxarin Ver Mensaje
me debo de estar voviendo........por que no consigo que esto funcione, xd!!
Alguien me puede dar una idea por favor?

Que código estas ejecutando... teniendo en cuenta de que estas siguiendo el consejo del amigo @pvzzle
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #6 (permalink)  
Antiguo 01/02/2013, 04:36
Avatar de paxarin  
Fecha de Ingreso: enero-2010
Ubicación: Santander
Mensajes: 413
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: enviar un formulario a la bbdd y al email

la verdad que probe como me comento el incluso con este otro y por ahora no lo consigo.
Código:
<?php 
$conexion = mysql_connect("localhost","xxxxxxxx","xxxxxxxxxxx"); mysql_select_db("tutoraco_vida"); // Con esta sentencia SQL insertaremos los datos en la base de datos 
mysql_query ("INSERT INTO tblcontac (`strNombre`, `strEmail`, `strTelefono`, `IntTipo`, `IntConocer`, `strComentario`) VALUES ('$_POST[nombre]', '$_POST[mail]', '$_POST[telefono]', '$_POST[tipo]', '$_POST[conocer]', '$_POST[msg]')");  
if (mysql_errno()!=0) {  
echo "No se pudo insertar los datos en la tabla. Error" .mysql_errno() ." - ".mysql_error();    mysql_close($conexion); 
} else { 
$enviar .= "" .$_POST['strNombre']. "\n"; 
$enviar .= "" .$_POST['strEmail']. "\n"; 
$enviar .= "" .$_POST['strTelefono']. "\n"; 
$enviar .= "" .$_POST['IntTipo']. "\n"; 
$enviar .= "" .$_POST['IntConocer']. "\n"; 
$enviar .= "" .$_POST['strComentario']. "\n";  mail("[email protected]","Recibiste un email","Visita el CMS",$enviar);
header("location:enviado.html");
}  
?>
Joder no pense que algo así seria tan sumamente complicado
__________________
http://www.paxarindesign.es
  #7 (permalink)  
Antiguo 01/02/2013, 08:05
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 6 meses
Puntos: 397
Respuesta: enviar un formulario a la bbdd y al email

Cambia esto:

Código PHP:
Ver original
  1. mysql_query ("INSERT INTO tblcontac (`strNombre`, `strEmail`, `strTelefono`, `IntTipo`, `IntConocer`, `strComentario`) VALUES ('$_POST[nombre]', '$_POST[mail]', '$_POST[telefono]', '$_POST[tipo]', '$_POST[conocer]', '$_POST[msg]')");

Por esto y dime si te funciona

Código PHP:
Ver original
  1. mysql_query ("INSERT INTO tblcontac (`strNombre`, `strEmail`, `strTelefono`, `IntTipo`, `IntConocer`, `strComentario`) VALUES ('{$_POST['nombre']}', '{$_POST['mail']}', '{$_POST['telefono']}', '{$_POST['tipo']}', '{$_POST['conocer']}', '{$_POST['msg']}')");

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.

Etiquetas: bbdd, email, formulario, html, mysql, select, sql, tabla
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 19:39.