За последние 24 часа нас посетили 22905 программистов и 1712 роботов. Сейчас ищут 1767 программистов ...

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

Тема в разделе "PHP и базы данных", создана пользователем Anna_xxx, 18 мар 2018.

Метки:
  1. Anna_xxx

    Anna_xxx Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    40
    Симпатии:
    3
    Добрый день. Делаю свой первый сайт и есть небольшая недоработка которую пока что не могу решить сама.

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

    но так как я изменила код то теперь вместо

    PHP:
    1.   if( msg =='Success'){
    2.                                         result ='Su mensaje ha sido enviado';
    3.                                         cls ='success';
    4.                                     }
    выходит сообщение об ошибке:

    PHP:
    1. else
    2. {
    3.                                         result ='Su mensaje NO ha sido enviado';
    4.                                         cls ='error';
    5.                                     }

    То есть пользователю показывают ошибку при том что все его данные обрабатываются верно.
    почему такое может происходить?

    При заполеннии конактной формы данные обрабатываются следующим образом

    PHP:
    1. <?php
    2. define( "WEBMASTER_EMAIL", 'info@.com' );
    3.  
    4. $error = false;
    5. $fields = array( 'name', 'email', 'subject',  'phone', 'message' );
    6.  
    7. foreach ( $fields as $field ) {
    8.     if ( empty( $_POST[$field] ) || trim( $_POST[$field] ) == '' )
    9.         $error = true;
    10. }
    11.  
    12. if ( ! $error )
    13. {
    14.     $name = stripslashes( $_POST['name'] );
    15.     $email = trim( $_POST['email'] );
    16.     $subject = stripslashes( $_POST['subject'] );
    17.     $message = stripslashes( $_POST['message'] );
    18.     $phone =$_POST['phone'];
    19.  
    20.  
    21. $msge .= "Nombre del remitente:".$name."\r\n";
    22. $msge .= "Correo:".$email."\r\n";
    23. $msge .= "Teléfono:".$phone."\r\n";
    24. $msge .= "Mensaje:".$message."\r\n";
    25.  
    26.  
    27.     $mail = mail( WEBMASTER_EMAIL, $subject, $msge,
    28.         "From: " . $name . " <" . $email . ">\r\n"
    29.         ."Reply-To: " . $email . "\r\n"
    30.  
    31.         ."X-Mailer: PHP/" . phpversion()
    32.  
    33.         );
    34.      
    35.     if ( $mail )
    36. {
    37.         echo "Success";
    38.        

    и здесь я сама добавила:


    PHP:
    1. $host='localhost';
    2.     $db='';
    3.     $user='';
    4.     $pass='';
    5.     $charset='utf8';
    6.  
    7.  
    8.    // Create connection
    9. $conn = new mysqli($host, $user, $pass, $db);
    10. // Check connection
    11. if ($conn->connect_error) {
    12.     die("Connection failed: " . $conn->connect_error);
    13. }
    14.  
    15.    $sql="insert into bd_clientes( name, email, phone, subject, message) values ('$name', '$email','$phone','$subject', '$message')";
    16.  
    17. if ($conn->query($sql) === TRUE) {
    18.     echo "New record created successfully";
    19. } else {
    20.     echo "Error: " . $sql . "<br>" . $conn->error;
    21. }
    22.  
    23. $conn->close();
    24.  
    25.  
    26.  
    27.     }
    28.  
    29.     else {
    30.         echo "Error";
    31.     }
    32. }
    33.  
    34.  
    35. ?>

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


    Код (Javascript):
    1. ajaxContactForm:function(){
    2.             if($().validate ){    
    3.                 $('.contact-form').each(function(){
    4.                     $(this).validate({
    5.                         submitHandler:function( form ){
    6.                             var
    7.                             $form =$(form),
    8.                             str =$form.serialize();
    9.  
    10.                             $.ajax({
    11.                                 type:"POST",
    12.                                 url:  $form.attr('action'),
    13.                                 data: str,
    14.                                 beforeSend:function(){
    15.                                     $form.find('.bwp-alert').remove();
    16.                                 },
    17.                                 success:function( msg ){
    18.                                     var result, cls;
    19.  
    20.                                     if( msg =='Success'){
    21.                                         result ='Su mensaje ha sido enviado';
    22.                                         cls ='success';
    23.                                     }else{
    24.                                         result ='Su mensaje NO ha sido enviado';
    25.                                         cls ='error';
    26.                                     }
    27.  
    28.                                     $form.prepend(
    29.                                         $('<div />',{
    30.                                             'class':'bwp-alert '+ cls,
    31.                                             'text': result
    32.                                         }).append(
    33.                                             $('<a class="remove" href="#"><i class="fa fa-close"></i></a>')
    34.                                         )
    35.                                     );
    36.  
    37.                                     $form.find(':input').not('.submit').val('');
    38.                                 }
    39.                             });
    40.                         }
    41.                     });
    42.                 });
    43.             }
    44.             $(document).on('click','.bwp-alert .remove',function(e){
    45.                 $(this).parent().slideUp();
    46.  
    47.                 e.preventDefault();
    48.             })
    49.         },
    плюс валидация в отдельном документе:
    Код (Text):
    1.  
    2. /*! jQuery Validation Plugin - v1.11.1 - 3/22/2013\n* https://github.com/jzaefferer/jquery-validation
    3. * 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.....
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    видимо в msg попадет не "Success", a что-то другое. Например "Success E_NOTICE: Undefined variablablabla..."
     
  3. Anna_xxx

    Anna_xxx Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    40
    Симпатии:
    3
    К сожалению не поняла ответа.

    все данные ведь приходят на почту...
    Как можно исправить код?

    Код (Text):
    1. $msge .= "Nombre del remitente:".$name."\r\n";
    2. $msge .= "Correo:".$email."\r\n";
    3. $msge .= "Teléfono:".$phone."\r\n";
    4. $msge .= "Mensaje:".$message."\r\n";
    5.  
    6.     $mail = mail( WEBMASTER_EMAIL, $subject, $msge,
    7.          "From: " . $name . " <" . $email . ">\r\n"
    8.         ."Reply-To: " . $email . "\r\n"
    9.  
    10.         ."X-Mailer: PHP/" . phpversion()
    11.  
    12.         );
    13.        
    14.     if ( $mail )
    15. {
    16.         echo "Success";
    17.        
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    эхо выводит в стандартный поток вывода
    а ещё туда попадают сообщения об ошибках
    ну и может ещё что-то до или после
    т.е. равенство =="Success" может не выполняться при этом.
     
  5. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    А у тебя парень есть?
     
  6. Anna_xxx

    Anna_xxx Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    40
    Симпатии:
    3
    Дим помог бы лучше
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нет. пока нет у меня парня. а чего это ты вдруг? тоже хочешь в жаркие модераторы?
     
  8. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    Мне нужен весь нужный код с базой, что бы я его к себе скопировал и у меня работал этот сайт, тогда быстро ошибку найду
     
  9. Anna_xxx

    Anna_xxx Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    40
    Симпатии:
    3
    а у вас тут модераторами только через постель что ли становяться?
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    и не через одну
     
  11. Anna_xxx

    Anna_xxx Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    40
    Симпатии:
    3
    вот так всегда! ((
     
  12. Anna_xxx

    Anna_xxx Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    40
    Симпатии:
    3
    а как их отправить?
     
  13. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
  14. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Женщины по определению не могут стать модераторами этого форума, т.к. не способны соответствовать главному условию. Такие не толерантные дела )
     
  15. Anna_xxx

    Anna_xxx Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    40
    Симпатии:
    3
    @Dimon2x
    --- Добавлено ---
    не ну под такое попадаю теоретически
    .Хочу от них детей
    @romach @Dimon2x @igordata народ ну помогите с кодом плиз
     

    Вложения:

  16. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @Anna_xxx завтра посмотрю и базу давай, что бы я всё скопировал и у меня всё заработало
     
  17. Anna_xxx

    Anna_xxx Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    40
    Симпатии:
    3
    @Dimon2x бд я тоже дала, просто она пустая, но все работает. Единственное что сейчас не получается это показывать что сообщение отправлено, вместо этого говорит что нет, хотя все приходит и добавляется
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну блин, детка, мало кто будет качать кучу файлов, вчитываться и переделывать всё это :D
    лучше задавай вопросы
     
  19. Anna_xxx

    Anna_xxx Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    40
    Симпатии:
    3
    не ну а как, по другому не загружались. да там надо только 1 файл посмотреть. Тебе такой код раз плюнуть исправить
     
  20. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    Anna_xxx нравится это.
  21. Anna_xxx

    Anna_xxx Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    40
    Симпатии:
    3
  22. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Ну если вся беда только в сообщении можно поступить как поступают настоящие про пихапи программисты. Скопировать код с if и вставить его в else:)
    --- Добавлено ---
    А ошибка вот она и плюс возможно выше c die если error. Ты уже что то вывела на печать кроме success не делай echo
    PHP:
    1. if ($conn->query($sql) === TRUE) {
    2.     echo "New record created successfully";
    3. } else {
    4.     echo "Error: " . $sql . "<br>" . $conn->error;
    5. }
     
  23. Anna_xxx

    Anna_xxx Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    40
    Симпатии:
    3

    я уже поменяла там, новые доки в файле



    PHP:
    1.  <?php
    2. define( "WEBMASTER_EMAIL", 'info@.com' );
    3.  
    4. $error = false;
    5. $fields = array( 'name', 'email',  'phone', 'subject', 'message' );
    6.  
    7. foreach ( $fields as $field ) {
    8.     if ( empty( $_POST[$field] ) || trim( $_POST[$field] ) == '' )
    9.         $error = true;
    10. }
    11.  
    12. if ( ! $error )
    13. {
    14.     $name = stripslashes( $_POST['name'] );
    15.     $email = trim( $_POST['email'] );
    16.     $subject = stripslashes( $_POST['subject'] );
    17.     $message = stripslashes( $_POST['message'] );
    18.     $phone =$_POST['phone'];
    19.  
    20. $msge2.= "Nombre del remitente:".$name."\r\n";
    21. $msge2.= "Correo:".$email."\r\n";
    22. $msge2.= "Teléfono:".$phone."\r\n";
    23. $msge2.= "Mensaje:".$message."\r\n";
    24.  
    25.     $mail = mail( WEBMASTER_EMAIL, $subject, $msge2,
    26.          "From: " . $name . " <" . $email . ">\r\n"
    27.         ."Reply-To: " . $email . "\r\n"
    28.  
    29.         ."X-Mailer: PHP/" . phpversion()
    30.  
    31.         );
    32.  
    33.     if ( $mail )
    34. {
    35.      
    36.  
    37.  
    38.                     $host='localhost';
    39.                     $db='';
    40.                     $user='';
    41.                     $pass='';
    42.                     $charset='utf8';
    43.  
    44.     $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
    45.     $opt = [
    46.         PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    47.         PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    48.         PDO::ATTR_EMULATE_PREPARES   => false,
    49.     ];
    50.     $pdo = new PDO($dsn, $user, $pass, $opt);
    51.   //$sql = "INSERT INTO bd_clientes SET :name, :email, :phone, :subject, :message";
    52.    
    53.    // $sql = "INSERT INTO bd_clientes SET :name";
    54.     $sql="insert into bd_clientes( name, email, phone, subject, message) values ('$name', '$email','$phone','$subject', '$message')";
    55.    
    56. $stm = $pdo->prepare($sql);
    57. $stm->bindParam(':name', $_POST["name"]);
    58. $stm->bindParam(':email', $_POST["email"]);
    59. $stm->bindParam(':phone', $_POST["phone"]);
    60. $stm->bindParam(':subject', $_POST["subject"]);
    61. $stm->bindParam(':message', $_POST["message"]);
    62. $stm->execute();
    63.  
    64.  
    65.  
    66. if($stm){
    67. echo "Success";
    68. }
    69. else {
    70.         echo "в бд запрос не прошел";
    71.     }
    72.   }
    73. }
    74.  
    75.    
    76. ?>
     
  24. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    Я же говорил, что бы я всё скопировал у меня что бы всё заработало
     
    Anna_xxx нравится это.
  25. Anna_xxx

    Anna_xxx Новичок

    С нами с:
    18 мар 2018
    Сообщения:
    40
    Симпатии:
    3
    @Dimon2x только на тебя вся надежда.
    *В доках код тот же что и вчера. Но он отличается от того что в первом посте(?)посту(?). Про это и написала