[英]PHP How to write values from different input types in a form in the appearing order to a mysql database
我有一个表单,其中input type="file"
和textarea
输入的数量以及这些输入的顺序是可变的; 它们被动态添加到表单中。 这些输入的值通过method="POST"
保存到 mysql 数据库中。
我已经为输入提供了相同的数组名称,例如这个name="longcopy[]"
希望它创建一个具有按出现顺序排列的值的数组。
举个例子:
<input type="file" name="longcopy[]" accept="image/*">
<textarea name="longcopy[]"></textarea>
<textarea name="longcopy[]"></textarea>
<input type="file" name="longcopy[]" accept="image/*">
<textarea name="longcopy[]"></textarea>
提交后,我希望有一个这样的数组:
Array
(
[0] => img1.jpg,
[1] => text1,
[2] => text2,
[3] => img2.jpg,
[4] => text3
)
所以数组的值可以以正确的顺序保存到数据库中。 出于某种原因,它只适用于文本区域......
有人知道如何解决这个问题吗?
文件可通过$_FILES
访问。 它们不会像<textarea/>
值那样在$_POST
中。 每组变量将被单独索引。
如果您不想保留顺序,则需要明确定义索引。
<input type="file" name="longcopy[0]" accept="image/*">
<textarea name="longcopy[1]"></textarea>
<textarea name="longcopy[2]"></textarea>
<input type="file" name="longcopy[3]" accept="image/*">
<textarea name="longcopy[4]"></textarea>
然后将$_FILES
和$_POST
放在一起:
$longcopy_files = array_map("save_file_and_return_path", diverse_array($_FILES['longcopy']));
$longcopy = $_POST['longcopy'] + $longcopy_files;
ksort($longcopy);
print_r($longcopy);
结果是:
Array ( [0] => uploads/file_1.jpeg [1] => first textarea [2] => second textarea [3] => uploads/file_2.png [4] => third textarea )
注意: diverse_array
来自这里。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.