【问题标题】:PHP How to write values from different input types in a form in the appearing order to a mysql databasePHP如何按出现顺序将来自不同输入类型的值写入mysql数据库
【发布时间】:2020-05-05 21:00:13
【问题描述】:

我有一个表单,其中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 中。你需要在你的表单上enctype="multipart/form-data"
  • 如果是变量,你怎么知道哪个元素持有哪个值?坦率地说,这是一个非常糟糕的主意。你必须重新考虑你的设计。
  • enctype="multipart/form-data" 我有。感谢您的回答,看来无法按照我想要的方式完成……
  • @YourCommonSense 谢谢。我想找到一种方法,让人们以灵活的顺序和灵活的数量创建一种编写文本和发布图像的方式……
  • 灵活的金额是公平的。灵活的订单没有任何意义。您的数据库结构是否也“灵活”?

标签: php mysql input


【解决方案1】:

文件可通过$_FILES 访问。它们不会像 &lt;textarea/&gt; 值那样在 $_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 函数来自here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多