从html值标记内的php页面返回值

时间:2017-02-17 18:45:56

标签: php html

我想创建一个将华氏度转换为摄氏度的html页面。 html页面用于输入并显示结果,php页面进行实际计算。

我必须在标签Celsius内插入php页面返回的值。 这意味着我必须将数据发送到php页面,结果必须显示在无法修改的标签内。

<html>
<head>
    <title>Convert</title>
</head>
<body>
    <form action="convert.php" method="POST">
        <label for="f">Fahrenheit</label>
        <input type="text" name="fahrenheit" id="f" />
        <br>
        <br>
        <label for="c">Celsius</label>
        <input type="text" name="celsius" readonly="read" id="c" value= "<?php echo $celsius;?>" />
        <br>
        <br>
        <input type="submit" name="conf" value="Confirm" />
        <input type="reset" value="Reset" />
    </form>
</body>
</html>
<?php
    session_start();
    if (isset($_POST['fahrenheit']) && is_numeric($_POST['fahrenheit'])) {
        $fahrenheit = $_POST['fahrenheit'];
        $celsius = ($fahrenheit - 32) * 5 / 9;
        $_POST['celsius'] = (string) $celsius;
        echo $_POST['celsius'];
    } else {
        echo "Only numbers";
    }
    header('Location: eyo.html');
    return;
?>

3 个答案:

答案 0 :(得分:1)

在一页中做所有事情,这就是我所做的:

<?php
if (isset($_POST['fahrenheit']) && is_numeric($_POST['fahrenheit']))
   {
$fahrenheit=$_POST['fahrenheit'];
$celsius=($fahrenheit-32)*5/9;
   }
else 
    {
    echo "Only numbers"; 
    } 
?>

这就是我的PHP部分,将其粘贴在页面顶部。显然,将HTML中的Method设置为页面名称。然后将变量回显到celcius输入。你现在没有正确的答案:

<input type="text" name="celsius" readonly="read" id="c" value=echo "$celsius;" />

这是HTML而不是PHP。你需要像这样的PHP标签:

<input type="text" name="celsius" readonly="read" id="c" value="<?php echo $celsius; ?>" />

如果您将表单方法更改为当前页面,请实现我在HTML表单上方发布的代码,只要您的Web主机禁用屏幕错误,这将正常工作。根据需要调整以满足您的需求,但这至少是我开始发布celcius转换的方式。

答案 1 :(得分:1)

你需要编写一些代码来执行相反的操作,你需要编写一个POST操作,将celcius计算的结果发送给你的同一个&#34; convert.php&#34;您需要处理此新请求调用的页面。

请参阅以下有关如何在PHP中执行帖子的链接: POST data to a URL in PHP

然后在你的&#34; convert.php&#34;您修改接收如下参数的代码:

if (isset($_POST['celsius']) && is_numeric($_POST['celsius'])) {
    $celsius = $_POST['celsius'];
}

您的HTML代码应该是:

<input type="text" name="celsius" readonly="read" id="c" value="<?php echo $celsius ?>" />

答案 2 :(得分:0)

如果你必须在2页内完成,我会考虑这样的方法:

表单页面(form-page.php):

<?php
$celsius = isset($celsius) ? $celsius : null;
?>

<html>
<head>
    <title>Convert</title>
</head>
<body>
<form action="convert.php" method="POST">
    <label for="f">Fahrenheit</label>
    <input type="text" name="fahrenheit" id="f" />
    <br>
    <br>
    <label for="c">Celsius</label>
    <input type="text" name="celsius" readonly="read" id="c" value= "<?php echo $celsius;?>" />
    <br>
    <br>
    <input type="submit" name="conf" value="Confirm" />
    <input type="reset" value="Reset" />
</form>
</body>
</html>

转换页面(convert.php):

<?php

$celsius = null;

if(isset($_POST['fahrenheit']) )
{
    if (is_numeric($_POST['fahrenheit']))
    {
        $fahrenheit         = $_POST['fahrenheit'];
        $celsius            = ($fahrenheit-32)*5/9;
    }
    else
    {
        echo "Only Numbers Please!";
    }
}

include('form-page.php');

?>

基本上我们将数据发布到转换页面,并在其后再次包含表单。表单页面检查$ celcius变量的定义。

正如其他评论所提到的,我相信使用AJAX或只是回到同一页面是一个更有效的解决方案,但是我们必须使用2页o.O。