Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 似乎无法在同一页上使用$\u POST两次_Php_Html_Xml - Fatal编程技术网

Php 似乎无法在同一页上使用$\u POST两次

Php 似乎无法在同一页上使用$\u POST两次,php,html,xml,Php,Html,Xml,我试图访问XML中的不同元素,以便可以在网页中编辑它们或添加新元素。我使用PHP循环遍历父标记并显示在一个选择列表中,然后使用submit按钮发布所选元素-没有问题 然后,我使用PHP查找所选元素子元素的所有名称,并在另一个选择列表表单中显示这些名称。这将正确显示列表中的子项。但是,当我点击“提交”时,如果我回显$\u POST(“部分”),但清除了上一个$\u POST(“页面”),则会正确显示 我认为这与使用action“”有关,但有趣的是,如果我更改其中一个,使其按预期工作。事实上,我想再

我试图访问XML中的不同元素,以便可以在网页中编辑它们或添加新元素。我使用PHP循环遍历父标记并显示在一个选择列表中,然后使用submit按钮发布所选元素-没有问题

然后,我使用PHP查找所选元素子元素的所有名称,并在另一个选择列表表单中显示这些名称。这将正确显示列表中的子项。但是,当我点击“提交”时,如果我回显$\u POST(“部分”),但清除了上一个$\u POST(“页面”),则会正确显示

我认为这与使用action“”有关,但有趣的是,如果我更改其中一个,使其按预期工作。事实上,我想再次进入低年级儿童的第三步,所以不能将该解决方案作为一个狡猾的解决办法

我不会发布XML,因为它包含敏感数据,您可以相信,我正在逐步解决这一问题,对我来说最大的问题是php清除$u帖子

请放轻松-我在四月份学会了如何制作一个基本的html网页

尝试了一系列不同的表单操作,包括它所在的.php,以及

<?php echo $_SERVER['PHP_SELF']; ?>" >
“>
如前所述,使用一个作为GET和一个POST似乎可以解决这个问题

<?php

//pages processing and put into an array

$pages_array = array();

$xml = simplexml_load_file('XML/links.xml') or die ("Failed to load");

        foreach($xml->page as $page){

            array_push($pages_array, $page->name);

        }

$pagecount = count($pages_array);



?>

<form name="page_select" method="POST" action="">  

<select name="Page">

<?php   

        for ($i = 0; $i < $pagecount; $i++){

      print '<option>'.$pages_array[$i].'</option><br>';

    }       
?>

</select>

<input type="Submit" name="edit_page" value="edit"/>  

</form> 

<br></br>

<?php

       // save page selected into $pg and display page being edited

       $pg = $_POST["Page"]; 

       echo 'YOU ARE EDITTING PAGE: '.$pg;
?>



******然后再往下看*****

<?php

        // section processing

    $section_array = array();

    $xml = simplexml_load_file('XML/links.xml') or die ("Failed to load");

        foreach($xml->page as $page){

            if($page->name == $pg){

                     foreach($page->sections->section as $section){

                       array_push($section_array, $section->name);

                      }
            }
         }      

    $sectioncount = count($section_array);

?>

<form name="section_select" method="POST" action="">  

<select name="Section">

       <?php    

        for ($i = 0; $i < $sectioncount; $i++){

            print '<option>'.$section_array[$i].'</option><br>';

        }

    ?>


</select>

<input type="Submit" name="edit_section" value="edit"/>  

</form> 

<br></br>

    <?php

        $sct = $_POST["Section"]; 

        echo 'YOU ARE EDITTING SECTION: '.$sct;

    ?>




我希望在提交第二个表单后,输出能够记住这两个数组,但是由于第一个POST变量被擦除,这意味着我也会丢失第二个数组,因为当它返回到$section\u array$page->name can never=$pg时,因为$pg现在是空的

,每次提交表单时,页面都会被重新加载,PHP将只有从触发页面重新加载的表单访问POST变量。这意味着在提交第二个表单时,$\u POST['page']将不再存在

解决此问题的方法有很多,这里是一个相当简单的方法。在第二个表单中,创建一个包含$\u POST['Page']变量值的隐藏输入。这样,当提交第二个表单时,页面值将传播到流程的下一步。将此代码添加到section\u select表单中就足够了:

<?php

if(isset($_POST['Page'])) {
    ?>
    Page: <?php echo $_POST['Page'] ?>
    <input type="hidden" name="Page" value="<?php $_POST['Page'] ?>" />
    <?php
}

?>

第页:

“第一个POST变量被擦除”是什么意思?这是在哪里发生的?请原谅我缺乏术语。我提交第一个表单,然后将其写入变量$pg=$\u POST[“Page”]。当我提交第二个表单时,$\u POST[“Section”]工作正常,但是$\u POST[“Page”]已清除。我猜这与我的全部操作顺序有关,或者与刷新页面有关-但我无法解决这一问题。您一次只能提交一个表单。
$\u POST
的内容将取决于用户提交的表单。每次提交表单时,
$\u POST
仅包含从该表单中获取字段。我不确定我是否遵循了您试图执行的操作,但您始终可以添加(或为此而可见)因此,如果您知道
$pg
,您可以将其作为隐藏输入包含在另一个表单中,当该表单发布时,该值将再次出现在您的
$\u POST
中。如果建议您使用
GET
,则需要使用相同的方法-在表单中包含当前值打开,如
action=“foo.php?pg=“
”。