Php 似乎无法在同一页上使用$\u POST两次
我试图访问XML中的不同元素,以便可以在网页中编辑它们或添加新元素。我使用PHP循环遍历父标记并显示在一个选择列表中,然后使用submit按钮发布所选元素-没有问题 然后,我使用PHP查找所选元素子元素的所有名称,并在另一个选择列表表单中显示这些名称。这将正确显示列表中的子项。但是,当我点击“提交”时,如果我回显$\u POST(“部分”),但清除了上一个$\u POST(“页面”),则会正确显示 我认为这与使用action“”有关,但有趣的是,如果我更改其中一个,使其按预期工作。事实上,我想再次进入低年级儿童的第三步,所以不能将该解决方案作为一个狡猾的解决办法 我不会发布XML,因为它包含敏感数据,您可以相信,我正在逐步解决这一问题,对我来说最大的问题是php清除$u帖子 请放轻松-我在四月份学会了如何制作一个基本的html网页 尝试了一系列不同的表单操作,包括它所在的.php,以及Php 似乎无法在同一页上使用$\u POST两次,php,html,xml,Php,Html,Xml,我试图访问XML中的不同元素,以便可以在网页中编辑它们或添加新元素。我使用PHP循环遍历父标记并显示在一个选择列表中,然后使用submit按钮发布所选元素-没有问题 然后,我使用PHP查找所选元素子元素的所有名称,并在另一个选择列表表单中显示这些名称。这将正确显示列表中的子项。但是,当我点击“提交”时,如果我回显$\u POST(“部分”),但清除了上一个$\u POST(“页面”),则会正确显示 我认为这与使用action“”有关,但有趣的是,如果我更改其中一个,使其按预期工作。事实上,我想再
<?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=“
”。