Almacenar formulario de contacto en MySQL Database
Almacenar formulario de contacto en MySQL Database. En este artículo veremos cómo aprovechar en guardar los datos que ingresan los visitantes en una base de datos, por ejemplo MySQL, por tanto este script PHP procesara el formulario completado por el visitante y lo enviara a un correo electrónico predefinido. Éstos códigos pueden estar ubicados dentro del archivo, o sino externamente, ahora veremos un ejemplo de implementación del mismo.
Sin embargo, tenemos que tener unos requisitos y/o herramientas para lograr nuestro objetivo.
- Tener un formulario amigable para el usuario.
- Una base de datos con su respetiva tabla para almacenar la información.
- Una configuración de conexión de la base de datos con nuestro formulario.
Nuestro formulario debe contener elementos básicos para recoger los datos de manera correcta.
Este formulario debe contener estos elementos, puede agregar más campos de entrada también en función de su requerimiento. Estoy utilizando estos campos Nombre de entrada, correo electrónico, asunto de contacto y mensaje.
Almacenar formulario de contacto en MySQL Database
Ahora, primero se tiene que enviar un correo electrónico, sin embargo, en ese envió se extenderá las funciones de este formulario de contacto para que pueda capturar y enviar los datos a la base de datos. También, se puede incluir captcha por motivos de seguridad.
Ejemplo #01 Creando recursos necesarios para lograr nuestro objetivo.
a) Base de datos y tabla
CREATE TABLE IF NOT EXISTS `contacto` ( `id` int(11) NOT NULL auto_increment, `name` varchar(70) default NULL, `email` varchar(70) default NULL, `subject` varchar(150) default NULL, `message` varchar(350) default NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
b) Archivo styles.css
body { padding-top: 40px; padding-bottom: 40px; background-color: #eee; } .form-contact { max-width: 330px; padding: 15px; margin: 0 auto; } .form-contact .form-contact-heading, .form-contact .checkbox { margin-bottom: 10px; } .form-contact .checkbox { font-weight: normal; } .form-contact .form-control { position: relative; height: auto; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; padding: 10px; font-size: 16px; } .form-contact .form-control:focus { z-index: 2; } .form-contact input, textarea, button { margin: 5px; border-bottom-right-radius: 0; border-bottom-left-radius: 0; }
c) Archivo conexion.php
<?php $connection = mysqli_connect('localhost', 'root', 'root'); if (!$connection){ die("Fallo la conexion con la base de datos" . mysqli_error($connection)); } $select_db = mysqli_select_db($connection, 'baul'); if (!$select_db){ die("Database seleccionada ha fallado" . mysqli_error($connection)); } ?>
d) Archivo contacto.php
<?php include('conexion.php'); if((isset($_POST['name']) && !empty($_POST['name'])) && (isset($_POST['email']) && !empty($_POST['email'])) && (isset($_POST['subject']) && !empty($_POST['subject']))){ $name = $_POST['name']; $email = $_POST['email']; $subject = $_POST['subject']; $message = $_POST['message']; $to = "TU-EMAIL@gmail.com"; $headers = "From : " . $email; if( mail($to, $subject, $message, $headers)){ $query = "INSERT INTO `contacto` (name, email, subject, message) VALUES ('$name', '$email', '$subject', '$message')"; $result = mysqli_query($connection, $query); echo "<center>E-Mail Enviado con exito, nos pondremos en contacto con usted pronto.</center>"; } } ?> <html> <head> <title>Simple Contacto Formulario en PHP</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" > <link rel="stylesheet" href="styles.css" > </head> <body> <div class="container"> <form class="form-contact" method="POST"> <h2 class="form-contact-heading">Sistema de contacto</h2> <label for="inputName" class="sr-only">Nombres</label> <input type="name" name="name" id="inputName" class="form-control" placeholder="Su nombre" required> <label for="inputEmail" class="sr-only">E-Mail</label> <input type="email" name="email" id="inputEmail" class="form-control" placeholder="name@email.com" required> <label for="inputSubject" class="sr-only">Asunto</label> <input type="name" name="subject" id="inputSubject" class="form-control" placeholder="Asunto" required> <label for="inputMessage" class="sr-only">Mensaje</label> <textarea name="message" class="form-control" id="inputMessage" rows="3"></textarea> <button class="btn btn-lg btn-primary btn-block" type="submit">Enviar Formulario</button> </form> </div> </body> </html>
Espero que el código les sea de utilidad, saludos a la distancia.
Descargar Código Fuente
Guardar formulario de contacto en MySQL
Referencia
Codingciber
Absolutamente aclarador. Una maravilla.. Soy profesor y valoro muchisimo saber explicar lo maximo con lo minimo y de forma clara (y usted lo ha hecho. Enhorabuena!
solo tenfo un pequeño problema con esto
$headers = «From : » . $email;
el mail me llega todo bien excepto el correo de quien lo envia… entiendo que la orden anterior es para que aparezca De + la captura del mail que quien ha hecho la consulta
Pro en vez de que me llegue su mail me dice siempre que viene DE servidor@cloud01.dnsprimario.com
Muchas gracias y disculpe las molestias
Un saludo cordial
Gonzalo
descarge los archivos. Cuando lleno el formulario en un host local (localhost) obtengo el siguiente mensaje:
Warning: mail(): «sendmail_from» not set in php.ini or custom «From:» header missing in C:\xampp\htdocs\almacenar-formulario-de-contacto-en-mysql-database\contacto.php on line 14.
Cual es el problema aqui?
gracias por su atencion
edgar
Hola Edgar
El script tienes que probarlo en un servidor de produccion no en localhost
Saludos
hola, un programa en PHP para enviar mensajes de texto ,a un celular