Przesyłanie danych z formularza do bazy

0

Cześć,
mam problem z przesyłaniem danych wprowadzonych w formularzu do bazy danych. Poniżej wklejam skrypt php który powinien przesyłać dane z formualrza do bazy, natomiast tak się nie dzieje. Gdyby ktoś miał jakiś pomysł jak to rozwiązać, będę wdzięczny za każdą podpowiedź.

<?php
require("connect.php");

// Sprawdzenie, czy formularz został przesłany metodą POST
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // Pobieranie danych z formularza
    $skType = isset($_POST['SK']) ? mysqli_real_escape_string($conn, $_POST['SK']) : '';
    $wkType = isset($_POST['wk']) ? mysqli_real_escape_string($conn, $_POST['wk']) : '';
    $mrType = isset($_POST['mr']) ? mysqli_real_escape_string($conn, $_POST['mr']) : '';
    $note = isset($_POST['note']) ? mysqli_real_escape_string($conn, $_POST['note']) : '';

    // Sprawdzanie, czy wszystkie wymagane pola zostały wypełnione
    if (!empty($skType) && !empty($wkType) && !empty($mrType) && !empty($note)) {
        // Tworzenie zapytania SQL
        $sql = "INSERT INTO uwagi (FK_SK, FK_WK, FK_Nr_mod, tresc) VALUES ('$skType', '$wkType', '$mrType', '$note')";

        // Wykonanie zapytania
        if (mysqli_query($conn, $sql)) {
            echo "Zgłoszenie zostało zapisane pomyślnie.";
        } else {
            echo "Błąd: " . mysqli_error($conn);
        }
    } else {
        echo "Proszę wypełnić wszystkie pola.";
    }
}

// Zamykanie połączenia z bazą danych
mysqli_close($conn);
?>

Sprawdziłem, czy w ogóle można za pomocą tego skryptu wysyłać jakiekolwiek dane do bazy i tak można. Zmodyfikowałem go trochę i pod wartości zmiennych przypisałem stałe wartości, a nie te pobierane z formularza. W tym wariancie ten skrypt działa i wprowadza rekordy do tabeli w bazie.

<?php
require("connect.php");

// Sprawdzenie, czy formularz został przesłany metodą POST
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // Pobieranie danych z formularza
    $skType = 'SK3';
    $wkType = 'WK03_SK03';
    $mrType = '101B_014';

    // Sprawdzanie, czy wszystkie wymagane pola zostały wypełnione
    if (!empty($skType) && !empty($wkType) && !empty($mrType)) {
        // Tworzenie zapytania SQL
        $sql = "INSERT INTO uwagi (FK_SK, FK_WK, FK_Nr_mod) VALUES ('$skType', '$wkType', '$mrType')";

        // Wykonanie zapytania
        if (mysqli_query($conn, $sql)) {
            echo "Zgłoszenie zostało zapisane pomyślnie.";
        } else {
            echo "Błąd: " . mysqli_error($conn);
        }
    } else {
        echo "Proszę wypełnić wszystkie pola.";
    }
}

// Zamykanie połączenia z bazą danych
mysqli_close($conn);
?>

Wydaje mi się, że błąd musi być na poziomie pobieranie danych z formularza przez skrypt, podejrzewam, że może być gdzieś jeden znak dolara ($) za dużo lub za mało. Dodatkowo dla lepszego zorientowania przesyłam kod ze stroną na której znajduje się formularz - index.php. A także plik który ma za zadanie łączyć się z bazą danych - connect.php.

<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Formularz Zgłoszeń</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <button id="openFormBtn">Otwórz Formularz</button>

    <div id="popupForm" class="popup-form">
        <div class="form-container">
            <span class="close-btn" id="closeFormBtn">&times;</span>
            <h2>Formularz Zgłoszeń</h2>

            <div class="toggle-buttons">
                <button id="objazdBtn">Objazd</button>
                <button id="satBtn">SAT</button>
            </div>
			 
            <form id="reportForm" action="add.php" method="post">
                
                <div class="dropdowns">
                    <label for="sk">Wybierz SK:</label>
                    <select id="sk" name="sk">
                        <option value="">Wybierz SK</option>

                        <?php                                          /Skrypt pobierający opcje wyboru z bazy danych
                            $host = 'localhost';
                            $dbname = 'aplikacja';
                            $username = 'root';
                            $password = '';

                            try {
                                $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
                                $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                                $stmt = $pdo->query("SELECT id, name FROM sk");
                                while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                                    echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>";
                                }
                            } catch (PDOException $e) {
                                echo "Błąd połączenia: " . $e->getMessage();
                            }
                        ?>

                    </select>

                    <label for="wk">Wybierz WK:</label>
                    <select id="wk" name="wk">
                        <option value="">Wybierz WK</option>

                        <?php
                            try {
                                $pdo2 = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
                                $pdo2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                                $stmt = $pdo2->query("SELECT id, name FROM wk");
                                while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                                    echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>";
                                }
                            } catch (PDOException $e) {
                                echo "Błąd połączenia: " . $e->getMessage();
                            }
                        ?>

                    </select>

                    <label for="MR">Wybierz MR:</label>
                    <select id="MR" name="mr">
                        <option value="">Wybierz MR</option>

                        <?php
                            try {
                                $pdo3 = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
                                $pdo3->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

                                $stmt = $pdo3->query("SELECT id, name FROM mr");
                                while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                                    echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>";
                                }
                            } catch (PDOException $e) {
                                echo "Błąd połączenia: " . $e->getMessage();
                            }
                        ?>

                    </select>
                </div>

                <label for="note">Uwagi (objazd):</label>
                <textarea id="note" name="note" rows="4" minlength="15" required></textarea>

                <label for="fileUpload">Dodaj pliki (max 5):</label>
                <input type="file" id="fileUpload" name="files[]" multiple accept="image/*" max="5">

                <button type="reset" id="clearFormBtn"><img id="clearIcon" src="eraser.png" alt="Clear" /></button>
                
                <button type="submit" id="submitBtn">Zatwierdź uwagę</button>
                
            </form>

            <a href="uwagi.php" target="_blank"><button id="showHistoryBtn">Wyświetl uwagi dla tego urządzenia</button></a>
        </div>
    </div>

    <script src="script.js"></script>
</body>
</html>
<?php

$conn = mysqli_connect(
    'localhost',
    'root',
    '',
    'aplikacja'
);

// Sprawdzenie połączenia
if (!$conn) {
    die("Błąd połączenia z bazą danych: " . mysqli_connect_error());
}

?>

1

@Ace King - masz w if sprawdzanie parametrów czy one nie są "puste". Najlepiej sprawdź sobie za tą linijką: if ($_SERVER['REQUEST_METHOD'] == 'POST')

echo '<pre>';
print_r($_POST);
echo '</pre>';

Co masz w tych zmiennych i sprawdź czy na tym warunku się gdzieś coś nie wywala. Druga sprawa, w tym "działającym" przykładnie nie ma $note

4

W HTMLu masz sk małymi literami:

<select id="sk" name="sk">

W kodzie PHP masz SK wielkimi:

isset($_POST['SK'])

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.