Lenguaje PHP

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.

 

Sistema de contacto y guarda base de datos
Sistema de contacto y guarda base de datos

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>
Almacenar formulario de contacto en MySQL Database
Almacenar formulario de contacto en MySQL Database

Espero que el código les sea de utilidad, saludos a la distancia.

Descargar Código Fuente

Referencia

Codingciber

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

5 comentarios

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

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba