我目前正在学习有史以来最基本的PHP。我有5个文件。
的index.php:
<html>
<head>
<title>Budget Calcule</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h2>Put in your: - </h2>
<form action="functions.php" method="post">
<h3>Income</h3>
<label>Salary: <input name="salary" type="text" /></label><br />
<h3>Outgoings</h3>
<label>Living: <input name="living" type="text" /></label><br />
<label>Insurance: <input name="insurance" type="text" /></label><br />
<label>Communication: <input name="communication" type="text" /></label><br />
<label>Loan: <input name="loan" type="text" /></label><br />
<label>Food & Drink: <input name="foodAndDrink" type="text" /></label><br />
<label>Entertaintment / Shopping: <input name="entertainmentOrShopping" type="text" /></label><br />
<label>Transport: <input name="transport" type="text" /></label><br />
<label>Other: <input name="other" type="text" /></label><br />
<input type="submit" value="Submit" />
</form>
</body>
</html>
这是我的functions.php:
<?php
include('variables.php');
if(!($_POST['Submit'])){
if(isset($_POST['salary'])){
header('Location: output.php');
return $_POST['lon'];
}else{
echo "All fields are required";
}
}
?>
这是我的变量.php:
<?php
$salary= $_POST['salary'];
$living= $_POST['living'];
$insurance= $_POST['insurance'];
$communication = $_POST['communication'];
$loan = $_POST['loan'];
$food = $_POST['food'];
$entertaintmentOrShopping = $_POST['entertaintmentOrShopping'];
$transport = $_POST['transport'];
$other= $_POST['other'];
?>
这是我的output.php文件:
<?php
include('outputFunction.php');
?>
<html>
<head>
<title>Output.php</title>
</head>
<body>
<?php myText(); ?>
</body>
</html>
最后但并非最不重要的是,这是我的outputFunction.php文件:
<?php
include('variables.php');
function myText(){
echo "Your salary per month is: " . $_POST['salary'];
}
?>
现在你在想“他为什么要把他的代码分成不同的文件?”首先,我从functions.php中拆分变量,因为我希望outputFunctions.php从variables.php中获取变量,这样我就可以回显我的`$ _POST ['salary']; 。函数myText();输出文本就好了,但它没有输出$ _POST ['salary'];。
我不知道为什么它不起作用,我只是想知道你是否可以成为我多余的眼睛,看看我是否犯了一些错误。
PS!不要因为你认为这是愚蠢而投票我的问题。我遇到了这个问题的问题,并且在没有任何进展的情况下已经工作了几个小时。
答案 0 :(得分:1)
一些事情:
您不需要包含variables.php文件。您正在访问的变量是全局的,您只是创建了未使用的重复项。页面更改后它们也会消失,因为每次页面加载都会重新声明它们。
当你引用$ _POST ['lon']而不是'loan'时,你也试图调用一个不存在的变量。
最后要真正回答你的问题:
您的myText()函数正在引用一个不再存在的变量。
您需要将functions.php和outputFunction.php以及output.php合并到一个文件中,这样变量就不会丢失,所有处理都是在不打开新文件的情况下完成的。我可以看到分离文件的原始概念,但输出文件将成为处理表单输入数据的文件。
现在在你新合并的output.php中,你应该有类似的东西:
<html>
<head>
<title>Output</title>
</head>
<body>
<?php
if(isset($_POST['Submit'])) {
if(isset($_POST['salary'])) {
echo "Your salary per month is: " . $_POST['salary'];
}
} else {
echo "All fields required.";
}
?>
</body>
</html>
这意味着只有两个文件 - 您的表单页面和此页面。
答案 1 :(得分:0)
还有一些提示:
如果您想检查表单是否已提交,它看起来像这样:
if(isset($_POST['Submit'])){ ... }
此外,您应该在submit-Button中添加name =“”属性:
<input type="submit" name="Submit" value="Submit" />
变量.php是什么?您不使用任何这些变量。
答案 2 :(得分:0)
当您通过header()重定向用户时,存储在$ _POST数组中的数据将丢失。
您可以直接重定向到ouput.php
<form action="output.php" method="post">
做这样的事情:
<?php
include('outputFunction.php');
if(isset($_POST['Submit'])) {
if(isset($_POST['salary'])) {
?>
<html>
<head>
<title>Output.php</title>
</head>
<body>
<?php myText(); ?>
</body>
</html>
<?php
} else {
echo "All field required";
}
}
?>
顺便说一下,你可以随时查看$ _POST包含print_r($_POST);
的内容
这对调试非常有用。