首页 > 解决方案 > 发布带有 $_POST 和 $_FILES 变量顺序的表单

问题描述

我想发布一个包含输入和文件的表单,并按照我在表单中的相同顺序在目标页面中检索,例如:

<form id="form" method="post" action="">
   Description file: <input type="text" name="input-1" value="description 1">
   <br>
   File: <input type="file" name="input-2">
   <br>
   <br>
   Others data: <input type="text" name="input-3" value="some others unique data">
   <br>
   Description file: <input type="text" name="input-4" value="description 2">
   <br>
   File: <input type="file" name="input-5">
   <br>
   Description file: <input type="text" name="input-6" value="description 3">
   <br>
   File: <input type="file" name="input-7">
   <br>
</form>


<?php

   $post = $_POST;
   $files = $_FILES;

   foreach ( $post as $i => $value ) {
     echo "Variables passed: " . $value . "<br>";
   }

   foreach ( $files as $i => $value ) {
     echo "File: " . $value['name'] . "<br>";
   }

?>

我想要这样的输出:

Variables passed: description 1
File: file1.jpg
Variables passed: some others unique data
Variables passed: description 2
File: file2.jpg
Variables passed: description 3
File: file3.jpg

但我明白了,因为我有 2 个不同的 foreach:

Variables passed: description 1
Variables passed: some others unique data
Variables passed: description 2
Variables passed: description 3
File: file1.jpg
File: file2.jpg
File: file3.jpg

这只是一个简单的例子。我有一个动态表单,我可以在其中使用按钮以不同的顺序添加输入字段。

有没有办法保持与目标页面相同的订单?

更新:我已经编辑了我的原始帖子:输入字段文本之后总是有一个文件输入不是一个规则。

更新 2:当我单击添加按钮以插入新输入时,会自动从 mysql db 检索name类似input-1, input-2, input-3, input-4, ...内容。因此它们可以按不同的顺序排列,例如:输入 1、输入 3、输入 2、输入 4 ......

标签: phpjquery

解决方案


假设文件总是伴随着描述,描述总是伴随着文件(您需要对此进行验证)。像这样的事情应该指向正确的方向:

<form id="form" method="post" action="">
    Description file: <input type="text" name="input-1" value="description 1">
    <br>
    File: <input type="file" name="file-2">
    <br>
    Description file: <input type="text" name="input-3" value="description 2">
    <br>
    File: <input type="file" name="file-4">
    <br>
    Description file: <input type="text" name="input-5" value="description 3">
    <br>
    File: <input type="file" name="file-6">
    <br>
</form>


<?php

   $post = $_POST;
   $files = $_FILES;

   foreach ( $post as $i => $value ) {
     echo "Description: " . $value . "<br>";
     echo "File: " . $files[$i]['name'] . "<br>";
   }

?>

推荐阅读