2014-02-07 121 views
0

添加数值我有一个表格:PHP:不能从表单POST

<form name="myform" action="" method="post"> 
Unilateral lower limb pain: 
<select name="pain"> 
    <option value="1">yes</option> 
    <option value="0">no</option> 
</select> 
<input type="submit" name="submit" value="submit" /> 
</form> 

我试图值添加到变量$ _ POST [痛苦],但我不断收到0的结果

<?php 
if (isset($_POST['submit'])){ 

$thescore=0; 

$_POST['pain']=intval($painScore); 

if($painScore==1){ 
    $thescore=$thescore+3; 
} 

echo 'score is: '.$thescore; 

} 
?> 

此输出“得分是:0”如果“是”被选择作为一个选项时它应该输出1

我也曾尝试:

int()$_POST[pain]=$painscore; 

具有相同的结果,输出为0

如何从表单中检索,当我加号(浮点和整数)在一起吗?

+0

$ _ POST [疼痛]也许应该是$ _POST ['pain'] – Aivar

+1

'$ _POST'是一个包含传递给HTTP主体脚本的超全局数据(例如,从

的method =“post”) - 你不能真正“写”到$ _POST'在运行时以你想要的方式运行。 – CD001

回答

0

的代码块没有任何意义

<?php 
if (isset($_POST['submit'])){ 

$thescore=0; 

$_POST[pain]=intval($painScore); 

if($painScore==1){ 
    $thescore=$thescore+3; 
} 

echo 'score is: '.$thescore; 

} 
?> 

我想你需要做的是

<?php 
if (isset($_POST['submit'])){ 

$thescore=0; 
$painScore = (int)$_POST['pain'] ; 

if($painScore==1){ 
    $thescore=$thescore+3; 
} 

echo 'score is: '.$thescore; 

} 
?> 
+0

我的不好。谢谢。 – bobafart

0

你的语法错误

$ _ POST [疼痛] = INTVAL( $ painScore);

必须是

$ painScore = INTVAL($ _ POST [疼痛]);

0
$painScore=intval($_POST['pain']); 
0

$_POST是包含传递给脚本中的HTTP主体数据的超全局(如从method="post"一个<form>) - 在你想要的方式,你不能真正“写”到$_POST在运行时。

了一个更简洁的方式来写你尝试一下,假设我理解正确的话(和一个可能实际工作)将是:

// variable definition 
$iPainScore = 0; 

// evaluation 
if(!empty($_POST)) { 

    // increment $iPainScore by the value of $_POST['pain'] 
    // unless $_POST['pain'] == 1, in which case increment $iPainScore by 3 
    $iPainScore += $_POST['pain'] == 1 ? 3 : (int) $_POST['pain']; 
} 

// output 
echo "The score is {$iPainScore}"; 

编辑

..实际上,因为$_POST['pain']只能是0或1你根本不需要将它加到你的疼痛评分中;如果$_POST['pain']为'true'(对于(int)1 ==(bool)true),则使用$_POST['pain']作为布尔似乎,实际上将您的疼痛评分增加3。

你可以因此降低了整个事情(假设你从这里开始了疼痛评分为0,而不是增加现有的疼痛评分)于:

$iPainScore = !empty($_POST['pain']) ? 3 : 0; 
echo "The score is{$iPainScore}"' 
1
<?php 

if (!empty($_POST)) { 
    $score = filter_input(INPUT_POST, "pain", FILTER_VALIDATE_INT, array(
     "options" => array(
      "default" => 0, 
      "min_range" => 0, 
      "max_range" => 1, 
     ) 
    )); 
    if ($score === 1) { 
     $score += 3; 
    } 
    echo "Score is: {$score}"; 
} 

?> 
+0

^比我的回答更好;)+1 – CD001