同一页面上的多个PHP提交保留所有数据

时间:2016-09-11 05:07:11

标签: php html forms

我目前正在尝试为我的教会创建一个网站,我们可以在每个星期为歌曲列表选择歌曲。我们选择了6首歌曲,我想要设置多个表格一页,以便选择不同的标准,每首歌曲将被单独拉出,然后我将在底部创建一个主提交,这将从所有6个表单中提取数据生成最终数据。

下面是在2表格测试中输入歌曲和艺术家的示例数据,但问题是当我提交1时,另一个清空。我需要保留所有数据,这样一旦所有6个数据填入主提交,就可以获取已发布的所有数据。请尽量提供任何见解。

<?PHP           
        $Artist1 = $Song1 ="";  
    if (($_SERVER["REQUEST_METHOD"] == "POST") and isset($_POST["submit1"]) )
    {   
         if (empty($_POST["Artist1"]))
         {
            $Artist1 = "";
         } else 
         {
            $Artist1 = test_input($_POST["Artist1"]);
         }

         if (empty($_POST["Song1"]))
         {
            $Song1 = "";
         } else 
         {
            $Song1 = test_input($_POST["Song1"]);
         }           
    }
        ?>
        <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
            Artist: <input type="text" name = "Artist1" value="<?php echo $Artist1;?>">
            <br>
            Song: <input type="text" name = "Song1" value="<?php echo $Song1;?>">
            <br>
            <input type = "submit" name = "submit1" value="Submit1">
        </form>

        <?php

        echo "<h2>Your song </h2>";
        echo $Artist1;
        echo "<br>";
        echo $Song1;        
        ?>
<?PHP

        $Artist2 = $Song2 ="";
    if (($_SERVER["REQUEST_METHOD"] == "POST") and isset($_POST["submit2"]) )
    {   
         if (empty($_POST["Artist2"]))
         {
            $Artist2 = "";
         } else 
         {
            $Artist2 = test_input($_POST["Artist2"]);
         }

         if (empty($_POST["Song2"]))
         {
            $Song2 = "";
         } else 
         {
            $Song2 = test_input($_POST["Song2"]);
         }       
    }
        ?>
        <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
            Artist: <input type="text" name = "Artist2" value="<?php echo $Artist2;?>">
            <br>
            Song: <input type="text" name = "Song2" value="<?php echo $Song2;?>">
            <br>
            <input type = "submit" name = "submit2" value="Submit2">
        </form>

        <?php

        echo "<h2>Your song </h2>";
        echo $Artist2;
        echo "<br>";
        echo $Song2;

        function test_input($data) {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
        }

        ?>

1 个答案:

答案 0 :(得分:0)

在HTML中,如果您在单击提交时有一个带有动作属性的表单,则浏览器将对您设置的动作网页进行POST。在那里,你无法以这种方式做你需要的事情。

您有三种解决方案:

  1. 以单一表格加入所有表格
  2. 在每个iframe上使用iframe,您应该为一首歌创建一个表单。
  3. 当用户按下每个歌曲表单like this way
  4. 上的按钮时,使用Ajax发送歌曲