如何使用输入表单更改PHP变量?

时间:2014-06-27 22:57:42

标签: php arrays forms variables input

我有一组数组,每个数组都有一个属于它们的值。此值通过一个函数来查找百分比,然后显示在页面上。这是该代码的片段:

<?php
$balls = array(
    'blue' => 4,
    'red' => 13,
    'green' => 5
);

function percent($array, $element)
{
    $total = array_sum($array);
    $elementValue = $array[$element];
    return ($elementValue / $total) * 100;
}
?>

<html>
<body>
Blue balls per set:<?php echo $balls["blue"]; ?>.
Percentage of blue balls:<?php echo percent($balls, 'blue'); ?>%.
</body>
</html>

如何添加可能会改变此等式的输入表单。具体来说,我希望能够添加一个变量($ sets),在变量之前将它们乘以数组项的值。

我能想到的最接近的事情就是这样:

$sets = value from input form, if no value entered, default as 1

$balls = array(
    'blue' => 4 * $sets,
    'red' => 13 * $sets,
    'green' => 5 * $sets
);

等式的其余部分将照常工作,但可以使用输入表单中提交的$ sets中的新值进行更新。此外,这样的事情会立即更新网页上显示的数字吗?

1 个答案:

答案 0 :(得分:1)

如果$sets是您唯一对更改感兴趣的内容,则可以轻松设置一个小型HTML表单(假设index.php是您的PHP文件的名称):

<form action="index.php" method="post">
 Number of sets: <input type="text" name="sets" />
 <br /><input type="submit" value="Get sum!" />
</form>

在您的PHP代码中,您可以执行以下操作以在有人提交HTML表单时获取值:

$sets = 1; // default value

// Make sure a value was sent
if(isset($_POST['sets'])) {
    // Check that sets is numeric, and above 0
    if(is_numeric($_POST['sets']) && $_POST['sets'] > 0) {
        $sets = $_POST['sets'];
    }
}

// Do computation with $sets...

是的,如果您将HTML表单中的值发送到PHP页面,页面上的值将根据您在表单中发送的内容立即显示。

看起来你开始使用PHP(或者一般的编程) - 祝你好运!要记住的一个重要规则是验证用户输入,就像我们在此处所做的那样:我们已经检查过我们是否收到了一个号码(因为我们需要的号码)并且该值大于0。

一旦我们确定它符合我们的标准,我们就只将$ _POST [&#39; sets&#39;]的值添加到我们的变量中。你永远不会知道人们会试图发送给你什么,你想为任何案件做好准备。

在开始时将$sets设置为1意味着我们从默认值开始,我们可以担心在我们想要时将$sets设置为其他至。相反,请考虑一下:

if(isset($_POST['sets'])) {
    if(is_numeric($_POST['sets']) && $_POST['sets'] > 0) {
        $sets = $_POST['sets'];
    }
    else {
        $sets = 1;
    }
}
else {
    $sets = 1;
}

这不太好,因为在任何给定的情况下,$ sets肯定会有一个有效的值,这是不太明显的。这也意味着如果您决定更改默认值,则需要将1更改为其他数字。

在这个例子中,这是相当简单的,因为代码很小,但是我确信一旦你用更复杂的检查编写更大的代码,你就可以想象这个好处。