я такой же новичек как и ты и часто задаю глупые вопросы. Но успел понять важность методичного изучения с самых азов, поскольку часто возвращаюсь к основам. Вот сейчас решил перечитать Котерова, поскольку раньше читал "php5 в подленнике" на скорую руку. По сути там все просто, даже ООП, просто дело именно в методичном изучении от простого к сложному. Короче Котеров даст полное знание основ. А Мэтт Зандстра - хорошо объясняет паттерны, которые хорошо описаны и в других книгах, однако мало книг на русском. А те что на русском - в одной паттерны объясняются на примере java, в другой не так поступательно и методично, как у Мэта Зандстры. А у него именно поступательно. Сначала освежает основные постулаты ООП, потом объясняет что такое UML-диаграммы, потом говорит об основных принципах ООП программирования, и уже после этого идут паттерны, примеры которых написаны на php. Короче на фоне других хорошая книжка. Кстати в этой же книге освещаются всякие способы подключения файлов/классов. Знать ООП - это обязательно, без этого сложно. Зачем нужно понимать паттерны - чтобы быть нормальным/хорошим программистом. Что касается мейлера - я вообще не понимаю ниче, но почитав тему понял что проблема как раз в знании основ. Без мейлера походу легко сделать, у тебя там какая-то маленькая трабла с получением данных. что у тебя там с аяксом? выложи ВЕСЬ код. Может быть при отправке не указал method: 'POST' ? Короче скорее всего что-то с ajax. Попробуй сделать не $name = $_POST['name'] и все остальные переменные, а $name = 'Евгений'. Заполни вручную, если письмо отправится, то значит дело в передаче POST-данных, как ты их отправляешь - надо выложить весь код, включая js и ajax
Я же нашёл и скачал эти книги... Моя проблема наверное в том, что у меня нет определённой методике в изучении материала. Я стараюсь, конечно что-то записывать, но методика восприятия информации, конечно нужна! У тебя наверное своя! У каждого своя) Что касается вопроса, то он следующий. Проанализировал отправку формы var_dump() Он показал, что ничего не отправляется методом $_POST Вопрос: Если исходить из того, что с кодом всё в порядке, то что может быть?
В том как ты передаешь POST данные. Как ты их передаешь? У тебя есть форма. Как ты берешь из нее данные и передаешь php-скрипту? напиши код. А, мне почему-то показалось что я где-то про ajax прочитал, походу ошибся. У тебя напрямую да? На глазок вроде все пучком. Как мог потеряться POST хз ваще. Поля формы вручную заполняешь, или надеешься что они откуда-то появятся из за "value=<? $POST_.... ?
PHP: error_reporting(E_ALL); $to = 'a.kovalkovsky@gmail.com'; if (isset($_POST['submit'])) { if(!empty($_POST['name'])){$name = strip_tags(trim($_POST['name']));} if(!empty($_POST['email'])){$email = strip_tags(trim($_POST['email']));} if(!empty($_POST['skype'])){$skype = strip_tags(trim($_POST['skype']));} if(!empty($_POST['sms'])){$sms = strip_tags(trim($_POST['sms']));} $message = "Имя пользователя: ".$name."\r\n"; $message .= "Почта: ".$email."\r\n"; $message .= "Skype: ".$skype."\r\n"; $message .= "Сообщение: ".$sms."\r\n"; $tema = "=?utf-8?B?".base64_encode($subject)."?="; $headers = "From: $from\r\nReply-to: $from\r\nContent-type:text/plain; charset=utf-8\r\n"; mail($to, $tema, $message, $headers); } var_dump($_POST); PHP: <div class="popupcontact"> <div class="wrapper"> <div class="popupcontacttitle" id="about">Оставьте заявку сейчас и получите бесплатную консультацию!</div> <form id="form" method="post" action="form.php" class="popupform"> <input type="text" placeholder="Ваше имя" id="name" name="name" value="<?=$_POST['name'] ?? '' ?>" /> <input type="email" placeholder="Ваша почта" id="email" name="email" value="<?=$_POST['email'] ?? '' ?>" /> <input type="text" placeholder="Ваш Skype" name="skype" value="<?=$_POST['skype'] ?? '' ?>" /> <textarea name="sms" cols="5" rows="10" placeholder="Ваше сообщение" value="<?=$_POST['sms'] ?? '' ?>" ></textarea> <div> <button type="submit" id="sbm" name="submit">Оставьте заявку</button> </div> </form> </div> </div> А код ajax мне нужен для того, чтобы перезагрузки страницы не было. Не думаю, что из-за него что-то Код (Text): $(document).ready(function () { $(document).on('click','#sbm', function(e){ e.preventDefault(); var sub = true; if($('#name').val()==""){$('#name').css( "border"," solid 1px red" ); sub=false;} if($('#email').val()==""){$('#email').css( "border"," solid 1px red" ); sub=false;} if(sub){ $.ajax({ type: "POST", url: "form.php", data: $(this).serialize() }).done(function(data) { //в data вернется ответ сервера, например можно вывести ошибки alert('Спасибо'); location.reload(); $('#form').hide(); }); } return false; }); }); До того, как я поставил условие if, мне приходило на почту следующее: а сейчас вообще ничего. var_dump($_POST) = array(0) { } --- Добавлено --- Поля формы заполняю, но на почте их нет
без ajax пробовал напрямую? потому что данные для отправки аяксом ты походу неправильно получаешь. что по твоему значит data: $(this).serialize() ? что возвращает $(this) ? он возвращает тебе объект кнопки сабмит, которую ты за тем хочешь сериализовать ). А надо сериализовать форму: Код (Text): data: $('#идентификатор формы').serialize() суть проблемы в том, что $this возвращает элемент для события click, как ты указал в самом начале: $(document).on('click','#sbm', function(e){ ... и это, там парабам... КНОПКА!
я не могу это объяснить... Я убрал весь код ajax, а форма всё равно работает с ним. Почему??? .... А что нужно прописать, чтобы данные отправлялись нормально?
ничего особого, у тебя уже есть Код (Text): <form id="form" method="post" action="form.php" ... и Код (Text): <button type="submit" ... этого уже достаточно чтобы отправить данные скрипту "form.php". Незнаю, влияет ли это, но убери весь js код, начиная от Код (Text): $(document).on('click','#sbm' и все должно быть норм. В таком виде все должно работать, если ошибка заключалась именно в том что я выше описал. Если данные начнут отправляться, то верни ajax-запрос и просто подкорректируй его --- Добавлено --- ну походу кэш браузера нужно тебе почистить. Если у тебя Chrome - нажми ctrl+shift+del, галочка очистки кэша должна стоять, нажми очистить. А лучше для дальнейшей работы отключи кэш в developer tools (погугли) --- Добавлено --- а кому делаешь? что за проект? на фрилансе заказ взял?
Вы правы! Всё получилось, как только я удалил ajax... А ... можете помочь сделать так, чтобы с ajax работало? ... Для одноклассника делаю!
ок могу, зачем на Вы, я такой же распиздяй как и ты скорее всего. ты походу не понял что я там тебе писал про $this. но тогда просто замени Код (Text): data: $(this).serialize() на Код (Text): data: $('#form').serialize() а что за сайт/проект? что за консультация? какие услуги? интересно. будет готов - кинь ссылочку, впринципе мне интересны всякие стартапы, сам щас кое-что мучу. --- Добавлено --- да, и я пробежался маленько взглядом по твоим другим темам, походу все подобные value="<?=$_POST... в твоей форме - они тебе вообще не нужны, убери value.
К сожалению не сработало... Без ajax - работает, с ним нет! Ссылку скину, конечно) ... Почему же может не работать? Я сделал, как ты мне и сказал --- Добавлено --- у меня две формы и два ajax Код (Text): $(document).ready(function () { $(document).on('click','#sbm', function(e){ e.preventDefault(); var sub = true; if($('#name').val()==""){$('#name').css( "border"," solid 1px red" ); sub=false;} if($('#email').val()==""){$('#email').css( "border"," solid 1px red" ); sub=false;} if(sub){ $.ajax({ type: "POST", url: "form.php", data: $('#form').serialize() }).done(function(data) { //в data вернется ответ сервера, например можно вывести ошибки alert('Спасибо'); location.reload(); $('#form').hide(); }); } return false; }); }); $(document).ready(function () { $(document).on('click','#sbmmain', function(e){ e.preventDefault(); var sub = true; if($('#title').val()==""){$('#title').css( "border"," solid 1px red" ); sub=false;} if($('#mail').val()==""){$('#mail').css( "border"," solid 1px red" ); sub=false;} if(sub){ $.ajax({ type: "POST", url: "form.php", data: $('#mainform').serialize() }).done(function(data) { //в data вернется ответ сервера, например можно вывести ошибки alert('Спасибо'); $('input').val(''); }); } return false; }); }); Вот вторая форма... HTML: <div class="contact"> <div class="wrapper"> <div class="contact-title" id="about">Оставьте заявку сейчас и получите бесплатную консультацию!</div> <form id="mainform" method="post" action="form.php"> <input type="text" placeholder="Ваше имя" id="title" name="name" value="<?=$_POST['name'] ?? '' ?>" /> <input type="email" placeholder="Ваша почта" id="mail" name="email" value="<?=$_POST['email'] ?? '' ?>" /> <input type="text" placeholder="Ваш Skype" name="skype" value="<?=$_POST['skype'] ?? '' ?>" /> <textarea name="sms" cols="30" rows="10" placeholder="Ваше сообщение" value="<?=$_POST['sms'] ?? '' ?>" ></textarea> <div> <button type="submit" id="sbmmain" name="submit">Оставить заявку</button> </div> </form> </div> </div>
незнаю, должно работать, $_POST распечатывал? попробуй из <button type="submit"... убрать type="submit". Сделай допустим вместо нее <div id="submit">Отправить</div>. Попробуй также распечатать в js Код (Text): $(document).ready(function () { $(document).on('click','#sbmmain', function(e){ alert($('#mainform').serialize()); возможно e.preventdefault() мешает, попробуй удалить его.
лалка палка, у тебя массив пустой приходит. Разбирайся, почему. --- Добавлено --- код писать надо постепенно и проверять на каждом этапе. А не написать портянку и ломать голову что не работает.
HTML: <div class="contact"> <div class="wrapper"> <div class="contact-title" id="about">Оставьте заявку сейчас и получите бесплатную консультацию!</div> <form id="mainform"> <input type="text" name="name" value="" placeholder="Ваше имя" /> <input type="email" name="email" value="" placeholder="Ваша почта" /> <input type="text" name="skype" value="" placeholder="Ваш Skype" /> <textarea name="sms" cols="30" rows="10" value="" placeholder="Ваше сообщение"></textarea> <div> <button type="submit">Оставить заявку</button> </div> </form> </div> </div> Код (Javascript): var mainForm; mainForm = $("#mainform"); mainForm.on("submit", function(event) { event.preventDefault(); var sub, curField; sub = true; for(var i = 0; i < $(this)[0].length; i++) { curField = $($(this)[0][i]); if((curField.attr("name") == 'name' || curField.attr("name") == 'email') && curField.val() == '') { curField.css("border","solid 1px red"); sub = false; } } if(sub){ $.ajax({ type: "POST", url: "ajax/form.php", data: $(this).serialize(), success: function(response) { alert(response); } }); } });
у меня две формы и два ajax Код (Text): $(document).ready(function () { $(document).on('click','#sbm', function(e){ e.preventDefault(); var sub = true; if($('#name').val()==""){$('#name').css( "border"," solid 1px red" ); sub=false;} if($('#email').val()==""){$('#email').css( "border"," solid 1px red" ); sub=false;} if(sub){ $.ajax({ type: "POST", url: "form.php", data: $('#form').serialize() }).done(function(data) { //в data вернется ответ сервера, например можно вывести ошибки alert('Спасибо'); location.reload(); $('#form').hide(); }); } return false; }); }); $(document).ready(function () { $(document).on('click','#sbmmain', function(e){ e.preventDefault(); var sub = true; if($('#title').val()==""){$('#title').css( "border"," solid 1px red" ); sub=false;} if($('#mail').val()==""){$('#mail').css( "border"," solid 1px red" ); sub=false;} if(sub){ $.ajax({ type: "POST", url: "form.php", data: $('#mainform').serialize() }).done(function(data) { //в data вернется ответ сервера, например можно вывести ошибки alert('Спасибо'); $('input').val(''); }); } return false; }); }); Привет! Я изменил на то, что ты прописал. Результат: У кнопки пропали стили. В css я конечно зашёл, и прописал вместо button который я удалил, #id (взависимости от формы) Но к сожалению пока так. Далее, касаемо js ... Я удалил e.preventdefault и написал alert($('#form').serialize()); и как результат: но var_dump($_POST) по прежнему пишет, что массив пустой... значит, проблема ниже...
каким макаром ты узнаешь что выдает var_dump($_POST)? не вижу чтобы ajax выводил что-нибудь. как нибудь так сделай: Код (Text): done(function(data) { alert(data); а в php скрипте сделай что нибудь вроде PHP: echo $_POST['name'] кароч хз в чем дело, морока сплошная. попробуй просто руками передать данные: Код (Javascript): data: { name : 'вася', lastname : 'пупкин' } проделай то же самое в php: PHP: echo $_POST['name']; echo $_POST['lastname'];