Добавление в БД через контактную форму

213
21 марта 2018, 02:58

Как можно добавлять в базу данных контакты полученные через заполнение клиентами контактной формы?

У меня есть купленный шаблон, на котором клиент заполняет контактную форму после чего мне приходят заполненные данные на почту. Но мне бы хотелось, чтобы они автоматически добавлялись в базу данных.

Как это можно сделать?

<form action="./includes/contact/contact-process.php" method="post" class="contact-form wpcf7-form">

Затем проверяется:

$error = false;
$fields = array( 'name', 'email', 'subject',  'phone', 'message' );
foreach ( $fields as $field ) {
    if ( empty( $_POST[$field] ) || trim( $_POST[$field] ) == '' )
        $error = true;
}
if ( ! $error ) {
    $name = stripslashes( $_POST['name'] );
    $email = trim( $_POST['email'] );
    $subject = stripslashes( $_POST['subject'] );
$message = stripslashes( $_POST['message'] );
$phone =$_POST['phone'];
$msge .= "Nombre del remitente:".$name."\r\n";
$msge .= "Correo:".$email."\r\n";
$msge .= "Teléfono:".$phone."\r\n";
$msge .= "Mensaje:".$message."\r\n";
    $mail = mail( WEBMASTER_EMAIL, $subject, $msge,
         "From: " . $name . " <" . $email . ">\r\n"
        ."Reply-To: " . $email . "\r\n"
        ."X-Mailer: PHP/" . phpversion()
        );
    if ( $mail ) {
        echo "Success";
    } else {
        echo "Error";
    }
}
?>  

