检索值并通过表单和$ _GET(PHP)保存它

时间:2013-05-05 18:56:15

标签: php html session

我有一个我需要解决的问题。

我正在处理一个看起来像

的表单
<form action="<?php $_SERVER['PHP_SELF'];?>" method="get">
        <h1>Score</h1>
        <p>Uno
        <input type="number" size="10" name="First" value="{$First}"/>
        </p>

        <p>Dos
        <input type="number" size="10" name="Second" value="{$Second}"/>
        </p>

        <p>Tres
        <input type="number" size="10" name="Third" value="{$Third}"/>
        </p>

        <p>Quattro
        <input type="number" size="10" name="Fourth" value="{$Fourth}"/>
        </p>

        <button type="submit">Hit to submit your inputs</button>
    </form>

我还有一些PHP代码来检索这些输入,如下所示

$First = $_GET['First'];
$Second = $_GET['Second']; 
$Third = $_GET['Third'];
$Fourth = $_GET['Fourth'];

然后我用简单的

打印这些输入
echo $First, $Second, $Third, $Fourth;

手头的问题是我需要先根据这四个变量进行计算,然后在操作后打印出结果。

我创建了一个执行此操作的功能

function calculateIt(){
$overall = $first+$second+$third+$fourth/2;
return $overall;
}

然后我调用函数

$call = calculateIt();

但是一旦我回应了这个调用,它返回0.所以我猜测$ _GET没有足够长时间存储结果?

2 个答案:

答案 0 :(得分:1)

你需要有参数传递这些变量的值,因为函数内部的变量只有该函数的范围,换句话说,函数内部的变量只能在该函数内使用,除非你使用global被认为是不好的做法,所以有参数并传递像

这样的值
function calculateIt($first, $second, $third, $fourth){
   $overall = $first+$second+$third+$fourth/2;
   return $overall;
}

所以当你打电话时,你需要传递这里的值,如

calculateIt(2, 5, 6, 8); //You can replace digits with local variables having numeric values

Learn Variable Scope

备注:使用isset检查是否设置了这些索引,否则向用户抛出错误

答案 1 :(得分:0)

您的函数返回某些值的计算值($ first,$ second ...),但这些值未在函数中定义。因此它返回0.(它只是用值为0的值进行计算)

function calculateIt(){
$overall = $first+$second+$third+$fourth/2;
return $overall;
}

将值传递给函数,如下所示:

function calculateIt($first = null, $second = null, $third = null, $fourth = null){
//Assigning the values in the declartion of the functions make it easy to
//check wether or not the valeus or ok for calculation
//
if ($first === null || $second === null || $third === null || $fourth === null) {
   return 0; //return 0 when not all values are sent.
}

//Do the calculation now when values are ok, and return calculated value
$overall = $first+$second+$third+$fourth/2;
return $overall;
}

当然你可以做更多的检查,上面只是一个例子......