【问题标题】:php and html unit converter / selecting option valuephp 和 html 单位转换器/选择选项值
【发布时间】:2016-08-14 18:45:38
【问题描述】:

我是 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 的书,但对这方面帮助不大。

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

【问题讨论】:

    标签: php html select converter


    【解决方案1】:

    来自一个顽固的 PHP 编码器来用 php 做这些事情正在变得过时和过时,仅仅是因为当用户点击提交时整个页面必须重新加载。 使用 AngularJS 应用程序可以更轻松地完成上述操作。这就是网络发展的方向,即 SPA(单页应用程序),无需重新加载页面并且结果是即时的。

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

    我会建议 w3schools 参加基础速成课程。但是谷歌搜索总是会产生大量有价值的资源。

    但回到回答你的问题:

    你的页面名称需要是index.php,这样你的表单才能通过action属性post到index.php:

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

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

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

    然后你会看到 $_REQUEST['unit'] 应该给你你需要的 var,然后使用 switch 语句对每个选择进行单独的计算

    【讨论】:

    • 非常感谢!正是我要找的,谢谢!是的,我可以看到如何使用 PHP 来做到这一点已经过时了,但这只是为了我的学习目的:) 我一定会研究 AngularJS,谢谢你的提示!再次感谢您的帮助!
    【解决方案2】:

    你在说类似的东西?:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-06
      • 2012-01-17
      • 2015-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-06
      • 1970-01-01
      相关资源
      最近更新 更多