如何提交父表格内的表格? PHP

时间:2010-11-17 13:29:22

标签: php html

我有一个父表单,可以“保存”设置并更改用户放置。但我在父表单中也有一个徽标上传表单。

当我尝试上传徽标并提交上传时,似乎我的表单没有处理任何内容。如果我把上传表单放在父表单之外,它就可以了。

我无法处理php中表单下的表单? :S

<form action="" method="post">

....

My upload form:

<form id="file-form" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="POST">
            <label for="async-upload">Upload</label>
            <input type="file" id="async-upload" name="async-upload"> <input type="submit" value="Upload" name="html-upload">
            <?php wp_nonce_field('client-file-upload'); ?>
            <input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" />
</form>
</form>

不起作用。

    <form id="file-form" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="POST">
        <label for="async-upload">Upload</label>
        <input type="file" id="async-upload" name="async-upload"> <input type="submit" value="Upload" name="html-upload">
        <?php wp_nonce_field('client-file-upload'); ?>
        <input type="hidden" name="redirect_to" value="<?php echo $_SERVER['REQUEST_URI']; ?>" />
</form>

    <form>

    ...

    </form>

作品。

为什么?

5 个答案:

答案 0 :(得分:7)

Form elements may not be nested:

<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form -->

答案 1 :(得分:0)

您无法嵌套表单,Just a try为什么不删除内部的表单并在提交按钮中传递URL的操作。

答案 2 :(得分:0)

您应该首先尝试找出使您在表单中嵌套表单的原因。表单元素不应嵌套。一旦你找到了理由,就试着为你想要达到的目标寻找替代方法。

答案 3 :(得分:0)

你不能/不应该嵌套表格 - 来完成你想要达到的目标:

  1. 将上传内容拆分为单独的表单并使用AJAX处理文件移动/结果/响应以防止页面重新加载并在用户提交主表单之前显示您想要的任何效果

    < / LI>
  2. 将文件上传表单包含在其他页面中,并在iframe中引用它。

  3. 在这两者中,第一个是更好的行动方案。

答案 4 :(得分:0)

如果你&#34;思考&#34;你需要将一个表格嵌入另一个表格中,你可能需要调整你的想法。

除了表单操作状态之外,无需将表单定向到页面。您可以在一个脚本中管理所有提交。

将表单提交到文件,然后将发布的数据分开,并使用逻辑将提交按钮链接到相关的输入。

我将举一个简短的例子,所有表单元素,输入和按钮都需要一个唯一的名称。

<?php
    // setup the filterd for each field, what's expected, what to sanitize etc
    $filters = ['input_name'        => [array, of, filters],
                'another_name'      => [another, array, of, filters],
                'and_another_name'  => [yet, another, array, of, filters]
               ];
    // Pull the filtered $_POST var into your application.
    $posted = filter_var_array(INPUT_POST, $filters);

    // check the post actually has been submitted
    if (!empty($posted)) {

        // check this button was submitted
        if (!empty($posted['sumbit_button_name'])) {

            // assign associated post date to $var
            $var = $posted['input_element_name'];

        } elseif (!empty($posted['another_submit_button'])) {

            // assign more vars as needed
        } else {
            // must be the main button submitted the form.
            // associated vars set here.

        }
    }

如果您必须在代码中稍后对数据集执行不同的操作,则在elseif块的每个case中实例化var。 EG $ test = 1; $ test = 2;您可以进一步检查脚本,或者只是在elseif情况下执行不同的操作。