Добрый день. Делаю свой первый сайт и есть небольшая недоработка которую пока что не могу решить сама. Клиент заполняет контактную форму почле чего мне на почту приходит письмо а данные добавляются в базу данных. но так как я изменила код то теперь вместо PHP: if( msg =='Success'){ result ='Su mensaje ha sido enviado'; cls ='success'; } выходит сообщение об ошибке: PHP: else { result ='Su mensaje NO ha sido enviado'; cls ='error'; } То есть пользователю показывают ошибку при том что все его данные обрабатываются верно. почему такое может происходить? При заполеннии конактной формы данные обрабатываются следующим образом PHP: <?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"; и здесь я сама добавила: PHP: $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"; } } ?> и еще есть вот такая функция: Код (Javascript): 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(); }) }, плюс валидация в отдельном документе: Код (Text): /*! 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.....
видимо в msg попадет не "Success", a что-то другое. Например "Success E_NOTICE: Undefined variablablabla..."
К сожалению не поняла ответа. все данные ведь приходят на почту... Как можно исправить код? Код (Text): $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";
эхо выводит в стандартный поток вывода а ещё туда попадают сообщения об ошибках ну и может ещё что-то до или после т.е. равенство =="Success" может не выполняться при этом.
Мне нужен весь нужный код с базой, что бы я его к себе скопировал и у меня работал этот сайт, тогда быстро ошибку найду
Женщины по определению не могут стать модераторами этого форума, т.к. не способны соответствовать главному условию. Такие не толерантные дела )
@Dimon2x --- Добавлено --- не ну под такое попадаю теоретически .Хочу от них детей @romach @Dimon2x @igordata народ ну помогите с кодом плиз
@Dimon2x бд я тоже дала, просто она пустая, но все работает. Единственное что сейчас не получается это показывать что сообщение отправлено, вместо этого говорит что нет, хотя все приходит и добавляется
ну блин, детка, мало кто будет качать кучу файлов, вчитываться и переделывать всё это лучше задавай вопросы
не ну а как, по другому не загружались. да там надо только 1 файл посмотреть. Тебе такой код раз плюнуть исправить
Ну если вся беда только в сообщении можно поступить как поступают настоящие про пихапи программисты. Скопировать код с if и вставить его в else --- Добавлено --- А ошибка вот она и плюс возможно выше c die если error. Ты уже что то вывела на печать кроме success не делай echo PHP: if ($conn->query($sql) === TRUE) { echo "New record created successfully"; } else { echo "Error: " . $sql . "<br>" . $conn->error; }
я уже поменяла там, новые доки в файле PHP: <?php define( "WEBMASTER_EMAIL", 'info@.com' ); $error = false; $fields = array( 'name', 'email', 'phone', 'subject', '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']; $msge2.= "Nombre del remitente:".$name."\r\n"; $msge2.= "Correo:".$email."\r\n"; $msge2.= "Teléfono:".$phone."\r\n"; $msge2.= "Mensaje:".$message."\r\n"; $mail = mail( WEBMASTER_EMAIL, $subject, $msge2, "From: " . $name . " <" . $email . ">\r\n" ."Reply-To: " . $email . "\r\n" ."X-Mailer: PHP/" . phpversion() ); if ( $mail ) { $host='localhost'; $db=''; $user=''; $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 bd_clientes SET :name, :email, :phone, :subject, :message"; // $sql = "INSERT INTO bd_clientes SET :name"; $sql="insert into bd_clientes( name, email, phone, subject, message) values ('$name', '$email','$phone','$subject', '$message')"; $stm = $pdo->prepare($sql); $stm->bindParam(':name', $_POST["name"]); $stm->bindParam(':email', $_POST["email"]); $stm->bindParam(':phone', $_POST["phone"]); $stm->bindParam(':subject', $_POST["subject"]); $stm->bindParam(':message', $_POST["message"]); $stm->execute(); if($stm){ echo "Success"; } else { echo "в бд запрос не прошел"; } } } ?>
@Dimon2x только на тебя вся надежда. *В доках код тот же что и вчера. Но он отличается от того что в первом посте(?)посту(?). Про это и написала