Передача скрытого значения - PullRequest
0 голосов
/ 22 мая 2018

Как видно из приведенного ниже кода, я создал массив ($ критерий) и из этого массива создал заголовки ($ заголовок) для сопоставления полей в моей базе данных.

Я пытаюсь передатьскрытое значение ($ heading) с использованием критерия name = (см. код ниже)

$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, тогда я могу передать рейтинг скрытого значения = 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 голосов
/ 22 мая 2018

Проблема возникает, так как вы можете получить подсказку по строке, которую она производит.Значение критерия каждого скрытого передается.Ваш серверный код проанализирует строку запроса и сохранит только последнее значение.

Вы бы предпочли иметь кнопку с именем independence_rating, чем группу полей, зависящих друг от друга.

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.

Затем на POST:

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

Это может включать в себя циклическое прохождение всех возможных критериев, что может быть полезно, если бы это были флажки, но это кнопки, что означает, что вы ожидаете получить только один ввремя.Поэтому проще всего было бы создать одну форму для каждого критерия вместо одной большой формы, содержащей много бесполезных значений.Если вы все еще хотите отправить всю форму, вместо этого вы можете поиграть с массивами:

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.

Затем на POST:

foreach ($ _ POST ['rating'] как $ критерий){// Обновляем рейтинг $ критерия, используя значение post $ _POST ['rating'] [$ crit];}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...