我遇到了一个问这个问题的人,
如何在页面上传递变量(在同一页面上?)。
我考虑过这个但是想不出自己怎么做,所以我想知道它是否可能?
所以他试图做的是在$a
的底部值的同时更改页面顶部$a
的值。
有可能吗?如果是这样的话?
先谢谢。
<?php
echo("Begining " . $a);
?>
<html>
<head>
<title>Test Variables</title>
</head>
<body>
<form>
<form action="<?=$PHP_SELF?>" method="POST">
<input type="TEXT" name="testf" size="10">
<input type="submit" name = "submit" value = "submit"></form><?php
if ("submit" == $submit) {
$a = $testf;
echo( "Bottom " . $a);
}
?>
</body></html>
编辑:
看到答案后,也许可以用jquery,ajax或javascript完成?
答案 0 :(得分:1)
不,您需要将if
语句移到顶部,并且您计算的任何需要在if语句中的变量也在顶部。
类似的东西:
<?php
if ("submit" == $submit) {
$a = $testf;
}
echo("Begining " . $a);
?>
<html>
<head>
<title>Test Variables</title>
</head>
<body>
<form>
<form action="<?=$PHP_SELF?>" method="POST">
<input type="TEXT" name="testf" size="10">
<input type="submit" name = "submit" value = "submit"></form><?php
echo( "Bottom " . $a);
?>
</body></html>
在开始输出HTML之前,拥有所有逻辑被认为是一种很好的做法。理想情况下,您的HTML应具有尽可能少的逻辑。
更多信息:https://stackoverflow.com/a/95027/320615和https://stackoverflow.com/a/1088791/320615
答案 1 :(得分:1)
你可能会向后弯腰以某种方式完成这项工作。
但真正的答案是在开始输出任何HTML之前处理所有业务逻辑 。您需要在代码的开头决定当前请求是否是表单提交,并相应地设置变量和HTML模板。切勿将业务逻辑混合到HTML模板的中间。
答案 2 :(得分:0)
您必须使用$_POST['testf']
和$_POST['submit']
变量。
并检查isset是否存在:php manual isset
<?php
echo("Begining " . $a);
?>
<html>
<head>
<title>Test Variables</title>
</head>
<body>
<form>
<form action="<?=$PHP_SELF?>" method="POST">
<input type="TEXT" name="testf" size="10">
<input type="submit" name = "submit" value = "submit"></form><?php
if ("submit" == $submit) {
$a = $_POST['testf'];
echo( "Bottom " . $a);
}
?>
</body></html>
答案 3 :(得分:-1)
你不能用PHP做到这一点,但是一旦使用javascript(和jquery使其更容易)完全加载,你就无法改变HTML。
编辑:好的,我第一次快速阅读你的代码:
我不理解echo
标记之前的<html>
,似乎不对。您还希望将POST var的值赋予$a
,所以只需:
if(isset($_POST['testf'])) {
echo $_POST['testf'];
}