php和html单位转换器/选择选项值

时间:2016-04-21 13:52:01

标签: php html select converter

我是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 km,200 dcm,2000 cm,20000 mm”。

目前我坚持这个:如何检查哪个“原始单位”被选中?换句话说,我如何检查用户是选择公里或米或任何其他单位并相应地编辑我的输出?

并且:我如何打印输出?

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

再次,我不是要求代码(虽然有些会很好;)),但对于指针。我读了一本关于PHP的书,但对此并不是很有帮助。

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

2 个答案:

答案 0 :(得分:0)

来自一个顽固的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语句为每个选择执行单独的计算

答案 1 :(得分:0)

你在谈论类似的事情吗?:

<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>