Почему не работает код? php, html, js

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

файл Db_get.php:

<?php

function db_get (mixed $table_name) : mixed
{
    $db= new PDO('sqlite:db.db');
    $stmt=$db->prepare("SELECT * FROM `$table_name` ORDER BY 1 DESC LIMIT 1;");
    $stmt->execute();
    $table=$stmt->fetchall(PDO::FETCH_ASSOC);


    return $table;
}

файл Form_1.php:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<?php

function form_function_1(mixed $unit_of_measurement, mixed $sensor_name, mixed $sensor_value){

if (isset($_GET['value1'])) {
    $value = $_GET['value1'];
} else {
    $value = $sensor_value;
}

if (isset($_GET['checkbox_value1'])) {
    $checkbox_value = $_GET['checkbox_value1'];
} else {
    $checkbox_value = '';
}
?>

<form method="GET" id="myForm1">
    <?php echo $sensor_name;
        echo "&nbsp;&nbsp;";
        echo $unit_of_measurement;
    ?>

    <input type="text" name="value1" value="<?php echo $value; ?>"
        <?php
            if (empty($checkbox_value)) {
                echo 'disabled';
            }
        ?>>

    <input type="checkbox" id="myCheckbox1" name="checkbox_value1" value="1"
        <?php
            if (!empty($checkbox_value)) {
                echo 'checked';
            }
        ?>>

    <input type="submit" value="Send" <?php if (empty($checkbox_value)){echo 'disabled';}?>>

</form>

<script>
    function sendForm() {
        document.getElementById("myForm1").submit();
    }

    document.querySelector('#myCheckbox1').addEventListener('change', function() {
        const inputValue = document.querySelector('input[name="value1"]');

        
        if (!this.checked) { 
            inputValue.value = <?php echo $sensor_value; ?>;
            inputValue.disabled = true;
        } else {
            inputValue.disabled = false;
        }
        sendForm();
    });

    
    if (document.querySelector('#myCheckbox1').checked) {
        document.querySelector('input[name="value1"]').disabled = false;
    } else {
        document.querySelector('input[name="value1"]').disabled = true;
    }
</script>

</body>
</html>
<?php
}
?>

файл Form_2.php:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<?php


function form_function_2(mixed $unit_of_measurement, mixed $sensor_name, mixed $sensor_value){
        
if (isset($_GET['value2'])) {
    $value = $_GET['value2'];
} else {
    $value = $sensor_value;
}

if (isset($_GET['checkbox_value2'])) {
    $checkbox_value = $_GET['checkbox_value2'];
} else {
    $checkbox_value = '';
}
?>

<form method="GET" id="myForm2">
    <?php echo $sensor_name;
        echo "&nbsp;&nbsp;";
        echo $unit_of_measurement;
    ?>

    <input type="text" name="value2" value="<?php echo $value; ?>"
        <?php
            if (empty($checkbox_value)) {
                echo 'disabled';
            }
        ?>>

    <input type="checkbox" id="myCheckbox2" name="checkbox_value2" value="1"
        <?php
            if (!empty($checkbox_value)) {
                echo 'checked';
            }
        ?>>

    <input type="submit" value="Send" <?php if (empty($checkbox_value)){echo 'disabled';}?>>

</form>

<script>
    function sendForm() {
        document.getElementById("myForm2").submit();
    }

    document.querySelector('#myCheckbox2').addEventListener('change', function() {
        const inputValue = document.querySelector('input[name="value2"]');

        if (!this.checked) {
            inputValue.value = <?php echo $sensor_value; ?>;
            inputValue.disabled = true;
        } else {
            inputValue.disabled = false;
        }

        sendForm();
    });

    if (document.querySelector('#myCheckbox2').checked) {
        document.querySelector('input[name="value2"]').disabled = false;
    } else {
        document.querySelector('input[name="value2"]').disabled = true;
    }
</script>

</body>
</html>
<?php
}
?>

файл Settings_start:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Settings</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<?php
include "Form_1.php";
include "Form_2.php";
include "Db_get.php";
$table_Pressure=db_get('Pressure');
$table_Temperature=db_get('Temperature');

form_function_1($table_Pressure[0]['unit_of_measurement'],$table_Pressure[0]['sensor_name'],$table_Pressure[0]['value']);
form_function_2($table_Temperature[0]['unit_of_measurement'],$table_Temperature[0]['sensor_name'],$table_Temperature[0]['value']);
?>
</html>

Почему-то та функция, которою вызывают первой, работает не корректно. Переставлять вызов функции пытался,все равно проблема в функции которую вызывают первой. Некоректность работы функции заключается в том что при выборе чекбокса отправляется запрос (автоматически) и сразу чекбокс перестает быть выбраным, соответственно кнопка send стает недоступной, и вводить что нибудь в форму нельзя.


Ответы (1 шт):

Автор решения: Ипатьев

Такого рода задачи сложно поддаются отладке, тут нужен опыт. Если открыть этот код в браузере, то будет видно, что при отправке первой формы в адресной строке пусто. То есть данные первой формы никогда не отправляются. Обычно это связано с косяком в JS, когда при копипасте обработчика ставятся неверные референсы - читается не та форма или не тот id. Но с этим в коде всё нормально. Только при пристальном изучении яваскрипта выясняется, что функция sendForm() перезаписывается, и в результате всегда отправляет только вторую форму.

Ну и исходная идея - иметь две формы, чтобы каждая при отправке сбрасывала другую - очень так себе. То есть даже после исправления этой опечатки мы всё равно вернёмся к тому, что одна из форм сбрасывается - только они будут меняться, а не всегда только первая.

Почему было не сделать одну форму, пусть даже отправляемую при каждом клике - загадка.

→ Ссылка