Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.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 我需要填写一张表格,进入下拉列表中选择的页面,然后使用表格中的其他信息填充所选页面_Php_Forms_Redirect_Populate - Fatal编程技术网

Php 我需要填写一张表格,进入下拉列表中选择的页面,然后使用表格中的其他信息填充所选页面

Php 我需要填写一张表格,进入下拉列表中选择的页面,然后使用表格中的其他信息填充所选页面,php,forms,redirect,populate,Php,Forms,Redirect,Populate,我之前问了两个问题,其中一个是基于您在表单下拉列表中选择的内容。现在我需要这两样东西来为同一种形式工作 从表单中获取信息并使用其填充下一页的代码为: <?php $firstname = $_GET['personsName']; echo "My Name is" .$firstname; ?> 我需要这两种方法在同一种形式下工作,我只是还没弄明白。我尝试的是: <form action="<?=$pages?>" method="POST"> <i

我之前问了两个问题,其中一个是基于您在表单下拉列表中选择的内容。现在我需要这两样东西来为同一种形式工作

从表单中获取信息并使用其填充下一页的代码为:

<?php
$firstname = $_GET['personsName'];
echo "My Name is" .$firstname;
?>
我需要这两种方法在同一种形式下工作,我只是还没弄明白。我尝试的是:

<form action="<?=$pages?>" method="POST">
<input type="text" name="name" /><br />
<select name="letter">

<option value="Page 1">
Page 1
</option>

<option value="Page 2">
Page 2
</option>

<option value="Page 3">
Page 3
</option>

</select>
<input type="submit" value"Print" />
</form>

执行重定向时,您将丢失发送到服务器的数据

基本上,您有3种选择:

  • 使用cookie或类似工具将数据存储在客户机上(对于一些简单的东西来说,这会带来很大的开销)
  • 将数据服务器端存储在会话或类似会话中(甚至更高的开销)
  • 通过您重定向到的URL传递数据
比如:

if (array_key_exists($_POST['dropdown-name'], $pages)) {
    header("Location: " . $pages[$_POST['dropdown-name']] . "?personsName=" urlencode($_POST['name']));
} else {
    //Blah
}
这似乎是你简单例子的最佳答案。如果有很多数据,或者更复杂,请考虑使用上面的2个选项之一: 注意:在您调用变量
name
的表单上,在接收该变量的pae上,您调用了该变量
PersonName
——请注意URL中从一个变量到另一个变量的映射

Javascript解决方案(已测试):


所以演示
函数UpdateFormAction(){
var form=document.getElementById('MyForm');
var list=document.getElementById('PageList');
var desiredAction=list.options[list.selectedIndex].value
形式行动=期望行动;
document.getElementById('Target')。innerHTML='表单操作设置为:'+desiredAction;
}
名称:
第页: 第1页 第2页 第3页
未修改的窗体操作
以实际形式,我将获得10条信息来填充重定向页面。使用这种方法是不是太多了?URL的长度是有限制的(对于IE6来说是1024个字符,如果我没记错的话,对于所有后来的/更现代的浏览器来说至少是4096个),所以这取决于数据是什么。简单的输入字段应该是好的,但是大的文本可能是个问题。当然,你可以使用一些简单的JavaScript,这样当下拉改变时,表单的“代码”>动作< /代码>会变成适当的页面——这样,中间没有PHP步骤,你直接提交到所需的页面。这将是完美的。javascript解决方案!你能给我一个简单的例子吗?我刚刚把它重构成一个函数,以提高可读性。
<form action="<?=$pages?>" method="POST">
<input type="text" name="name" /><br />
<select name="letter">

<option value="Page 1">
Page 1
</option>

<option value="Page 2">
Page 2
</option>

<option value="Page 3">
Page 3
</option>

</select>
<input type="submit" value"Print" />
</form>
<script type="text/javascript">
$(function UpdateFormAction(){
alert('Launched event handler');
var form = document.getElementById('MyForm');
var list = document.getElementById('PageList');
alert('List item numer ' + list.selectedIndex);
var desiredAction = list.options[list.selectedIndex].value
alert('Desired action set to ' + desiredAction);
form.action = desiredAction;
});
</script>
<form id="MyForm" action="letter.php" method="POST">
<input type="text" name="name" /><br />
<select id="PageList" name="letter" onchange="UpdateFormAction();">

<option value="letter.php">Page 1</option>
<option value="letter2.php">Page 2</option>
<option value="letter3.php">Page 3</option>
</select>
<input type="submit" value"Print" />
</form>
if (array_key_exists($_POST['dropdown-name'], $pages)) {
    header("Location: " . $pages[$_POST['dropdown-name']] . "?personsName=" urlencode($_POST['name']));
} else {
    //Blah
}
<html>
    <head>
        <title>SO Demo</title>
    </head>
    <body>

    <script type="text/javascript">
        function UpdateFormAction(){
            var form = document.getElementById('MyForm');
            var list = document.getElementById('PageList');
            var desiredAction = list.options[list.selectedIndex].value
            form.action = desiredAction;
            document.getElementById('Target').innerHTML = 'Form action set to: ' + desiredAction;
        }
    </script>

    <form id="MyForm" action="letter.php" method="POST">
        Name: <input type="text" name="name" /><br />
        Page: <select id="PageList" name="letter" onchange="UpdateFormAction();">
            <option value="letter.php">Page 1</option>
            <option value="letter2.php">Page 2</option>
            <option value="letter3.php">Page 3</option>
        </select>
        <input type="submit" value="Print" /><br/>
        <span id="Target">Form action unmodified</span>
    </form>
    </body>
</html>