PHP/HTML post未按预期工作
我对PHP非常陌生,正在编写一个小型货币转换器页面进行练习。我的PHP和HTML代码都在一个名为“index.PHP”的页面中:PHP/HTML post未按预期工作,php,html,forms,input,currency,Php,Html,Forms,Input,Currency,我对PHP非常陌生,正在编写一个小型货币转换器页面进行练习。我的PHP和HTML代码都在一个名为“index.PHP”的页面中: 货币转换器 电流转换器 通过下面的输入添加项目。 单击以标记完成(已完成的项目将以绿色背景标记。) 要删除任务,请单击X。 双击以编辑项目,它将移动到“添加项目”框 启动 美元 英镑 欧元 转换 美元 英镑 欧元 数量: 我的问题是,它似乎不在服务器上运行。我曾经有一个只读输入,我试图通过phpecho更新它作为值,但当我单击submit时,它不起作用。然后我用一
货币转换器
电流转换器
通过下面的输入添加项目。
单击以标记完成(已完成的项目将以绿色背景标记。)
要删除任务,请单击X。
双击以编辑项目,它将移动到“添加项目”框
启动
美元
英镑
欧元
转换
美元
英镑
欧元
数量:
我的问题是,它似乎不在服务器上运行。我曾经有一个只读输入,我试图通过phpecho
更新它作为值,但当我单击submit时,它不起作用。然后我用一个H2元素替换了输入,该元素包含echo
我的目标是在不借助javascript/ajax的情况下,通过HTML和PHP完成所有操作
值中的回显
不会返回$converted
的值,有什么特别明显的原因吗?我宁愿使用CSS中的只读输入和样式,也不愿使用H2元素,但我想这两者都可以
期待着你们这些好人的想法。谢谢 问题:您使用的是
=
在所有if条件下,==
用于比较变量的值和类型。在您的例子中,$\u POST['your\u variable']
是字符串类型,您正在将字符串与数字进行比较<代码>如果($origCurr==1)。读取比较运算符
解决方案:类型转换变量或使用
=
仅比较值if($origCurr==1)
问题:在所有if条件下,您使用的是==
,==
用于比较变量的值和类型。在您的例子中,$\u POST['your\u variable']
是字符串类型,您正在将字符串与数字进行比较<代码>如果($origCurr==1)。读取比较运算符
解决方案:类型转换变量或使用
=
仅比较值<代码>如果($origCurr==1)Rohit与发生此错误的原因相符。我还想为转换函数提供这个替代方法,它仍然需要考虑输入变量的类型
函数convertCurrency($input、$origCurr、$convertCurr){
$conversionTable=数组(
“1'=>数组('2'=>0.78,'3'=>0.9),
“2'=>数组('1'=>1.29,'3'=>1.16),
“3'=>数组('2'=>0.86,'1'=>1.11)
);
返回$input*($origCurr!==$convertCurr)?$CONVERTIONTABLE[$origCurr][$convertCurr]:1);
}
Rohit很准确地说明了发生此错误的原因。我还想为转换函数提供这个替代方法,它仍然需要考虑输入变量的类型
函数convertCurrency($input、$origCurr、$convertCurr){
$conversionTable=数组(
“1'=>数组('2'=>0.78,'3'=>0.9),
“2'=>数组('1'=>1.29,'3'=>1.16),
“3'=>数组('2'=>0.86,'1'=>1.11)
);
返回$input*($origCurr!==$convertCurr)?$CONVERTIONTABLE[$origCurr][$convertCurr]:1);
}
不错的选择,我想你错过了第三个案例<代码>美元@Rohit true!我已经更新了函数,以反映当$origCurr==$converCurr
为什么它应该返回1时的情况?它应该是输入值return($origCurr!==$convertCurr)$输入*$conversionTable[$origCurr][$convertCurr]:$input因为该代码会导致转换为自身的货币与自身相乘。代码是错误的,它需要另一组括号。好的选择,我想你错过了第三个案例<代码>美元
@Rohit true!我已经更新了函数,以反映当$origCurr==$converCurr
为什么它应该返回1时的情况?它应该是输入值return($origCurr!==$convertCurr)$输入*$conversionTable[$origCurr][$convertCurr]:$input因为该代码会导致转换为自身的货币与自身相乘。代码是错误的,它需要另一组括号。啊。是的,我知道==vs===但我错误地假设,因为我使用了输入类型number,它会在不转换它的情况下拉入一个int。Doh。谢谢啊。是的,我知道==vs===但我错误地假设,因为我使用了输入类型number,它会在不转换它的情况下拉入一个int。Doh。谢谢
<?php
$originalAmount = $_POST["originalAmount"];
$convertedAmount = 0.00;
$currency1 = $_POST["currency1"];
$currency2 = $_POST["currency2"];
function convertCurrency($input, $origCurr, $convertCurr) {
if ($origCurr === 1){
if ($convertCurr === 2){
$convertedAmount = $input * 0.78;
return $convertedAmount;
}
elseif ($convertCurr === 3){
$convertedAmount = $input * 0.90;
return $convertedAmount;
}
else {
$convertedAmount = $input;
return $convertedAmount;
}
}
if ($origCurr === 2){
if ($convertCurr === 1){
$convertedAmount = $input * 1.29;
return $convertedAmount;
}
elseif ($convertCurr === 3){
$convertedAmount = $input * 1.16;
return $convertedAmount;
}
else {
$convertedAmount = $input;
return $convertedAmount;
}
}
if ($origCurr === 3){
if ($convertCurr === 2){
$convertedAmount = $input * 0.86;
return $convertedAmount;
}
elseif ($convertCurr === 1){
$convertedAmount = $input * 1.11;
return $convertedAmount;
}
else {
$convertedAmount = $input;
return $convertedAmount;
}
}
}
$convertedAmount = convertCurrency($originalAmount, $currency1, $currency2);
?>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Currency Converter</title>
<!--jQuery-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<!--Bootstrap 3-->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<!--Custom CSS-->
<link href="main.css" type="text/css" rel="stylesheet">
</head>
<body>
<div class="container">
<!--Header Row-->
<div class="row page-header">
<div class="col-xs-6">
<h1>Currenccy Converter</h1></div>
<div class="col-xs-6">
<p>Add items via the input below.
<br>Click to mark complete (Completed Items will be marked with a green background.)
<br>To delete a task, Click on the X.
<br>Double Click to edit the item, it will be moved to the add item box</p>
</div>
</div>
<!--Add Task / Input Row-->
<div class="row">
<div class="col-xs-12 well">
<h2 class="text-xs-center"><?php print $convertedAmount; ?></h2>
<form class="form-control" id="converterForm" action="index.php" method="post">
<select name="currency1" id="currency1">
<option value="zzz">Starting</option>
<option value="1">USD</option>
<option value="2">GBP</option>
<option value="3">EUR</option>
</select>
<select name="currency2" id="currency2">
<option value="zzz">Converted</option>
<option value="1">USD</option>
<option value="2">GBP</option>
<option value="3">EUR</option>
</select>
<div class="form-group">
<label for="originalAmount" id="origLabel">Amount:</label>
<input id="originalAmount" type="number" value="0.00" name="originalAmount">
<input type="submit" id="submit" name="submit" value="SUBMIT">
</div>
</form>
</div>
</div>
</div>
</body>
</html>