Тест на PHP.1 вопрос - 2 ответа

191
12 апреля 2022, 19:10
index.php
<?php
session_start();
$questions = [
[
     'Тас дәуірінде адам баласы орталық және шығыс Қазақстан жерін игере бастаған кезең',
    ['Мезолит','Олдувэй','Мустье','Ашель','Неолит']
],
    
 [        
     'Екі жағынан да өңделген қарапайым шапқыш тас құрал',
   [ 'Гарпун','Кетпен','Болос','Нуклеус','Бифас']
 ]
];
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
 <form action="result.php" method="POST">
 <?php for($i = 0;$i < count($questions);$i++){
    echo $questions[$i][0] . "<br>";
     for($j = 0;$j < count($questions[$i])-1;$j++) {
         for($k = 0;$k < count($questions[$i]['1']);$k++) {
?><input type="checkbox" name="<?=$i;?>" value="<?= $k;?>">
<?php echo $questions[$i][1][$k] . "<br>";
 ?>
         <?php }
     }
  } ?>
 <button type="submit">Жауабы</button>
 </form>  
</body>
</html>

result.php
<?php 
session_start();
$true = 0;
$false = 0;
$true_answers = [[2,3],4];
for($i = 0;$i < count($true_answers);$i++) {
   for($j = 0;$j < count($true_answers);$j++){
    if($_POST[$i][$j] == $true_answers[$i][$j]) {
        $true++;
    }else {
        $false++;
    }
}}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
  <p>Дұрысы:<?php echo $true;?></p>
  <p>Қатесі:<?php echo $false;?></p>  
</body>
</html>

Есть 2 файла index.php и result.php и есть 2 вопроса.В 1 вопросе есть 2 правильных ответа а на 2 только 1, в Браузер идет все результаты Post[0]=2 POST[0]=3, POST[1]=2.Но где то мой код работает неправильно подскажите!Нужно выводить результат,вопрос с 2 ответом = 2 балла вопрос с 1 ответом = 1балл

Answer 1

вот попробуй это решение.. может поможет...

index.php
    <?php
    session_start();
    
    $questions = [
        [
            'Тас дәуірінде адам баласы орталық және шығыс Қазақстан жерін игере бастаған кезең',
            ['Мезолит','Олдувэй','Мустье','Ашель','Неолит']
        ],
        [
            'Екі жағынан да өңделген қарапайым шапқыш тас құрал',
            [ 'Гарпун','Кетпен','Болос','Нуклеус','Бифас']
        ]
    ];
    ?>
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
    <form action="result.php" method="POST">
        <?php for($i = 0;$i < count($questions);$i++){
            echo $questions[$i][0] . "<br>";
            for($j = 0;$j < count($questions[$i])-1;$j++) {
                for($k = 0;$k < count($questions[$i]['1']); $k++) {
                    ?>
    
                    <input type="checkbox" name="arr[<?php echo $i; ?>][]" value="<?= $k;?>">
    
                    <?php echo $questions[$i][1][$k] . "<br>";
                    ?>
                <?php }
            }
        } ?>
        <button type="submit">Жауабы</button>
    </form>
    </body>
    </html>
result.php
    <?php
    session_start();
    $true = 0;
    $false = 0;
    $true_answers = [['2','3'],['4']];
    
    foreach ($_POST['arr'][0] as $key => $val) {
        if (in_array($val, $true_answers[0])) {
            $true++;
        } else {
            $false++;
        }
    }
    
    foreach ($_POST['arr'][1] as $key => $val) {
        if (in_array($val, $true_answers[1])) {
            $true++;
        } else {
            $false++;
        }
    }
    
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
    <p>Дұрысы (В идеале):<?php echo $true;?></p>
    <p>Қатесі (Ошибка):<?php echo $false;?></p>
    </body>
    </html>

массив ответов
Array
(
[arr] => Array
(
    [0] => Array
        (
            [0] => 0
            [1] => 2
            [2] => 4
        )
)
)
Array
(
    [0] => Array
        (
            [0] => 2
            [1] => 3
        )
    [1] => Array
        (
            [0] => 4
        )
)
Дұрысы (В идеале):1
Қатесі (Ошибка):2

массив ответов

  Array
    (
        [arr] => Array
            (
                [0] => Array
                    (
                        [0] => 0
                        [1] => 1
                        [2] => 2
                        [3] => 4
                    )
    
                [1] => Array
                    (
                        [0] => 4
                    )
    
            )
    
    )
    
    Array
    (
        [0] => Array
            (
                [0] => 2
                [1] => 3
            )
    
        [1] => Array
            (
                [0] => 4
            )
    
    )

Дұрысы (В идеале):2
Қатесі (Ошибка):3
READ ALSO
Как задать доступ к chekbox для js?

Как задать доступ к chekbox для js?

Нужно посмотреть какие checkbox выбраны, но никак не могу получить к ним доступВ html находится :

217
Как правильно задать z-index?

Как правильно задать z-index?

Всем доброго времени сутокЕсть часть вёрстки:

317
Абсолютное центрирование блока на HTML CSS

Абсолютное центрирование блока на HTML CSS

Как разместить элемент с классом center по центру экрана?

267