En esta parte veremos como almacenar los valores ingresados por el usuario en nuestro formulario y almacenarlos en una base de datos MySQL usando PHP para ello, vamos a utilizar el mismo codigo del tutorial anterior.
1. Antes de empezar
Ya que vamos a trabajar con PHP, es necesario que tengas instalado en tu sistema un servidor local que soporte PHP.
CREATE TABLE `cf` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nombre` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`asunto` varchar(255) NOT NULL,
`mensaje` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Lo primero que vamos a hacer es crear una tabla con los campos del formulario, si haz modificado el formulario añadiendole o quitandole campos, tendras que hacer lo mismo aqui, el siguiente codigo es un SQL que podemos ejecutar desde phpMyAdmin o ingresarlo manualmente si no disponimos de esa herramienta:
Le vamos a poner ‘cf’ (contact form) a la tabla y definimos los campos, primero id que va a ser la llave primaria y con auto_increment y luego los campos del formulaio.
Ahora vamos a crear un nuevo archivo donde se van almacenar los datos de conexión a la base de datos, a este le pondremos conexion.php:
El contenido de este archivo tiene que ser asi:
<?php
$host = 'localhost';
$usuario = 'root';
$pass = 'root';
$conn = mysql_connect($host, $usuario, $pass) or die ('Error conectando a la base de datos');
$bdnombre = 'cf';
mysql_select_db($bdnombre);
Allà definiremos las credenciales de conexión a MySQL, en caso de trabajar en un servidor local casi siempre son esos (localhost, root, root).
2. index.php
Abrimos este archivo y modificamos la parte de PHP, lo primero sera incluir a conexion.php, en esta ocasion vamos a usar require, ya que es necesario que ese archivo este presente:
<?php
require("conexion.php");
if(isset($_POST['boton'])){
if($_POST['nombre'] == ''){
$error1 = '<span class="error">Ingrese su nombre</span>';
}else if($_POST['email'] == '' or !preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/",$_POST['email'])){
$error2 = '<span class="error">Ingrese un email correcto</span>';
}else if($_POST['asunto'] == ''){
$error3 = '<span class="error">Ingrese un asunto</span>';
}else if($_POST['mensaje'] == ''){
$error4 = '<span class="error">Ingrese un mensaje</span>';
}else{
$dest = "tu@email.com"; //Email de destino
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$asunto = $_POST['asunto']; //Asunto
$cuerpo = $_POST['mensaje']; //Cuerpo del mensaje
//Cabeceras del correo
$headers = "From: $nombre <$email>\r\n"; //Quien envia?
$headers .= "X-Mailer: PHP5\n";
$headers .= 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; //
if(mail($dest,$asunto,$cuerpo,$headers)){
$result = '<div class="result_ok">Email enviado correctamente <img src="https://tursos.com/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley"> </div>';
// si el envio fue exitoso reseteamos lo que el usuario escribio:
$_POST['nombre'] = '';
$_POST['email'] = '';
$_POST['asunto'] = '';
$_POST['mensaje'] = '';
}else{
$result = '<div class="result_fail">Hubo un error al enviar el mensaje <img src="https://tursos.com/wp-includes/images/smilies/icon_sad.gif" alt=":(" class="wp-smiley"> </div>';
}
}
}
?>
Ahora nos movemos hasta la linea 34 luego de la parte donde se hace la condicional si envio o no el correo, alli añadimos un salto de linea y ponemos dos lineas en una se va a guardar la consulta SQL que se va ejecutar y la otra va a ir la funcion que la ejecute:
if(mail($dest,$asunto,$cuerpo,$headers)){
$sql = "INSERT INTO `cf` (`nombre`,`email`,`asunto`,`mensaje`) VALUES ('{$_POST['nombre']}','{$_POST['email']}','{$_POST['asunto']}','{$_POST['mensaje']}')";
mysql_query($sql) or die(mysql_error());
$result = '<div class="result_ok">Email enviado correctamente :)</div>';
// si el envio fue exitoso reseteamos lo que el usuario escribio:
$_POST['nombre'] = '';
$_POST['email'] = '';
$_POST['asunto'] = '';
$_POST['mensaje'] = '';
}else{
$result = '<div class="result_fail">Hubo un error al enviar el mensaje :(</div>';
}
Y con eso ya tendrÃamos nuestro formulario funcionando, recuerda que si modificaste los campos haz de hacerlo tambien en la consulta, por ejemplo:
$sql = "INSERT INTO `cf` (`nombre`,`email`,`asunto`,`mensaje`,`campo_z`,`campo_x`,`campo_y`)
VALUES ('{$_POST['nombre']}','{$_POST['email']}','{$_POST['asunto']}','{$_POST['mensaje']}','{$_POST['campo_z']}','{$_POST['campo_x']}','{$_POST['campo_y']}')";
O en caso tengas el los valores guardados/concatenados en variables:
$sql = "INSERT INTO `cf` (`nombre`,`email`,`asunto`,`mensaje`)
VALUES ('$nombre','$email','$asunto','$mensaje','$body')";
3. Mejoras de seguridad
Como vamos a trabajar con bases de datos es recomendable asegurarnos que no nos inyecten el formulario, para eso vamos a usar mysql_real_escape_string antes de la consulta mediante un foreach, de esta forma lo hara en todas las variables POST que se hayan ingresado:
if(mail($dest,$asunto,$cuerpo,$headers)){
foreach($_POST AS $key => $value) {
$_POST[$key] = mysql_real_escape_string($value);
}
$sql = "INSERT INTO `cf` (`nombre`,`email`,`asunto`,`mensaje`) VALUES ('{$_POST['nombre']}','{$_POST['email']}','{$_POST['asunto']}','{$_POST['mensaje']}')";
mysql_query($sql) or die(mysql_error());
$result = '<div class="result_ok">Email enviado correctamente :)</div>';
// si el envio fue exitoso reseteamos lo que el usuario escribio:
$_POST['nombre'] = '';
$_POST['email'] = '';
$_POST['asunto'] = '';
$_POST['mensaje'] = '';
} else {
$result = '<div class="result_fail">Hubo un error al enviar el mensaje :(</div>';
}
4. Código Final
<?php
require('conexion.php');
if(isset($_POST['boton'])){
if($_POST['nombre'] == ''){
$error1 = '<span class="error">Ingrese su nombre</span>';
}else if($_POST['email'] == '' or !preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/",$_POST['email'])){
$error2 = '<span class="error">Ingrese un email correcto</span>';
}else if($_POST['asunto'] == ''){
$error3 = '<span class="error">Ingrese un asunto</span>';
}else if($_POST['mensaje'] == ''){
$error4 = '<span class="error">Ingrese un mensaje</span>';
}else{
$dest = "tu@email.com"; //Email de destino
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$asunto = $_POST['asunto']; //Asunto
$cuerpo = $_POST['mensaje']; //Cuerpo del mensaje
//Cabeceras del correo
$headers = "From: $nombre <$email>\r\n"; //Quien envia?
$headers .= "X-Mailer: PHP5\n";
$headers .= 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; //
if(mail($dest,$asunto,$cuerpo,$headers)){
foreach($_POST AS $key => $value) {
$_POST[$key] = mysql_real_escape_string($value);
}
$sql = "INSERT INTO `cf` (`nombre`,`email`,`asunto`,`mensaje`) VALUES ('{$_POST['nombre']}','{$_POST['email']}','{$_POST['asunto']}','{$_POST['mensaje']}')";
mysql_query($sql) or die(mysql_error());
$result = '<div class="result_ok">Email enviado correctamente <img src="https://tursos.com/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley"> </div>';
// si el envio fue exitoso reseteamos lo que el usuario escribio:
$_POST['nombre'] = '';
$_POST['email'] = '';
$_POST['asunto'] = '';
$_POST['mensaje'] = '';
}else{
$result = '<div class="result_fail">Hubo un error al enviar el mensaje <img src="https://tursos.com/wp-includes/images/smilies/icon_sad.gif" alt=":(" class="wp-smiley"> </div>';
}
}
}
?>
<html>
<head>
<title>Contacto</title>
<link rel='stylesheet' href='estilos.css'>
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js'></script>
<script src='funciones.js'></script>
</head>
<body>
<form class='contacto' method='POST' action=''>
<div><label>Tu Nombre:</label><input type='text' class='nombre' name='nombre' value='<?php echo $_POST['nombre']; ?>'><?php echo $error1 ?></div>
<div><label>Tu Email:</label><input type='text' class='email' name='email' value='<?php echo $_POST['email']; ?>'><?php echo $error2 ?></div>
<div><label>Asunto:</label><input type='text' class='asunto' name='asunto' value='<?php echo $_POST['asunto']; ?>'><?php echo $error3 ?></div>
<div><label>Mensaje:</label><textarea rows='6' class='mensaje' name='mensaje'><?php echo $_POST['mensaje']; ?></textarea><?php echo $error4 ?></div>
<div><input type='submit' value='Envia Mensaje' class='boton' name='boton'></div>
<?php echo $result; ?>
</form>
</body>
</html>
Con eso hemos terminado esta ultima parte del formulario (por ahora), recuerda que puedes descargarte el código fuente en este enlace.
Si no entendiste una parte o tienes alguna duda, házmela saber en los comentarios.
coloque pasos para hacer una pagina web esta excelente todos los tutoriales
Para no tener que escribir tanto $_Post[‘variable’] yo les recomendaria que abajo de include(«conexion.php») simplemente escriban el siguiente codigo:
import_request_variables(«GP», «»);
Y de esta manera traten las variables como si las estuvieran declarando en el mismo documento.
saludotes, chao 🙂
A partir de 5.4 esa funcion fue eliminada, remplazada por extract.
Hola Josue, quisiera saber si se podria realizar Formularios de contactos, basados solo en HTML y CSS y validarlos(No en PHP), he estado leyendo casi toda tu pagina y solo vi q validaste para PHP y no para html pues estoy trabajando en esos formatos para crear una pagina web, no se mucho sobre esta materia, espero que me puedas ayudar, te antemano se agradece.
La validación para HTML (cliente) la realiza JavaScript y PHP es necesario para realizar el envio, una solución podrÃa ser Wufoo, no necesitas PHP solo lo embebes en cualquier pagina y listo.
Buenos dias, yo copie el codigo tal cual, cree la tabla en una base de datos mia en el localhost. Tengo prendido el xaamp corriendo el apache y el mysql y sin embargo no me funciona. Cuando lo ejecuto en el navegador me tira el codigo directamente. Si lo corro en el «Coda» en la parte de preview me lo visualiza pero al enviar me aparece el codigo. Espero una respuesta si es posible, muchas gracias.
«el navegador me tira el codigo directamente» te sale el código en forma literal? explÃcame esa parte, si es lo que pienso te haz fijado si estas accediendo mediante http://localhost/..
al ponerle el localhost me tira: Object not found!
The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again.
If you think this is a server error, please contact the webmaster.
Error 404
localhost
Wed Dec 19 00:01:46 2012
Apache/2.2.14 (Unix) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l PHP/5.3.1 mod_perl/2.0.4 Perl/v5.10.1
Y si tengo prendido el xaamp y la ruta de acceso esta bien. En el preview del editor de texto «Coda 2 » me tira todo pero cuando le doy send o boton de enviar me lanza el codigo direcamente.
Pues no funciona tu servidor local, prueba http://localhost:8888, o en ultima instalate http://www.mamp.info/en/index.html que es mejor para Mac.
ahi me instale el mamp y me sigue tirando el mismo error, sinceramente no se que es lo que sucede, porque el codigo lo copie tal cual.
En el codigo cambie el require por el include porque si no no me lo muestra ni en el coda, y me tira este error: («Coda 2») Warning: include(conexion.php): failed to open stream: No such file or directory in – on line 11 Warning: include(): Failed opening ‘conexion.php’ for inclusion (include_path=’.:’) in – on line 11
Fijate la ubicacion de conexion.php, pero te funciona el MAMP? puedes entrar a http://localhost:8888 y ver la pagina de inicio?
sisis me funciona, porque entro a la pagina de inicio tipeando http://localhost:8888. conexio.php lo tengo en el desktop, donde tengo los demas archivos. Igual estuve viendo y ni siquiero un
me lo imprime correctamente. Me aparece el codigo directo
Haz definido que sea el Desktop tu directorio web en MAMP?
ahhh no ahi me fijo. Muchas gracias.:)
era eso, muchas gracias.
Buenos dÃas y felicidades a todos.
Tengo un problema, almaceno un id de session en una variable y cuando lo inserta en la base de datos me mete otro, no se que hacer ya. Lo hago asÃ:
$id_user = session_id();
if(empty($id_user))
{
session_start();
}
$id_user = session_id();
Alguien puede ayudarme?
El segundo $id_user = session_id(); no deberÃa ir dentro de la condición antes que cierre el } ?
Hola a todos. Gracias Josue. No, la segunda variable va fuera, si no me daba errores. Ya he descubierto por qué era: simplemente porque habÃa creado el campo en la BBDD demasiado pequeño (un varchar de 26) y la cadena era mayor… si es que estoy tonto!!
Muchas gracias a todos.
Jola Josue,
Muchas gracias por tus explicaciones, me puede venir muy bien para introducir datos en una base de datos que ya tengo.
y ahà está mi problemilla, porque cuando relleno el formulario me dice No database selected
Como es lógico, pues en mi caso, la tabla en la que quiero escribir (customer) está dentro de la dase de datos (dbxxxxxxxx9). Cómo lo conecto?
Un saludo!
Hola, espero me pueda ayudar; estoy usando en WampServer, copie el código tal cual lo descargue de la página y me envÃa el siguiente error:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘root’@’localhost’ (using password: YES) in C:\wamp\www\codigofuente\conexion.php on line 7.
Sin embargo no tengo contraseña, definida
Hola Maria, la password en un servidor local normalmente es root tambien, prueba con esa.
Buenas, Josue!
Cuando ejecuto en el XAMPP mi IP me sale este error:
Warning: mysql_connect(): Access denied for user ‘root’@’localhost’ (using password: YES) in C:\xampp-portable\htdocs\conexion.php on line 7
Error conectando a la base de datos
¿Alguna sugerencia?
Gracias de antemano!
Muy rápido… 🙂 Vi lo que le respondiste a MarÃa, pero donde coloco la contraseña? en «conexion.php»?
en $pass:
Hola Amigo primero que todo felicitarte por tu trabajo es excelente yo modifique tu formulario para hacer un registro de matriculas todo ok en la BD y todo pero tengo una consulta como envio todo el contenido a mi email de igual manera que a la BD ya que en tu form solo esta enviando el mensaje escrito al email nuestro yo quiero de igual maneraque me lleguen todos los datos a un email, aparte de lo que se guarda en la base de datos me podris indicar que hago para hacer esto
de antemano muchas gracias
Con mail(), mira la parte 3: https://tursos.com/tutoriales/php/como-hacer-un-formulario-de-contacto-iii-validar-y-enviar-con-php
hola buenas, como podria hacer para que un correo determinado me salga por defecto en un formulario, me explico si el formulario fuera de una pagina web de una tienda que el correo fuera o bien del vendedor del producto o del administrador por defecto, cuando el usuario estuviera interesado en un producto.
muchas gracias.
Lo defines en el atributo value, ej:
Hola Josue, me gustarÃa saber como poner una condicional ya que es para una newsletter… necesito que sólo envie el correo cuando el checkbox este encendido… No sé donde fallo:
<?php
require("conexion.php");
if(isset($_POST['boton'])){
if($_POST['email'] == '' or !preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/",$_POST['email'])){
$error2 = 'Ingrese un email correcto’;
}else if(isset($_POST[‘validar’]) && $_POST[‘validar’] == ‘1’)
echo ‘Has aceptado correctamente las condiciones de uso.’;
else
echo ‘Debes aceptar las condiciones de uso.’;
}else{
$dest = «info@camisetas-piopio.com»; //Email de destino
$email = $_POST[‘email’];
$cuerpo = $_POST[‘mensaje’];
//Cabeceras del correo
$headers = «From: $email\r\n»; //Quien envia?
$headers .= «X-Mailer: PHP5\n»;
$headers .= ‘MIME-Version: 1.0’ . «\n»;
$headers .= ‘Content-type: text/html; charset=iso-8859-1’ . «\r\n»; //
Muuuuchas gracias.
https://tursos.com/tutoriales/javascript/como-validar-checkboxes-radiobuttons-y-selects-con-jquery
funciona con el wamp?
No habria porque no.
pense que es el wamp porque me pone codigo en todas las casillas, la lleno con nombre, email y texto y le doy a enviar en boton pero se envia la informacion se queda en el formulario.
perdon que puse se envia, es lo contrario no se envia la informacion se queda en el formulario
Buenas tardes tu codigo esta excelente, pero al tratar de correrlo con el sistema operativo windows genera varios errores:
Notice: Undefined variable: Nombre in C:\wamp\www\lenguaje_de_programacion_II\examen_formulario_con_foto_y_db\index.php on line 53
Notice: Undefined variable: error1 in C:\wamp\www\lenguaje_de_programacion_II\examen_formulario_con_foto_y_db\index.php on line 53
Notice: Undefined index: email in C:\wamp\www\lenguaje_de_programacion_II\examen_formulario_con_foto_y_db\index.php on line 54
Notice: Undefined index: error2 in C:\wamp\www\lenguaje_de_programacion_II\examen_formulario_con_foto_y_db\index.php on line 54
y asi con todas las variables que continuan despues de esa linea
Si me puedes ayudar a corregir te lo agradezco, estoy usando WampServer Version 2.2, gracias.
No son errores, son solo notificaciones, algunas instalaciones de PHP reportan eso cuando no se han declarado variables, pon el siguiente codigo:
error_reporting(0);
Buenas tardes, para confirmar, el codigo que me dices es:
error_reporting(0);
o solo: error_reporting(0);
gracias
Cualquiera pero ponlo dentro de PHP <?php
Diculpa ya lo coloque en el codigo y nada, si gustas te puedo encviar un print screen para que lo veas
Pon tu código.
Contacto
error_reporting(0);
<?php
require('conexion.php');
if(isset($_POST['boton'])){
if($_POST['nombre'] == ''){
$error1 = "Ingrese su nombre»;
}else if($_POST[‘email’] == » or !preg_match(‘/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/’,$_POST[‘email’])){
$error2 = «Ingrese un email correcto»;
}else if($_POST[‘asunto’] == »){
$error3 = «Ingrese un asunto»;
}else if($_POST[‘mensaje’] == »){
$error4 = «Ingrese un mensaje»;
}else{
$dest = ‘tu@email.com’; //Email de destino
$nombre = $_POST[‘nombre’];
$email = $_POST[‘email’];
$asunto = $_POST[‘asunto’]; //Asunto
$cuerpo = $_POST[‘mensaje’]; //Cuerpo del mensaje
//Cabeceras del correo
$headers = ‘From: $nombre $email\r\n’; //Quien envia?
$headers .= ‘X-Mailer: PHP5\n’;
$headers .= ‘MIME-Version: 1.0’ . ‘\n’;
$headers .= ‘Content-type: text/html; charset=iso-8859-1’ . ‘\r\n’; //
if(mail($dest,$asunto,$cuerpo,$headers)){
$sql = «INSERT INTO `cf` (`nombre`,`email`,`asunto`,`mensaje`) VALUES (‘{$_POST[‘nombre’]}’,'{$_POST[‘email’]}’,'{$_POST[‘asunto’]}’,'{$_POST[‘mensaje’]}’)»;
mysql_query($sql) or die(mysql_error());
$result = «Email enviado correctamente :)»;
// si el envio fue exitoso reseteamos lo que el usuario escribio:
$_POST[‘nombre’] = »;
$_POST[‘email’] = »;
$_POST[‘asunto’] = »;
$_POST[‘mensaje’] = »;
}else{
$result = «Hubo un error al enviar el mensaje :(«;
}
}
}
?>
Tu Nombre:<input type='text' class='nombre' name='nombre' value='’>
Tu Email:<input type='text' class='email' name='email' value='’>
Asunto:<input type='text' class='asunto' name='asunto' value='’>
Mensaje:
El error_reporting tienes que ponerlo dentro del <?php, las etiquetas <code> son solo para que aparezca como codigo aqui en los comentarios, tu codigo deberia quedar:
Si ahora si entendà lo que me decÃas, pasado e bruto (yo), es que el error_reporting va dentro del php y que la etiqueta code no va en ninguna parte, pasao e bruto (yo), gracias, ahora si se muestra perfectamente como en mi debian. Como dicen el que no sabe es como el que no ve y el que no pregunta nunca aprende. Ahora me queda resolver el porque no envÃa el mensaje. Gracias
Hola,
Gracias por compartir un tan buen formulario de contacto, Quisiera agregar la fecha y hora ademas de la IP del visitante. en el formulario pero me da resultado en la consulta Fecha: 0000-00-00 00:00:00, la IP ni me la graba. Lo tengo puesto asÃ:
}else{
$dest = «mi-email»; //Email de destino
$nombre = $_POST[‘nombre’];
$email = $_POST[‘email’];
$asunto = $_POST[‘asunto’]; //Asunto
$cuerpo = $_POST[‘mensaje’]; //Cuerpo del mensaje
$date = $_POST[‘date’];
$ip = $_POST[‘ip’];
……
if(mail($dest,$asunto,$cuerpo,$headers)){
if(mail($dest,$asunto,$cuerpo,$headers)){
foreach($_POST AS $key => $value) {
$_POST[$key] = mysql_real_escape_string($value);
}
$sql = «INSERT INTO `cf` (`nombre`,`email`,`asunto`,`mensaje`,`date`,`ip`) VALUES (‘{$_POST[‘nombre’]}’,'{$_POST[‘email’]}’,'{$_POST[‘asunto’]}’,'{$_POST[‘mensaje’]}’,'{$_POST[‘date’]}’,'{$_POST[‘ip’]}’)»;
…..
Muchisimas Gracias
$date = $_POST[‘date’];
$ip = $_POST[‘ip’];
¿date e ip son valores que el usuario proporciona en el formulario?
Cuando este completo plasmo el formulario para ampliar el tuyo
No Josue, son capturados por el servidor, pero con tantos cambios que he creado lo tengo todo para empezar de 0, no estoy muy habituado a usar bases de datos
Estimado
Agregue a mi formulario una lista desplegable con varias opciones y me gustarÃa que al seleccionar una u otra opción apareciera un cuadro de texto correspondiente a la opción señalada. ¿Como me recomiendas hacerlo?.
Saludos.-
Con jQuery http://api.jquery.com/change/
Buenas, hice los cambios inclui el codigo y los mensajes desaparecieron, el formulario funciona pero no envia correos utilizando windows xp sp3 con wamserver, desactive el firewall, el antivirus, instale iis con los complementos smtp pero no envia los mensajes o por lo menos no sale de mensaje no enviado
Es muy bueno tu código para mail.
Necesito conectar una base de datos con dos tablas de MySQL a un formulario WEB que código fuente me recomendarÃas. Es para un foro de propuestas.
Esta es la estructura de la tabla y las estoy desarrollando con PHP5.
CREATE TABLE `propuestas`
(
id_propuesta int(11) NOT NULL auto_increment,
id_usuario int(11) default NULL,
Seccion varchar(255) default NULL,
Sugerencia varchar(255) default NULL,
fecha datetime default NULL,
tema varchar(50) default NULL,
PRIMARY KEY (`id_propuesta`)
) ENGINE=MyISAM AUTO_INCREMENT=129 DEFAULT CHARSET=utf8
—————————————————————
CREATE TABLE `usuarios` (
`id_usuario` int(11) NOT NULL auto_increment,
`Nombre` varchar(255) default NULL,
`Usuario` varchar(255) default NULL,
`Password` varchar(255) default NULL,
`Mail` varchar(255) default NULL,
`ubicacion` varchar(255) default NULL,
PRIMARY KEY (`id_usuario`)
) ENGINE=MyISAM AUTO_INCREMENT=205 DEFAULT CHARSET=utf8
En PROPUESTAS se almacenan las propuestas de la gente respecto a temas de educacion, salud, gobierno.
Y en USUARIOS valido la sesión de cada usuario.
Lo subi a mi host, y no se que pasa cuando doy enviar me redireciona y dice «No database selected», que tendria que hacer?
no cache niuna de mysql :/ ayudame porfa
hola muy buenos tus codigos excelente el formulario.
mira tengo el siguiente problema me sale este mensaje de error Warning: mail() [function.mail]: Failed to connect to mailserver at «localhost» port 25, verify your «SMTP» and «smtp_port» setting in php.ini or use ini_set() in C:ServidorWEBindex2.php on line 25 no se si puedas ayudarme
En localhost no te va a funcionar.
me da error: (el codigo que use es el de la descarga de todo) osea, los datos se guardan en la base de datos, pero muestra esos errores
Estimado, resolviste esto?
un 10, mil gracias excelente la explicación voy a estar pendiente de tu blog =)
que tal amigo, una pregunta, este archivo descargble…es el mismo del de los 2 temas anteriores?
Hola Josue,
Ante todo, gracias por este exelente tutorial; subi el ejemplo a mi servidor y todo funciona OK.
Mi
consulta: tengo un formulario con 10 campos de los cuales solo 5 seran
obligatorios; entonces no tengo idea de como declarar los campos no
obligatorios en la parte php correspondiente.Gracias por tu ayuda.
Simplemente obvialos en la cadena de condicionales (if…else).
Gracias Josue,
Ahora tengo un pequeño problema, al enviar el formulario el aviso en verde de mail enviado correctamente no desaparece y si intento refrescar la pagina me sale el mensaje de firefox que todos los datos se volveran a enviar (aunque todos los campos estan vacios) y aun asi si reenvio; este mensaje en verde no desaparece. Espero tu respuesta, saludos.
Hola me sale esto :/
You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near ‘comuna`)
VALUES (‘Nicolás Arce’,’Croquis web’,’Nicolás Arce’,’contacto@croquis’
at line 1
Cual es tu código PHP? eso sale cuando tienes un error de comillas.
Hola Josue, implemente tus codigos a mi formulario y todo esta bien;
pero necesito ayuda para lo siguiente: tengo dos campos de telefonos
(fijo y celular) y deseo hacer que solo uno de ellos sea obligatorio y
ademas que estos campos solo acepten numeros. Yo he logrado hacer la
eleccion de uno de los campos, pero cuando quiero que solo acepte
numeros alli reside mi problema, adjunto las modificaciones de mi
archivo JS.
$(document).ready(function() {
var emailreg = /^([w-.]+@([w-]+.)+[w-]{2,4})?$/;
var telreg = /^([0-9+s+-])+$/;
$(«.boton»).click(function(){
$(«.error»).fadeOut().remove();
if ($(«.nombres»).val() == «» || /^s+$/.test($(«.nombres»).val())) {
$(«.nombres»).focus();
$(«.a»).after(‘(*) Nombres obligatorio’);
return false;
}
if ($(«.email»).val() == «» || !emailreg.test($(«.email»).val())) {
$(«.email»).focus();
$(«.b»).after(‘(*) Ingrese un email correcto’);
return false;
}
if ($(«.tel_fijo»).val() == «» && $(«.tel_celular»).val() ==»») {
$(«.tel_fijo»).focus();
$(«.c»).after(‘(*) Al menos un telefono es obligatorio’);
return false;
}
if ($(«.mensaje»).val() == «») {
$(«.mensaje»).focus();
$(«.d»).after(‘(*) Falta su mensaje’);
return false;
}
});
$(«.nombres, .mensaje»).bind(‘blur keyup’, function(){
if ($(this).val() != «») {
$(‘.error’).fadeOut();
return false;
}
});
$(«.tel_fijo»).bind(‘blur keyup’, function(){
if ($(«.tel_fijo»).val() != «» && telreg.test($(«.tel_fijo»).val())) {
$(‘.error’).fadeOut();
return false;
}
});
$(«.tel_celular»).bind(‘blur keyup’, function(){
if ($(«.tel_celular»).val() != «» && telreg.test($(«.tel_celular»).val())) {
$(‘.error’).fadeOut();
return false;
}
});
$(«.email»).bind(‘blur keyup’, function(){
if ($(«.email»).val() != «» && emailreg.test($(«.email»).val())) {
$(‘.error’).fadeOut();
return false;
}
});
});
De ante mano gracias por su ayuda.
oye ya tngo el formulario y los datos guardados en mysql pero lo que me gustaria saver es como puedo lograr hacer el login comparando los datos que introduce el usuario(nombre de usuario y contraseña) con los que ya tengo guardados en la base d datos gracias de antemano
Este tutorial es sobre como hacer un formulario de contacto.
Josue:
El formulario completo me parece que no funciona para localhost?
Si fuera asi por que? TendrÃa que probarlo en un servidor que no fuera local?
Gracias por tu pronta respuesta,
Javier S.
No funciona porque desde localhost no puedes enviar emails, necesita estar en un servidor real.
Hola buenas, antes de nada agradecer este tutorial es muy bueno y muy bien explicado, estoy usando el formulario para añadir a la base de datos para enviar newsletters, me gustarÃa mucho que me dijeras como hacer un botón para darse de baja y que borre el email automáticamente de la base de datos.
También decir que cuando rellenan los datos del formulario satisfactoriamente me llega el correo sin ninguna información pero en la bd esta correctamente.
Crea un archivo delete.php, pero para borrar una fila especifica necesitas el id, este lo vamos a obtener por GET, cosa que al final el link seria asà delete.php?id=3, el código que contiene delete.php es: https://gist.github.com/josueochoa/6073274, obviamente tendrÃas que cambiar varias cosas en el archivo, como la ubicación de conexion.php y los nombres de tus campos.
Solo poniendo eso con una casilla de formulario, ya se dará de baja y se borraran todos los campos que contienen ese id?
Cuando recibo el email me llega con el contenido en blanco, como lo puedo arreglar, para que se vea la información que han rellenado en el formulario, en teorÃa esta echo asà ya no?
En la base de datos todos las palabras que contienen acentos se ven extraños y aveces no se pueden leer, como puedo arreglar esto? piensa que lo esta utilizando en catalán y castellano, y el catalán tiene acentos cerrados ««».
Hay alguna manera, para que no se dupliquen los datos? es decir los correos electrónicos. Que no se puedan dar de alta si ya lo han echo una vez.
Buen dÃa necesito que puedas ayudar en algo…como hacer en un formulario para que genere un numero para cada persona que se inscriba. muchas gracias y muy buenos los ejemplos.
Puedes utilizar el campo id que se genera cada vez que alguien envia un mensaje, si lo que quieres es hacer algo como un registro te recomiendo veas este tutorial: https://tursos.com/como-hacer-un-sistema-de-registro-de-usuarios-en-php-mysql/
Buenas, como hacer para que el formulario se le pueda subir una imagen, pero que la imagen se guarde no en la base de datos si no en una carpeta del ftp ? gracias
Me da este error: Warning: mail() [function.mail]: Failed to connect to mailserver at «localhost» port 25, verify your «SMTP» and «smtp_port» setting in php.ini or use ini_set() in C:wampwwwcfdb_codigofuenteindex.php on line 25
No te va a funcionar en localhost.
He hecho todo y me sigue diciendo que Ingrese un Email Correcto! Como resuelvo eso Gracias.
Estimado Josué,
A tu formulario creo que le hace falta un poco de código extra, para la auto respuesta. Te dejo este trozo de código y ahà me dices si está bien o no y dónde insertarlo (creo que antes del else por si hubo errores):
//Enviando auto respuesta.
$pfw_header = «From: empresa@gmail.comn»
. «Reply-To: empresa@gmail.comn«;
$pfw_subject = «Mensaje recibido exitosamente»;
$pfw_email_to = «$email»;
$pfw_message = «Muchas Gracias $Nombre, por su Solicitud:
$Texton»
. «Su mensaje ha sido recibido satisfactoriamente. n»
. «Nos pondremos en contanto contigo lo antes posible en su e-mail: $email n»
. » n»
. » n»
. «————————————————————————–n»
. «Favor de NO responder este E-mail ya que es generado Automaticamente.n»
. «Atte. Empresa.comn»
. «www.empresa.com»;
@mail($pfw_email_to, $pfw_subject ,$pfw_message ,$pfw_header ) ;
//Fin de Auto responder
Saludos y excelente tu sitio
Saludos estaba usando anteriormente un formulario parecido a este y quisiera implementar la validacion completamente que usas en este. No he podido hacerlo ya que mi formulario solo estaba en principio archivando los datos en un archivo de texto. Y me tranque en la informacion que imprime tu formulario en caso de que resulte positivo el envio del mail daria «result ok!» en mi caso seria en caso de que se haya abierto el archivo de texto llamado «datos txt» y se haya escrito los datos correctamente daria «result ok» te adjunto mi codigo de apertura del archivo de texto, grabado de datos y cierre del mismo.
hola, me sale este error , pero los datos se envÃan de forma correcta
Warning: mail() [function.mail]: Filename cannot be empty in /home/u848700000/public_html/forcotiza/index.php on line 25
amigo ¿como puedo modificar la informacion una ves insertada en la base de datos desde otro formulario?
Hola, estoy interesasdo en ofrecerte servicios de agenciamiento, esto quiere decir en pasarte 10 clientes gratis y que el 11vo cliente pueda yo tener una comision en base a ello, si estas interesado escribirme a mi correo hermeneutico25789@gmail.com. Saludos