PHP 和 HTML 单位转换器/选择选项值


php and html unit converter / selecting option value

我是PHP的初学者,我认为通过开始简单的项目来学习它会很好。我选择从一个简单的单位转换器开始。

不想要求代码,我只是想寻求一些帮助,以确定使用什么方法或下一步应该考虑什么步骤。或者,如果有人有类似内容的链接,那就太好了,我自己找不到任何东西。

这个想法是这样的:用户将输入值和原始单位,然后我想用几个不同的单位打印值。这是我到目前为止所拥有的:

.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,选择"米",单击转换,然后打印"0.02 公里、200 dcm、2000 厘米、20000 毫米"。

目前我被困在这个问题上:我如何检查选择了哪个"原始单位"?换句话说,如何检查用户是否选择了公里或米或任何其他单位并相应地编辑我的输出?

以及:如何打印输出?

我知道我应该以某种方式使用 _POST 美元,但我不确定如何使用。

再一次,我不是在要求代码(尽管有些代码会很好;)),而是需要一个指针。我读了一本关于PHP的书,但它对此不是很有帮助。

提前谢谢你。对不起,如果我犯了任何错误,英语不是我的第一语言。

来自

一个顽固的PHP程序员,用PHP做这些事情,这已经变得过时了,仅仅是因为当用户点击提交时整个页面必须重新加载。使用AngularJS应用程序可以更轻松地完成上述操作。这就是网络的发展方向是SPA(单页应用程序),页面不必重新加载,结果是即时的。

在尝试学习AngularJS之前,您需要良好的Javascript知识和MVC(模型,视图控制器)编程概念。但这是值得的!

我会建议w3schools进行基本的速成课程。但谷歌搜索总是会产生很多有价值的资源。

但回到回答你的问题:

您的网页名称必须是 index.php,以便您的表单可以通过 action 属性发布到 index.php:

<form method="post" action="index.php" class="inline">

然后,您可以执行以下操作以查看发布到页面上的内容,这将以可读的显示方式打印所有变量(并且易于注释掉):

echo "<pre>";print_r($_REQUEST);echo "</pre>";

然后你会看到 $_REQUEST['unit'] 应该给你你需要的 var,然后使用 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>