RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1256066
Accepted
realHikkan
realHikkan
Asked:2022-03-15 17:46:13 +0000 UTC2022-03-15 17:46:13 +0000 UTC 2022-03-15 17:46:13 +0000 UTC

如何从选择多个传递值数组

  • 772

我需要select将multiples中的几个值传递到一个数组中,我需要从列表中选择并全部发送到邮件中。

现在它是这样工作的:

<form>
    <!-- Скрытие поля отправки -->
    <input type="hidden" name="project_name" value="Student Stage">
    <input type="hidden" name="admin_email" value="ss.studentstage@mail.ru">
    <input type="hidden" name="form_subject" value="Заявка с формы поступления">
    <!-- -->



    <select name="Экзамены[]" multiple>
      <option value="Русский язык">Русский язык</option>
      <option value="Математика">Математика</option>
      <option value="Физика">Физика</option>
      <option value="Химия">Химия</option>
      <option value="Биология">Биология</option>
      <option value="География">География</option>
      <option value="Литература">Литература</option>
      <option value="История">История</option>
      <option value="Обществознание">Обществознание</option>
      <option value="Информатика и ИКТ">Информатика и ИКТ</option>
      <option value="Иностранный язык">Иностранный язык</option>
    </select>

    <button>Отправить</button>
</form>

<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="script.js"></script>

这一切都得到验证:

$(document).ready(function() {

    //E-mail Ajax Send
    $("form").submit(function() {
        var th = $(this);
        $.ajax({
            type: "POST",
            url: "mail.php",
            data: th.serialize()
        }).done(function() {
            alert("Ваша заявка была отправлена!\nОжидайте ответа в ближайшее время.");
            setTimeout(function() {
                // Done Functions
                th.trigger("reset");
            }, 1000);
        });
        return false;
    });

});

并通过脚本发送到邮箱:

<?php

$method = $_SERVER['REQUEST_METHOD'];

//Script Foreach
$c = true;
if ( $method === 'POST' ) {

    $project_name = trim($_POST["project_name"]);
    $admin_email  = trim($_POST["admin_email"]);
    $form_subject = trim($_POST["form_subject"]);

    foreach ( $_POST as $key => $value ) {
        if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
            $message .= "
            " . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
                <td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
                <td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
            </tr>
            ";
        }
    }
} else if ( $method === 'GET' ) {

    $project_name = trim($_GET["project_name"]);
    $admin_email  = trim($_GET["admin_email"]);
    $form_subject = trim($_GET["form_subject"]);

    foreach ( $_GET as $key => $value ) {
        if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
            $message .= "
            " . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
                <td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
                <td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
            </tr>
            ";
        }
    }
}

$message = "<table style='width: 100%;'>$message</table>";

function adopt($text) {
    return '=?UTF-8?B?'.Base64_encode($text).'?=';
}

$headers = "MIME-Version: 1.0" . PHP_EOL .
"Content-Type: text/html; charset=utf-8" . PHP_EOL .
'From: '.adopt($project_name).' <'.$admin_email.'>' . PHP_EOL .
'Reply-To: '.$admin_email.'' . PHP_EOL;

mail($admin_email, adopt($form_subject), $message, $headers );

不是所有的值select都是从那里转移过来的,而只是最后一个选择的。name我正在考虑通过将值添加到数组中[]并编写如下代码来传递值:

<?php
  foreach ($_GET['Экзамены'] as $selectedOption)          
?>

但是我仍然不明白如何将这个数组传输到 mail.php

告诉我如何做到这一点?

PS 除了字段外select,还有几个输入在表单中发送,这里我没有插入

