【问题标题】:Uploading data from separate forms in HTML with PHP使用 PHP 从 HTML 中的单独表单上传数据
【发布时间】:2015-11-19 14:39:24
【问题描述】:

我创建了三个单独的表单,并为每个表单指定了一个 ID。用户按下下一个后,当前表单淡出,第二个表单淡入。用户再次按下下一个后,第二个表单淡出,下一个表单淡入。在第三个表单中,我包含一个应该提交的提交按钮我所有的数据到我的数据库。

我在通过三种不同的表单传递信息时遇到问题,想知道是否有人对我如何更轻松地完成此任务有任何想法。

示例代码:

<form id ="1">
<input type = "text"/>
</form>
<form id = "2">
<input type="checkbox"/>
</form>
<form id = "3" action ="upload.php">
<input type = "file">
<input type = "submit">
</form>

EDIT* 添加更多信息:一旦用户按下提交,从表单 1 和表单 2 传入的信息都应该发布到 upload.php 中。到目前为止,我不确定如何做到这一点。

【问题讨论】:

  • 你是用jquery做的吗..?
  • 淡入淡出是用 Jquery 完成的
  • 简单使用jquery - 序列化函数

标签: javascript php jquery html forms


【解决方案1】:

您可以使用如下的单一表单来解决此问题。

<form id ="1" action ="upload.php">
<div class="first-form">
<input type = "text"/>
</div>
<div class="second-form">
<input type="checkbox"/>
</div>
<div class="third-form">
<input type = "file">
<input type = "submit">
</div>
</form>

有三个不同类的 div。您必须隐藏和显示 div 而不是表单。

【讨论】:

  • 谢谢你解决了我的问题,我也遇到了同样的问题。
【解决方案2】:

如果你想在没有 ajax 的情况下使用普通的 php,试试这个。

<form id ="1">
        <input type="text" name="form1" />
    </form>
    <form id = "2">
        <input type="checkbox" name="form2"/>
    </form>
    <form id = "3" action="file.php" method="post">
        <input type = "text" name="form3">
        <input type = "submit" id="sub">
    </form>

脚本

$(document).on("click", "#sub", function () {
    $('#1 :input').not(':submit').clone().hide().appendTo('#3');
    $('#2 :input').not(':submit').clone().hide().appendTo('#3');
    return true;
});

【讨论】:

    【解决方案3】:

    你可以使用jQuery的serialize函数来实现:

    您的 html 文件:

    <form id="1">
        <input type="text" name="name" />
    </form>
    <form id="2">
        <input type="checkbox" name="chk" />
    </form>
    <form id="3">
        <input type="file" name="file">
        <input type="submit">
    </form>
    

    添加此脚本(一种 AJAX 方式):

    <script>
    $(document).ready(function(){
        $("#3").submit(function(e) {
            e.preventDefault();
            $.ajax({
              type: "POST",
              url: "upload.php",
              data: $('#1, #2, #3').serialize(),
              success: function(res) {
                    if(res==="Success"){
                        alert("Success!!!");
                    }
                }
            });      
        });
    });
    
    </script>
    

    更新

    正如@Santosh Patel 所建议的,我也建议将表单内容包含在 div 中。但既然你已经想出了一个设计,我建议你使用 jQuery。

    【讨论】:

    • 这太棒了。只是想在我去尝试实施之前仔细检查一下。在我的upload.php 文件中,我可以轻松地调用$name = $_POST['name'] 和$check = $_POST['chk'],即使它们来自不同的形式?只是想确保我正确理解你
    • 是的,和你平时做的一样
    • 我正在查找 serialize() 的文档,但找不到有关此问题的任何信息,但是如果我有两个相同的名称属性会发生什么?
    • 多个控件的同名属性不好。在这种情况下,您的第一个值会被第二个值覆盖,尽管这两个值都会被发布。在这种情况下,至少使用一个方括号将其放入数组中 - stackoverflow.com/questions/7880619/…
    猜你喜欢
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 2017-10-14
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 2011-11-23
    相关资源
    最近更新 更多