繁体   English   中英

PHP 如何将来自不同输入类型的值以出现顺序的形式写入 mysql 数据库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM