За последние 24 часа нас посетили 17617 программистов и 1671 робот. Сейчас ищут 1489 программистов ...

Передача multiple с формы в php

Тема в разделе "Сделайте за меня", создана пользователем MaximOsovitny, 17 май 2015.

  1. MaximOsovitny

    MaximOsovitny Новичок

    С нами с:
    17 май 2015
    Сообщения:
    4
    Симпатии:
    0
    Добрый вечер.

    Есть html форма с multiple input.
    Уже все перепробовал но не могу передать в скрипт все выбранные значения поля в срипт формирующий и отсылающий письмо. Помогите пожалуйста. Буду очень благодарен.

    Код всех частей ниже.
    HTML:
    Код (Text):
    1.  
    2. <form method="POST" id="feedback-form">
    3.                             <h4>Как к Вам обращаться:</h4>
    4.                             <input type="text" name="name" required placeholder="Фамилия Имя Отчество" x-autocompletetype="name">
    5.                             <h4>Ваш Email для связи:</h4>
    6.                             <input type="email" name="email" required placeholder="Ваш Email" x-autocompletetype="email">
    7.                             <h4>Ваш телефон:</h4>
    8.                             <input type="text" name="number" required placeholder="Ваш Телефон" x-autocompletetype="number">
    9.                            
    10.                             <h4>Услуга:</h4>
    11.                             <p>Для выбора нескольких услуг зажмите клавишу CTRL</p>
    12.                             <select name="type" multiple="multiple" id="feedback-form" style="width:100%;">
    13.                             <option value="search1" id="feedback-form">От "А" до "Я"</option>
    14.                             <option value="search2" id="feedback-form">Конкуренция</option>
    15.                             <option value="search3" id="feedback-form">Потребительский Охват</option>
    16.                             <option value="search4" id="feedback-form">Отдельные Направления</option>
    17.                             <option value="creative1" id="feedback-form">Разработка идеи рекламной кампании</option>
    18.                             <option value="creative2" id="feedback-form">Видеоформаты</option>
    19.                             <option value="creative3" id="feedback-form">Аудиоформаты</option>
    20.                             <option value="creative4" id="feedback-form">Баннерная реклама</option>
    21.                             <option value="placement1" id="feedback-form">Рекламная кампания "ВКонтакте"</option>
    22.                             <option value="placement2" id="feedback-form">Рекламная кампания в "Facebook"</option>
    23.                             <option value="placement3" id="feedback-form">Рекламная кампания в "Instagram"</option>
    24.                             <option value="auto" id="feedback-form">Автоматизация рабочих процессов (Excel, Power Point macro)</option>
    25.                             </select>
    26.                            
    27.                             <h4>На какую аудиторию вы сейчас ориентируетесь? (Распределение по возрасту, полу, доходу, городам и прочее):</h4>
    28.                             <textarea name="ta" required rows="5"></textarea>
    29.                             <h4>Вашы конкуренты и компании на которые вы ориентируетесь:</h4>
    30.                             <textarea name="competitors" required rows="5"></textarea>
    31.                             <h4>Информация про вашу компанию:</h4>
    32.                             <textarea name="company" required rows="5"></textarea>
    33.                             <h4>Любая дополнительная информация:</h4>
    34.                             <textarea name="information" required rows="5"></textarea>
    35.                             <div align="center"><input type="submit" name="submit" style="width: 150px;" value="Oтправить"></div>  
    36.                         </form>
    37.                        
    38.                         <script>
    39.                         document.getElementById('feedback-form').onsubmit = function(){
    40.                           var http = new XMLHttpRequest();
    41.                           http.open("POST", "sendmail.php", true);
    42.                           http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    43.                           http.send("name=" + this.name.value + "&email=" + this.email.value + "&number=" + this.number.value + "&type=" + this.type.value + "&ta=" + this.ta.value + "&competitors=" + this.competitors.value + "&company=" + this.company.value + "&information=" + this.information.value);
    44.                           http.onreadystatechange = function() {
    45.                             if (http.readyState == 4 && http.status == 200) {
    46.                               alert(http.responseText + ', Ваше сообщение получено.\nНаши специалисты ответят Вам в течении суток.\nБлагодарим за интерес к нашей компании!');
    47.                             }
    48.                           }
    49.                           http.onerror = function() {
    50.                             alert('Извините, данные не были переданы');
    51.                           }
    52.                           return false;
    53.                         }
    54.                         </script>
    PHP:
    Код (Text):
    1.  
    2. <?PHP  header("Content-Type: text/html; charset=utf-8");?>
    3. <?
    4. if (array_key_exists('name', $_POST)) {
    5. mail("triangle.clients@gmail.com", $_POST['name'], "<h3>Name:</h3>".$_POST['name']."<br/><h3>Email:</h3> ".$_POST['email']."<br/><h3>Number:</h3> ".$_POST['number']."<br/><br/><h3>Services:</h3>".$_POST['type']. "<br/><br/><h3>Target Audience:</h3> ".$_POST['ta']."<br/><h3>Competitors:</h3> ".$_POST['competitors']."<br/><h3>Company:</h3> ".$_POST['company']."<br/><h3>Additional Information:</h3> ".$_POST['information'],"Content-Type: text/html; charset=utf-8");
    6. echo $_POST['name'];
    7. }
    8. ?>
     
  2. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Функция и не отрабатывает. Элементарно же проверить, ну.
    вместо
    Код (Text):
    1. document.getElementById('feedback-form').onsubmit = function(){
    делаем
    Код (Text):
    1. function aaa(){
    в
    Код (Text):
    1. <form method="POST" id="feedback-form">
    добавляем
    Код (Text):
    1. <form method="POST" id="feedback-form" onsubmit="aaa();return false;">
     
  3. MaximOsovitny

    MaximOsovitny Новичок

    С нами с:
    17 май 2015
    Сообщения:
    4
    Симпатии:
    0
    Подскажите, так а как сделать форму полностью рабочей? Можете исправить? А то письма приходят с формы, но лишь с одной из выбранных опций.
     
  4. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    как приходит? как не приходит?
    Я ж не вижу, мне элементарно проверить не на чем.
     
  5. MaximOsovitny

    MaximOsovitny Новичок

    С нами с:
    17 май 2015
    Сообщения:
    4
    Симпатии:
    0
    Я так понимаю, скрипт под формой (оба в html) собирает с нее values полей и передает в скрипт "sendmail.php", который формирует письмо и отсылает его. Все работает, только с поля с мультивыбором (name="type") приходит только одно выбранное значение, первое, а не все выбранные. Как это исправить в этих трех кусках кода, чтобы поле "type" тоже нормально обрабатывалось и приходил масивв ответов?

    Помогите пожалуйста.

    Пример сообщения, которое приходит:
    Код (Text):
    1.  
    2. Name:
    3. MaximOsovitny
    4. Email:
    5. maximosovitny@gmail.com
    6. Number:
    7. 0930613165
    8.  
    9. Services:
    10. creative1
    11.  
    12. Target Audience:
    13. ТА
    14. Competitors:
    15. какие-то конкуренты
    16. Company:
    17. компания
    18. Additional Information:
    19. дополнительна информация
     
  6. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    В общем, пробуйте. Не особо я силён в js, да и, насколько я помню, XMLHttpRequest() не кроссбраузерен.
    HTML
    Код (PHP):
    1. <!DOCTYPE HTML>
    2. <html>
    3. <head>
    4. <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
    5. <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
    6. </head>
    7. <body>
    8.  
    9. <form method="POST" id="formx" action="javascript:void(null);" onsubmit="call()">
    10.                      <h4>Как к Вам обращаться:</h4>
    11.                      <input type="text" name="name" required placeholder="Фамилия Имя Отчество" x-autocompletetype="name">
    12.                      <h4>Ваш Email для связи:</h4>
    13.                      <input type="email" name="email" required placeholder="Ваш Email" x-autocompletetype="email">
    14.                      <h4>Ваш телефон:</h4>
    15.                      <input type="text" name="number" required placeholder="Ваш Телефон" x-autocompletetype="number">
    16.                      
    17.                      <h4>Услуга:</h4>
    18.                      <p>Для выбора нескольких услуг зажмите клавишу CTRL</p>
    19.                      <select name="type[]" multiple  style="width:100%;">
    20.                      <option value="search1" >От "А" до "Я"</option>
    21.                      <option value="search2" >Конкуренция</option>
    22.                      <option value="search3" >Потребительский Охват</option>
    23.                      <option value="search4" >Отдельные Направления</option>
    24.                      <option value="creative1" >Разработка идеи рекламной кампании</option>
    25.                      <option value="creative2" >Видеоформаты</option>
    26.                      <option value="creative3" >Аудиоформаты</option>
    27.                      <option value="creative4" >Баннерная реклама</option>
    28.                      <option value="placement1" >Рекламная кампания "ВКонтакте"</option>
    29.                      <option value="placement2" >Рекламная кампания в "Facebook"</option>
    30.                      <option value="placement3" >Рекламная кампания в "Instagram"</option>
    31.                      <option value="auto" >Автоматизация рабочих процессов (Excel, Power Point macro)</option>
    32.                      </select>
    33.                      
    34.                      <h4>На какую аудиторию вы сейчас ориентируетесь? (Распределение по возрасту, полу, доходу, городам и прочее):</h4>
    35.                      <textarea name="ta" required rows="5"></textarea>
    36.                      <h4>Вашы конкуренты и компании на которые вы ориентируетесь:</h4>
    37.                      <textarea name="competitors" required rows="5"></textarea>
    38.                      <h4>Информация про вашу компанию:</h4>
    39.                      <textarea name="company" required rows="5"></textarea>
    40.                      <h4>Любая дополнительная информация:</h4>
    41.                      <textarea name="information" required rows="5"></textarea>
    42.                      <div align="center"><input type="submit" name="submit" style="width: 150px;" value="Oтправить"></div>   
    43.                   </form>
    44.                   
    45. <script>
    46.                   function call() {
    47.       var msg   = $('#formx').serialize();
    48.         $.ajax({
    49.           type: 'POST',
    50.           url: '2.php',
    51.           data: msg,
    52.           success: function(data) {
    53.             alert('Очешуенно ');
    54.           },
    55.           error:  function(xhr, str){
    56.                 alert('Возникла ошибка: ' + xhr.responseCode);
    57.             }
    58.         });
    59.  
    60.     }
    61. </script>
    62.  
    63. </body>
    64. </html>
    PHP
    Код (PHP):
    1. <?php
    2. header("Content-Type: text/html; charset=utf-8");
    3.  
    4.  
    5. $test = "";
    6. foreach($_POST["type"] as $arr) {
    7.     $test .= $arr."<br />";
    8.     
    9. }
    10.  
    11.  
    12. if (array_key_exists('name', $_POST)) {
    13. mail("mr.aakv@gmail.com", $_POST['name'], "<h3>Name:</h3>".$_POST['name']."<br/><h3>Email:</h3> ".$_POST['email']."<br/><h3>Number:</h3> ".$_POST['number']."<br/><br/><h3>Services:</h3>".$test. "<br/><br/><h3>Target Audience:</h3> ".$_POST['ta']."<br/><h3>Competitors:</h3> ".$_POST['competitors']."<br/><h3>Company:</h3> ".$_POST['company']."<br/><h3>Additional Information:</h3> ".$_POST['information'],"Content-Type: text/html; charset=utf-8"); 
    14. echo $_POST['name'];
    15. }
    16. ?>
     
  7. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    При этом ты кидаешь JQuery-код, который использует кроссбраузерную реализацию :)
     
  8. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Ну так правильно. XMLHttpRequest() был в его версии, я же обошёлся AJAX'ом)
     
  9. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Ок. Но AJAX и XMLHttpRequest() - это не альтернативы друг друга. AJAX - название технологии, XMLHttpRequest - механизм, который обеспечивает ее работу в современных браузерах. По факту это одно и то же. Просто в JQuery сделали уровень абстракции чуть повыше. Но AJAX - это не изобретение автора JQuery. Просто у него функция для работы с AJAX-ом так и называется .ajax.
     
  10. MaximOsovitny

    MaximOsovitny Новичок

    С нами с:
    17 май 2015
    Сообщения:
    4
    Симпатии:
    0
    Огромное тебе спасибо.
    Все работает и просто шикарно.
     
  11. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Fell-x27, ага, я понял, что ты имеешь в виду. Да, в js мне ещё копаться и копаться.