Jquery и PHP с Ajax для сравнения входных данных на основе двух матриц - PullRequest
0 голосов
/ 01 мая 2011

У меня небольшая проблема с множественным сравнением значений с 2 ​​матрицами.

У меня есть таблица HTML:

<table style="border:0px solid;" border="0" class="tema_d_tabel1">
    <tr><td>A</td><td>:</td><td><input type="text" maxlength="12" id="d011" /></td></tr>
    <tr><td>B</td><td>:</td><td><input type="text" maxlength="12" id="d021" /></td></tr>
    <tr><td>C</td><td>:</td><td><input type="text" maxlength="12" id="d031" /></td></tr>
    <tr><td>D</td><td>:</td><td><input type="text" maxlength="12" id="d041" /></td></tr>
</table>
<button id="tema_d_verif1" onclick="casute()">Verifica</button>
<button id="tema_d_finaliz1" style="display:none">Continua</button>

Имеет 4 входа, в которые пользователь может писать числа, разделенные запятыми.

Я написал JavaScript:

function casute() {
    var d1 = $("#d011").val();
    var d2 = $("#d021").val();
    var d3 = $("#d031").val();
    var d4 = $("#d041").val();
    d1 = d1.split(",");
    d2 = d2.split(",");
    d3 = d3.split(",");
    d4 = d4.split(",");
    //alert(d3.length);
    if ((d1.length == 2) && (d2.length == 2) && (d3.length == 4) && (d4.length == 1)) {
        caz = 1;
    } else if ((d1.length == 1) && (d2.length == 3) && (d3.length == 4) && (d4.length == 1)) {
        caz = 2;
    }

    if (caz == 1) {
        var arrays = [];

        $(".tema_d_tabel1 input[id^='d0']").each(function () {

            xy = $(this).attr("id");

            arrays.push(xy + "@" + $.trim($(this).val()));
        });

        $.ajax({
            type: "POST",
            url: "lab2/4a2.php",
            data: {
                request: arrays
            },
            success: function (data) {

                $(".tema_d_tabel1 input[id^='d0']").addClass("corect");

                $(data).removeClass("corect").addClass("gresit");
                var rGresit = data.split(',');

                if (data === '') {
                    $(".tema_d_tabel1 input[id^='d0']").attr("disabled", "true");
                    $("#tema_d_verif1").hide();
                    $("#tema_d_finaliz1").show();
                } else {
                    $("#tema_d_verif1").show();
                }

            }

        }); //ajax
    } //caz=1
    else if (caz == 2) {
        var arrays = [];

        $(".tema_d_tabel1 input[id^='d0']").each(function () {

            xy = $(this).attr("id");

            arrays.push(xy + "@" + $.trim($(this).val()));
        });

        $.ajax({
            type: "POST",
            url: "lab2/4a1.php",
            data: {
                request: arrays
            },
            success: function (data) {

                $(".tema_d_tabel1 input[id^='d0']").addClass("corect");

                $(data).removeClass("corect").addClass("gresit");
                var rGresit = data.split(',');

                if (data === '') {
                    $(".tema_d_tabel1 input[id^='d0']").attr("disabled", "true");
                    $("#tema_d_verif1").hide();
                    $("#tema_d_finaliz1").show();
                } else {
                    $("#tema_d_verif1").show();
                }

            }

        }); //ajax
    }
}

и два PHP-файла:

4a1.php:

<?php

if (isset($_POST['request']) && !empty($_POST['request'])) {

    $answer = $_POST['request'];

   // array with correct answers
    // it could be complicated but this is useful
    $return_arr = array(
        "d011@1", 
        "d021@2,3,4",
        "d023@5,6,7,8",
        "d024@-"      
    );

    $wrong = array();

    for ($i = 0; $i < count($return_arr); $i++) {
        if ($return_arr[$i] != $answer[$i]) {
            $xy = substr($answer[$i], 0, strpos($answer[$i], "@"));
            $wrong[] = "#" . $xy;
        }
    }

    echo implode(', ', $wrong);
}
?>

4a2.php

<?php

if (isset($_POST['request']) && !empty($_POST['request'])) {

    $answer = $_POST['request'];

    // array with correct answers
    // it could be complicated but this is useful
    $return_arr = array(
        "d011@1,2", 
        "d021@3,4",
        "d023@5,6,7,8",
        "d024@-"
    );

    $wrong = array();

    for ($i = 0; $i < count($return_arr); $i++) {
        if ($return_arr[$i] != $answer[$i]) {
            $xy = substr($answer[$i], 0, strpos($answer[$i], "@"));
            $wrong[] = "#" . $xy;
        }
    }

    echo implode(', ', $wrong);
}
?>

Я хочу сравнить эти 4 ввода HTML с двумя матрицами, описанными и определенными в PHP, но я не могу.

Например:

Я должен думать, что пользователь может написать как (первый случай):

A: 1
B: 2,3,4
С: 5,6,7,8
D: -

но они также могут писать как (второй случай):

A: 1,2
B: 3,4
С: 5,6,7,8
D: -

Как сравнить 4 входных значения с одним из правильной матрицы? Первый случай должен сравниваться с одной матрицей, второй случай должен сравниваться с другой матрицей из того же PHP-файла (ну, я создал 2 PHP-файла, когда кодировал JavaScript, чтобы вычислить длину этих входных данных, но я хочу один PHP-файл для этого).

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