И еще есть вот такая функция:

  ajaxContactForm: function() {
            if ( $().validate ) {        
                $('.contact-form').each(function() {
                    $(this).validate({
                        submitHandler: function( form ) {
                            var
                            $form = $(form),
                            str = $form.serialize();
                            $.ajax({
                                type: "POST",
                                url:  $form.attr('action'),
                                data: str,
                                beforeSend: function () {
                                    $form.find('.bwp-alert').remove();
                                },
                                success: function( msg ) {
                                    var result, cls;
                                    if ( msg == 'Success' ) {
                                        result = 'Su mensaje ha sido enviado';
                                        cls = 'success';
                                    } else {
                                        result = 'Su mensaje NO ha sido enviado';
                                        cls = 'error';
                                    }
                                    $form.prepend(
                                        $('<div />', {
                                            'class': 'bwp-alert ' + cls,
                                            'text' : result
                                        }).append(
                                            $('<a class="remove" href="#"><i class="fa fa-close"></i></a>')
                                        )
                                    );
                                    $form.find(':input').not('.submit').val('');
                                }
                            });
                        }
                    });
                });
            }
            $(document).on('click', '.bwp-alert .remove', function(e) {
                $(this).parent().slideUp();
                e.preventDefault();
            })

Плюс валидация в отдельном документе:

/*! jQuery Validation Plugin - v1.11.1 - 3/22/2013\n* https://github.com/jzaefferer/jquery-validation
* Copyright (c) 2013 Jörn Zaefferer; Licensed MIT */(function(t){t.extend(t.fn,{validate:function(e){if(!this.length)return e&&e.debug&&window.console&&console.warn("Nothing selected, can't validate, returning nothing."),void 0;var i=t.data(this[0],"validator");return i?i:(this.attr("novalidate","novalidate"),i=new t.validator(e,this[0]),t.data(this[0],"validator",i),i.settings.onsubmit&&(this.validateDelegate(":submit","click",function(e){i.settings.submitHandler&&(i.submitButton=e.target),t(e.target).hasClass("cancel")&&(i.cancelSubmit=!0),void 0!==t(e.target).attr("formnovalidate")&&(i.cancelSubmit=!0)}),this.submit(function(e){function s(){var s;return i.settings.submitHandler?(i.submitButton&&(s=t("<input type='hidden'/>").attr("name",i.submitButton.name).val(t(i.submitButton).val()).appendTo(i.currentForm)),i.settings.submitHandler.call(i,i.currentForm,e),i.subm.....
Answer 1

В общем сделала вот так. правла теперь хотя все и работает но выводится текст об ошибке при введении данных

 <?php
define( "WEBMASTER_EMAIL", 'info@.com' );
$error = false;
$fields = array( 'name', 'email', 'subject',  'phone', 'message' );
foreach ( $fields as $field ) {
    if ( empty( $_POST[$field] ) || trim( $_POST[$field] ) == '' )
        $error = true;
}
if ( ! $error ) 
{
    $name = stripslashes( $_POST['name'] );
    $email = trim( $_POST['email'] );
    $subject = stripslashes( $_POST['subject'] );
    $message = stripslashes( $_POST['message'] );
    $phone =$_POST['phone'];
$msge .= "Nombre del remitente:".$name."\r\n";
$msge .= "Correo:".$email."\r\n";
$msge .= "Teléfono:".$phone."\r\n";
$msge .= "Mensaje:".$message."\r\n";
    $mail = mail( WEBMASTER_EMAIL, $subject, $msge,
         "From: " . $name . " <" . $email . ">\r\n"
        ."Reply-To: " . $email . "\r\n"
        ."X-Mailer: PHP/" . phpversion()
        );
    if ( $mail ) 
{
        echo "Success";

    $host='localhost';
    $db='';
    $user='';
    $pass='';
    $charset='utf8';

   // Create connection
$conn = new mysqli($host, $user, $pass, $db);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
   $sql="insert into bd_clientes( name, email, phone, subject, message) values ('$name', '$email','$phone','$subject', '$message')";
if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();

    }
    else {
        echo "Error";
    }
}

?>
Answer 2

в бд всем полям разрешите null и не забудьте их создать

<?php 
define( "WEBMASTER_EMAIL", 'info@.com' ); 
 
$error = false; 
$fields = array( 'name', 'email', 'subject',  'phone', 'message' ); 
 
foreach ( $fields as $field ) { 
    if ( empty( $_POST[$field] ) || trim( $_POST[$field] ) == '' ) 
        $error = true; 
} 
 
if ( ! $error )  
{ 
    $name = stripslashes( $_POST['name'] ); 
    $email = trim( $_POST['email'] ); 
    $subject = stripslashes( $_POST['subject'] ); 
    $message = stripslashes( $_POST['message'] ); 
    $phone =$_POST['phone']; 
 
$msge .= "Nombre del remitente:".$name."\r\n"; 
$msge .= "Correo:".$email."\r\n"; 
$msge .= "Teléfono:".$phone."\r\n"; 
$msge .= "Mensaje:".$message."\r\n"; 
 
    $mail = mail( WEBMASTER_EMAIL, $subject, $msge, 
         "From: " . $name . " <" . $email . ">\r\n" 
        ."Reply-To: " . $email . "\r\n" 
 
        ."X-Mailer: PHP/" . phpversion() 
 
        ); 
 
    if ( $mail )  
{ 
        
 
 
    $host = '127.0.0.1'; 
    $db   = 'test'; 
    $user = 'root'; 
    $pass = ''; 
    $charset = 'utf8'; 
 
    $dsn = "mysql:host=$host;dbname=$db;charset=$charset"; 
    $opt = [ 
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION, 
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 
        PDO::ATTR_EMULATE_PREPARES   => false, 
    ]; 
    $pdo = new PDO($dsn, $user, $pass, $opt); 
    $sql = "INSERT INTO users SET :name,:phone, :email, :subject, :message"; 
$stm = $pdo->prepare($sql); 
$stm->bindParam(':name', $_POST["name"]); 
$stm->bindParam(':phone', $_POST["phone"]); 
$stm->bindParam(':email', $_POST["email"]); 
$stm->bindParam(':subject', $_POST["subject"]); 
$stm->bindParam(':message', $_POST["message"]); 
$stm->execute(); 
if($stm){ 
echo "Success"; 
} 
else { 
        echo "в бд запрос не прошел"; 
    } 
  } 
}

READ ALSO
Ошибка в коде &ldquo;aggregate function&rdquo;

Ошибка в коде “aggregate function”

Доброго времени сутокИзучаю MySQL, но столкнулся с проблемой, которую никак не могу решить

178
Как правильно составить запрос к MySQL

Как правильно составить запрос к MySQL

Есть две таблицы: base_bill и base_poz В base_bill поля:

230