我认为我的问题可能在于我尝试初始化脚本的方式。我正在使用的提交按钮似乎只是清除表单,而不显示任何结果。我也认为两行可能存在问题“$ message = $ _POST ['textarea'];”和“echo $ result + $ message;”我不确定这是否是在文本区域框中生成结果的正确方法,以及在单独的文本框中显示里程驱动和总成本。我想要这个按钮来完成所有三个任务。有没有办法用PHP有效地做到这一点?
编辑:已修正的代码版本。谢谢@Fred-ii - !
<?php
if(isset($_POST['submit'])) {
$x = $_POST['beginningOdometerReading'];
$y = $_POST['endingOdometerReading'];
$z = $_POST['daysRentedCar'];
$miles = $y - $x;
$result = (15 * $z) + ($miles * 0.12);
$message = $_POST['textarea'];
echo $result + $message; }
?>
<html>
<head>
</script>
</head>
<body>
<div align="center">
<hr><br>
<form action="index4.php" method="post" name id="Main">
<input type="text" id="name" name="customerName" placeholder="Enter your name here" size="30px">
<br><br>
<input type="text" id="address" name="customerAddress" placeholder="Enter your street address here" size="50px">
<br><br>
<input type="text" id="city" name="customerCity" placeholder="What city do you live in?" size="30px">
<br><br>
<input type="number" id="zip" name="customerZip" placeholder="Enter your zip code" size="30px">
<br><br>
<input type="number" id="bOdometer" name="beginningOdometerReading" placeholder="Start odometer reading" size="80px">
<br><br>
<input type="number" id="eOdometer" name="endingOdometerReading" placeholder="End odometer reading" width="80px">
<br><br>
<input type="number" id="daysRented" name="daysRentedCar" placeholder="Days rented" size="50px">
<br><br>
<input type="submit" id="submit" value="Submit"/>
<br><br>
Miles Driven: <input type="number" id='miles' min="1" max"10000" readonly="" />
Total Cost: <input type="number" id='result' min="1" max"10000" readonly="" />
<br><br>
Summary: <textarea cols="30" rows="2" name="thetextarea" id="textarea"> </textarea>
<br><br>
<input type="reset" value="Reset">
</form>
<hr>
</div>
</body>
答案 0 :(得分:3)
这里有一些问题。
条件陈述存在的一个问题是:
if(isset($_POST['submit'])) {
它正在寻找一个名为“submit”的命名元素,你的提交按钮没有命名。
<input type="submit" id="submit" value="Submit"/>
将其命名为:
<input type="submit" name="submit" id="submit" value="Submit"/>
你可能一直依赖于“id”。在这种情况下,你不能。
这就是你回到空白页面的原因。
使用else{ echo "Error"; }
会回显“错误”。
例如:
<?php
if(isset($_POST['submit'])) {
$x = $_POST['beginningOdometerReading'];
$y = $_POST['endingOdometerReading'];
$z = $_POST['daysRentedCar'];
$miles = $y - $x;
$result = (15 * $z) + ($miles * 0.12);
$message = $_POST['textarea'];
echo $result + $message; }
else { echo "Error"; }
?>
然后你有
$message = $_POST['textarea'];
但您的textarea名为name="thetextarea"
。
您还使用了错误的连接运算符+
echo $result + $message;
需要是一个点。 +
符号是串联的JS / C ++方法,如果其中一个变量包含字符串。
echo $result . $message;
或
echo $result . " ". $message;
如果它是两个变量的数学方程式,那么是;这本来是一个有效的运算符,只是不是在这种情况下,因为你试图从$message
变量回应,该变量是“textarea”,是“text”而不是整数。
旁注:为了确保您确实将整数传递给POST数组,请向其添加(int)
。示例:$x = (int)$_POST['beginningOdometerReading'];
编辑:我在表单中发现了一些错误。
您有2个max"10000"
个实例,它缺少等号max="10000"
并且您可能缺少这两个的名称属性(我已经概述了=
的{{1}}符号。
max"10000"
如果您将此标记为依赖JS,请编辑您的问题并添加该代码。但是,PHP中没有代码支持此功能。
Miles Driven: <input type="number" id='miles' min="1" max"10000" readonly="" />
Total Cost: <input type="number" id='result' min="1" max"10000" readonly="" />
<form>
您需要相应地调整实际代码。
重写:
name id="Main"
错误报告会发出两个未定义的索引通知。
将error reporting添加到文件的顶部,这有助于查找错误。
<?php
if(isset($_POST['submit'])) {
$x = $_POST['beginningOdometerReading'];
$y = $_POST['endingOdometerReading'];
$z = $_POST['daysRentedCar'];
$miles = $y - $x;
$result = (15 * $z) + ($miles * 0.12);
$message = $_POST['thetextarea'];
echo $result . " " . $message; }
else { echo "Error"; }
?>
旁注:错误报告应仅在暂存时完成,而不是生产。
答案 1 :(得分:0)
Try to give name for input type `submit` button like
<input type="submit" name="submit" id="submit" value="Submit"/>
并尝试从 action=''
中删除,因为当您直接提交时需要index4.php
和
表单声明中的错误,您也没有提供
name
,请将其留空name id="Main"
<form action="index4.php" method="post" name="Main" id="Main">
并使用像
这样的echo语句
echo $result,$message; }