传递隐藏的价值

时间:2018-05-22 06:46:27

标签: php html forms

从下面的代码中可以看出,我创建了一个数组($ criteria),并在该数组中创建了标题($ heading)以匹配我数据库中的字段。

我正在尝试使用name = criteria传递隐藏值($ heading)(请参阅下面的代码)

$criteria = array("Independence","Participation","Self Management","Computer Science","Digital Literacy","ICT");
            $arrayLength = count($criteria);
            echo "<form><table>";
            for($count=0;$count<$arrayLength;$count++){
                if($criteria[$count] == 'ICT'){
                    $heading = strtolower($criteria[$count]);
                }else{
                    $heading = lcfirst(str_replace(' ','',$criteria[$count]));
                }

                echo " <tr><td>$criteria[$count]</td></tr>
                        <tr><td>Current Rating: $row[$heading]</tr></td>
                        <input type=hidden name=criteria value=$heading>
                        <tr><td> ". $this->createRatingButtons() ."</td></tr>
                        <tr><td></td></tr><tr><td></td></tr>";
            }
            echo "
                <input type=hidden name=student value=$student>
                <input type=hidden name=unit value=$unit>
                <input type=hidden name=formGroup value=$formGroup>

                </form></table>";

看起来像这样 -

Independence
Current Rating: 1
Separate buttons labelled (1, 2, 3, 4, 5) appear here 
Participation
Current Rating: 0
Separate buttons labelled (1, 2, 3, 4, 5) appear here 
Self Management
Current Rating: 0
Separate buttons labelled (1, 2, 3, 4, 5) appear here      
Computer Science
Current Rating: 0
Separate buttons labelled (1, 2, 3, 4, 5) appear here      
Digital Literacy
Current Rating: 0
Separate buttons labelled (1, 2, 3, 4, 5) appear here      
ICT
Current Rating: 0
Separate buttons labelled (1, 2, 3, 4, 5) appear here      

使用下面的函数创建按钮,如上面的代码所示。

public function createRatingButtons(){

            $result = "";
            for($count=1;$count<=6;$count++){
                $result.= "<input type=submit name=rating value=$count> ";
            }
            return $result;

    }

问题 - 点击按钮时,例如在参与标准下,我按下按钮号。 2,然后我可以传递隐藏值rating = 2(从上面的代码中可以正常工作),但我也想要按下评级按钮的标准,在这种情况下标准=参与 - 但它发送以下内容 -

http://localhost/marking/index.php?criteria=independence&criteria=participation&rating=2&criteria=selfManagement&criteria=computerScience&criteria=digitalLiteracy&criteria=ict&student=Liam&unit=Flowol&formGroup=7.8

如上面链接中所示,条件=独立性和标准=自我管理等都已通过!我只希望在参与标准下点击按钮2时,参与标准=参与。

1 个答案:

答案 0 :(得分:0)

问题发生了,因为你可以通过它产生的字符串暗示。传递每个隐藏的标准值。您的服务器端代码将解析查询字符串,并仅保留最后一个值。

您希望使用名为*的按钮,而不是让一组字段相互依赖。

independence_rating

然后在POST:

public function createRatingButtons($criteria){
        $result = "";
        for($count=1;$count<=6;$count++){
            $result.= "<input type=submit name=\"rating_$criteria\" value=$count />";
        }
        return $result;
}
//Use it by passing the current criteria.

这将涉及循环所有可能的标准,如果这些是复选框可能是好的,但它们是按钮,这意味着您希望一次只接收一个。因此,最简单的方法是为每个条件创建一个表单,而不是一个包含许多无用值的大表单。如果您仍想发送整个表单,则可以改为使用数组:

$criterion = array("Independence","Participation","Self Management","Computer Science","Digital Literacy","ICT");
foreach($criterion as $criteria){
    if($_POST['rating_'.$criteria]){
        //Update the rating accordingly
    }
}

然后在POST:

foreach($ _ POST [&#39; rating&#39;] as $ criteria){        //使用post值更新$ criteria的评级        $ _POST [&#39;评价&#39;] [$标准];     }