PHP 如何将表单中不同输入类型的值按出现顺序写入mysql数据库?

问题描述 投票:0回答:1

我有一个表格,其中的 input type="file"textarea 输入和这些输入的顺序是可变的;它们被动态地添加到一个表单中。这些输入的值会被保存到mysql数据库中。method="POST".

我给了输入相同的数组名称,就像这样 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
)

这样数组的值就可以按照正确的顺序保存到数据库里了 不知为什么,它只在textareas上有效......。

有人知道如何解决这个问题吗?

php mysql input pdo
1个回答
0
投票

文件可以通过以下方式访问 $_FILES. 他们不会在 $_POST 喜欢 <textarea/> 值。每一组变量都将被单独索引。

如果你不想保留顺序,你需要明确地定义索引。

<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 函数来自 此处.

© www.soinside.com 2019 - 2024. All rights reserved.