javascript
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Best Answer
    Daniil Loban
    2022-03-17T21:10:31Z2022-03-17T21:10:31Z

    这是一个如何创建所需对象的示例,字段名称当然是个人喜好问题Экзамены[],但我认为没有括号是可能的,而不是西里尔文。

    $(document).ready(function() {
        
        //E-mail Ajax Send
        $("form").submit(function(e) {
            e.preventDefault()
            //получаем данные формы
            var formData = new FormData(this)
            //получаем все выделенные элементы списка
            var exams = $('[name="Экзамены[]"]').val();
            //объединяем полученное в один объект
            var object = {
                ...Object.fromEntries(formData), "Экзамены[]":exams
            };
            //конвертируем в json
            var json = JSON.stringify(object);
            console.log(json)
        });
    });
    <form>
        <!-- Скрытие поля отправки -->
        <input type="hidden" name="project_name" value="Student Stage">
        <input type="hidden" name="admin_email" value="ss.studentstage@mail.ru">
        <input type="hidden" name="form_subject" value="Заявка с формы поступления">
        <!-- -->
        <select name="Экзамены[]" multiple>
          <option value="Русский язык">Русский язык</option>
          <option value="Математика">Математика</option>
          <option value="Физика">Физика</option>
          <option value="Химия">Химия</option>
          <option value="Биология">Биология</option>
          <option value="География">География</option>
          <option value="Литература">Литература</option>
          <option value="История">История</option>
          <option value="Обществознание">Обществознание</option>
          <option value="Информатика и ИКТ">Информатика и ИКТ</option>
          <option value="Иностранный язык">Иностранный язык</option>
        </select>
    
        <button>Отправить</button>
    </form>
    
    <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
    <script src="script.js"></script>

    脚本.js:

      $(document).ready(function() {
          //E-mail Ajax Send
          $("form").submit(function() {
    
            //получаем данные формы
            var formData = new FormData(this)
            //получаем все выделенные элементы списка
            var exams = $('[name="Экзамены[]"]').val();
            //объединяем полученное в один объект
            var object = {
                ...Object.fromEntries(formData), "Экзамены[]":exams
            };
            //конвертируем в json
            var json = JSON.stringify(object);
    
              $.ajax({
                  type: "POST",
                  url: "mail.php",
                  contentType: 'application/json',
                  data: json
              }).done(function(e) {
                  console.log(e);
                  alert("Ваша заявка была отправлена!\nОжидайте ответа в ближайшее время.");
                  setTimeout(function() {
                      // Done Functions
                      th.trigger("reset");
                  }, 1000);
              });
              return false;
          });
    
      });
    

    php:

    <?php
    
    $rest_json = file_get_contents("php://input");
    $_POST = json_decode($rest_json, true);
    
    $method = $_SERVER['REQUEST_METHOD'];
    
    //Script Foreach
    $c = true;
    if ( $method === 'POST' ) {
    
        $project_name = trim($_POST["project_name"]);
        $admin_email  = trim($_POST["admin_email"]);
        $form_subject = trim($_POST["form_subject"]);
    
        function get_exams($item){
          return "<td style='padding: 10px; border: #e9e9e9 1px solid;'>$item</td>\n                ";
        }
        $exams = array_map( get_exams , $_POST["Экзамены[]"] );
        $exams_html = "";
        foreach ( $exams as $line ) {
          $exams_html .= "$line";
        }  
    
        foreach ( $_POST as $key => $value ) {
            if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
                $message .= "
                " . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
                    <td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
                    <!--<td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>-->
                    $exams_html
                </tr>
                ";
            }
        }
    } 
    
    $message = "<table style='width: 100%;'>$message</table>";
    
    
    function adopt($text) {
        return '=?UTF-8?B?'.Base64_encode($text).'?=';
    }
    
    $headers = "MIME-Version: 1.0" . PHP_EOL .
    "Content-Type: text/html; charset=utf-8" . PHP_EOL .
    'From: '.adopt($project_name).' <'.$admin_email.'>' . PHP_EOL .
    'Reply-To: '.$admin_email.'' . PHP_EOL;
    
    mail($admin_email, adopt($form_subject), $message, $headers );
    
    • 1
  2. Iulian
    2022-03-20T20:28:40Z2022-03-20T20:28:40Z

    $(document).ready(function() {
      //E-mail Ajax Send
      $("form").submit(function() {
          var th = $(this);
          $.ajax({
              type: "POST",
              url: "mail.php",
              data: th.serialize()
          }).done(function() {
              alert("Ваша заявка была отправлена!\nОжидайте ответа в ближайшее время.");
              setTimeout(function() {
                  // Done Functions
                  th.trigger("reset");
              }, 1000);
          });
          return false;
      });
    
      $("form .select .show").click(function() {
        $("form .select .hide, form .select ul").show();
        $("form .select .show").hide();
        $("form .select").css("border-radius", "30px 30px 0 0");
        return false;
      });
      $("form .select .hide").click(function() {
        $("form .select .hide, form .select ul").hide();
        $("form .select .show").show().html("Готово");
        $("form .select").css("border-radius", "30px");
        return false;
      });
    });
    form input[type="text"],
    form input[type="email"],
    form input[type="number"],
    form .select {
      width: 50%;
      background: #F3F3F3;
      border-radius: 30px;
      box-sizing: border-box;
      border: 1px solid #DDDDDD;
      height: 50px;
      margin-bottom: 15px;
    }
    
    form .select::placeholder {
      font: 18px Roboto-Regular;
      color: #4c5461;
    }
    
    form .select:::focus,
    form .select:::active {
      border: 1px solid #FF9900;
      outline: none;
    }
    
    .select {
      position: relative;
      z-index: 9;
      padding: 0;
    }
    
    .select a {
      color: #000;
      text-decoration: none;
      display: block;
      padding: 13px 20px;
    }
    
    .select ul {
      display: none;
      background: #F3F3F3;
      height: 150px;
      width: 100%;
      padding: 0;
      position: absolute;
      left: -1px;
      overflow: auto;
      border: 1px solid #DDDDDD;
      border-radius: 0 0 30px 30px;
    }
    
    .select ul li {
      display: flex;
      align-items: center;
      padding: 13px 20px;
      border-bottom: 1px solid #DDDDDD;
    }
    
    .select ul li label {
      margin-left: 15px;
    }
    
    .select ul li label:hover {
      cursor: pointer;
    }
    
    .select ul li:last-child {
      border: none;
    }
    <form>
      <!-- Скрытие поля отправки -->
      <input type="hidden" name="project_name" value="Student Stage">
      <input type="hidden" name="admin_email" value="ss.studentstage@mail.ru">
      <input type="hidden" name="form_subject" value="Заявка с формы поступления">
      <!-- -->
    
      <div class="select">
        <a href="" class="show">Выберите язык</a>
        <a href="" class="hide" style="display: none;">Готово</a>
        <ul>
          <li><input type="checkbox" name="exams[]" value="Русский язык" id="Русский язык"><label for="Русский язык">Русский язык</label></li>
          <li><input type="checkbox" name="exams[]" value="Математика" id="Математика"><label for="Математика">Математика</label></li>
          <li><input type="checkbox" name="exams[]" value="Физика" id="Физика"><label for="Физика">Физика</label></li>
        </ul>
      </div>
    
      <button>Отправить</button>
    </form>
    
    <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
    <script src="script.js"></script>

    <?php
    
    $method = $_SERVER['REQUEST_METHOD'];
    
    foreach($_POST as $key => $value) {
            if(is_array($value)){
            foreach($value as $v) {
               @$value_arr .= $v.",";
            }
            $_POST[$key] = substr($value_arr, 0, -1);
         }
      }
    
    //Script Foreach
    $c = true;
    if ( $method === 'POST' ) {
    
        $project_name = trim($_POST["project_name"]);
        $admin_email  = trim($_POST["admin_email"]);
        $form_subject = trim($_POST["form_subject"]);
    
        foreach ( $_POST as $key => $value ) {
            if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
                $message .= "
                " . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
                    <td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
                    <td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
                </tr>
                ";
            }
        }
    } else if ( $method === 'GET' ) {
    
        $project_name = trim($_GET["project_name"]);
        $admin_email  = trim($_GET["admin_email"]);
        $form_subject = trim($_GET["form_subject"]);
    
        foreach ( $_GET as $key => $value ) {
            if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
                $message .= "
                " . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
                    <td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
                    <td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
                </tr>
                ";
            }
        }
    }
    
    $message = "<table style='width: 100%;'>$message</table>";
    
    function adopt($text) {
        return '=?UTF-8?B?'.Base64_encode($text).'?=';
    }
    
    $headers = "MIME-Version: 1.0" . PHP_EOL .
    "Content-Type: text/html; charset=utf-8" . PHP_EOL .
    'From: '.adopt($project_name).' <'.$admin_email.'>' . PHP_EOL .
    'Reply-To: '.$admin_email.'' . PHP_EOL;
    
    mail($admin_email, adopt($form_subject), $message, $headers );
    
    • 0

相关问题

  • 第二个 Instagram 按钮的 CSS 属性

  • 由于模糊,内容不可见

  • 弹出队列。消息显示不正确

  • 是否可以在 for 循环中插入提示?

  • 如何将 JSON 请求中的信息输出到数据表 Vuetify vue.js?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    表格填充不起作用

    • 2 个回答
  • Marko Smith

    提示 50/50,有两个,其中一个是正确的

    • 1 个回答
  • Marko Smith

    在 PyQt5 中停止进程

    • 1 个回答
  • Marko Smith

    我的脚本不工作

    • 1 个回答
  • Marko Smith

    在文本文件中写入和读取列表

    • 2 个回答
  • Marko Smith

    如何像屏幕截图中那样并排排列这些块?

    • 1 个回答
  • Marko Smith

    确定文本文件中每一行的字符数

    • 2 个回答
  • Marko Smith

    将接口对象传递给 JAVA 构造函数

    • 1 个回答
  • Marko Smith

    正确更新数据库中的数据

    • 1 个回答
  • Marko Smith

    Python解析不是css

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5