php 和 html 单位转换器/选择选项值
php and html unit converter / selecting option value
我是 PHP 的初学者,我认为通过开始简单的项目来学习它会很好。我选择从一个简单的单位转换器开始。
我不想索取代码,我只是想寻求一些帮助,以弄清楚要使用什么方法或下一步应该考虑什么步骤。或者,如果有人有 link 类似的东西那就太好了,我自己找不到任何东西。
思路是这样的:用户将输入值和原始单位,然后我想打印几个不同单位的值。这是我目前所拥有的:
html
<div id="converter">
<h2>Unit converter</h2>
Convert from:
<form method="post" action="" class="inline">
<select name="unit">
<option value="km">kilometers</option>
<option value="m">meters</option>
<option value="dm">decimeters</option>
<option value="cm">centimeters</option>
<option value="mm">milimeters</option>
</select>
<input type="text" name="value" placeholder="input value here" autocomplete="off" required>
<input type="submit" value="convert"/>
</form>
<?php
$unit = isset($_POST['unit']) ? $_POST['unit'] : false;
$value = isset($_POST['value']) ? $_POST['value'] : false;
/* the above two lines are copied from a solution for something similar
that I found online. I know that they're not doing what I would like to do.
I want $unit to hold the unit the user chose, and $value to hold the value the
user put in. */
?>
</div>
所以理想情况下我希望能够输入例如 20,选择 "meters",单击转换然后打印“0.02 km,200 dcm,2000 cm,20000 mm”。
目前我被困在这个问题上:如何检查选择了哪个 "original unit"?换句话说,我如何检查用户选择的是公里还是米还是任何其他单位并相应地编辑我的输出?
并且:如何打印输出?
我知道我应该以某种方式使用 $_POST 但我不确定如何使用。
再说一遍,我不是要代码(尽管有些代码会很好 ;)),而是要一个指针。我读了一本关于 PHP 的书,但对这方面帮助不大。
提前谢谢你。对不起,如果我犯了任何错误,英语不是我的母语。
来自顽固的 PHP 编码人员用 php 做这些事情正在成为遗留和过时的,因为当用户点击提交时整个页面必须重新加载。
使用 AngularJS 应用程序可以更轻松地完成上述操作。这就是 web 的发展方向是 SPA(单页应用程序),其中页面不必重新加载并且结果是即时的。
在尝试学习 AngularJS 之前,您需要良好的 Javascript 知识和 MVC(模型、视图控制器)编程概念。但这是值得的!
我建议使用 w3schools 进行基础速成课程。但是谷歌搜索总是会产生很多有价值的资源。
但是回到回答你的问题:
你的页面名称需要是index.php,这样你的表单就可以通过action属性post到index.php:
<form method="post" action="index.php" class="inline">
然后您可以执行以下操作以查看 post 编辑到页面的内容,这将以清晰易读的方式打印所有变量(并且易于注释掉):
echo "<pre>";print_r($_REQUEST);echo "</pre>";
然后你会看到 $_REQUEST['unit'] 应该给你你需要的变量,然后使用 switch 语句为每个选择做单独的计算
你在说类似的事情吗?:
<div id="converter">
<h2>Unit converter</h2>
Convert from:
<form method="post" action="" class="inline">
<select name="unit">
<option value="km">kilometers</option>
<option value="m">meters</option>
<option value="dm">decimeters</option>
<option value="cm">centimeters</option>
<option value="mm">milimeters</option>
</select>
<input type="text" name="value" placeholder="input value here" autocomplete="off" required>
<input type="submit" value="convert"/>
</form>
<?php
$unit = isset($_POST['unit']) ? $_POST['unit'] : false;
$value = isset($_POST['value']) ? $_POST['value'] : false;
$metrics = ["mm" => 1, "cm"=> 10, "dm" => 100, "m" => 1000, "km" => 1000000];
$template_value = $value*$metrics[$unit];
$values_for_print = [];
foreach($metrics as $key=>$value){
echo $key.": ".$template_value/$value."; ";
}
?>
</div>
我是 PHP 的初学者,我认为通过开始简单的项目来学习它会很好。我选择从一个简单的单位转换器开始。
我不想索取代码,我只是想寻求一些帮助,以弄清楚要使用什么方法或下一步应该考虑什么步骤。或者,如果有人有 link 类似的东西那就太好了,我自己找不到任何东西。
思路是这样的:用户将输入值和原始单位,然后我想打印几个不同单位的值。这是我目前所拥有的:
html
<div id="converter">
<h2>Unit converter</h2>
Convert from:
<form method="post" action="" class="inline">
<select name="unit">
<option value="km">kilometers</option>
<option value="m">meters</option>
<option value="dm">decimeters</option>
<option value="cm">centimeters</option>
<option value="mm">milimeters</option>
</select>
<input type="text" name="value" placeholder="input value here" autocomplete="off" required>
<input type="submit" value="convert"/>
</form>
<?php
$unit = isset($_POST['unit']) ? $_POST['unit'] : false;
$value = isset($_POST['value']) ? $_POST['value'] : false;
/* the above two lines are copied from a solution for something similar
that I found online. I know that they're not doing what I would like to do.
I want $unit to hold the unit the user chose, and $value to hold the value the
user put in. */
?>
</div>
所以理想情况下我希望能够输入例如 20,选择 "meters",单击转换然后打印“0.02 km,200 dcm,2000 cm,20000 mm”。
目前我被困在这个问题上:如何检查选择了哪个 "original unit"?换句话说,我如何检查用户选择的是公里还是米还是任何其他单位并相应地编辑我的输出?
并且:如何打印输出?
我知道我应该以某种方式使用 $_POST 但我不确定如何使用。
再说一遍,我不是要代码(尽管有些代码会很好 ;)),而是要一个指针。我读了一本关于 PHP 的书,但对这方面帮助不大。
提前谢谢你。对不起,如果我犯了任何错误,英语不是我的母语。
来自顽固的 PHP 编码人员用 php 做这些事情正在成为遗留和过时的,因为当用户点击提交时整个页面必须重新加载。 使用 AngularJS 应用程序可以更轻松地完成上述操作。这就是 web 的发展方向是 SPA(单页应用程序),其中页面不必重新加载并且结果是即时的。
在尝试学习 AngularJS 之前,您需要良好的 Javascript 知识和 MVC(模型、视图控制器)编程概念。但这是值得的!
我建议使用 w3schools 进行基础速成课程。但是谷歌搜索总是会产生很多有价值的资源。
但是回到回答你的问题:
你的页面名称需要是index.php,这样你的表单就可以通过action属性post到index.php:
<form method="post" action="index.php" class="inline">
然后您可以执行以下操作以查看 post 编辑到页面的内容,这将以清晰易读的方式打印所有变量(并且易于注释掉):
echo "<pre>";print_r($_REQUEST);echo "</pre>";
然后你会看到 $_REQUEST['unit'] 应该给你你需要的变量,然后使用 switch 语句为每个选择做单独的计算
你在说类似的事情吗?:
<div id="converter">
<h2>Unit converter</h2>
Convert from:
<form method="post" action="" class="inline">
<select name="unit">
<option value="km">kilometers</option>
<option value="m">meters</option>
<option value="dm">decimeters</option>
<option value="cm">centimeters</option>
<option value="mm">milimeters</option>
</select>
<input type="text" name="value" placeholder="input value here" autocomplete="off" required>
<input type="submit" value="convert"/>
</form>
<?php
$unit = isset($_POST['unit']) ? $_POST['unit'] : false;
$value = isset($_POST['value']) ? $_POST['value'] : false;
$metrics = ["mm" => 1, "cm"=> 10, "dm" => 100, "m" => 1000, "km" => 1000000];
$template_value = $value*$metrics[$unit];
$values_for_print = [];
foreach($metrics as $key=>$value){
echo $key.": ".$template_value/$value."; ";
}
?>
</div>