【问题标题】:How can I change a PHP variable with an input form?如何使用输入表单更改 PHP 变量?
【发布时间】:2014-06-27 22:57:42
【问题描述】:

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

<?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 中的新值进行更新。还有,这样的东西会不会立即更新网页上显示的数字?

【问题讨论】:

  • 您要么需要将所有变量发送到客户端,然后使用 Javascript 更改显示,要么您必须使用 AJAX 将颜色发送到服务器并取回百分比。当用户更改输入时,PHP 完成运行。

标签: php arrays forms variables input


【解决方案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['sets'] 符合我们的标准后,我们​​才将其值添加到我们的变量中。您永远不知道人们可能会尝试向您发送什么,并且您希望为任何情况做好准备。

在开始时将$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 更改为另一个数字。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多