Lista obecności

0

Witam, przychodzę z pewnym problemem, Otóż, zrobiłem listę obecności, w której wybiera sie ucznia i typ nieobecności lub obecność. Mam problem w tym, że nie wiem jak wysłać potem te wszystkie wartości, które wczytuje z formularza. Każdy wiersz ma przypisane przy input name= frekwencja(id_ucznia). Prosiłbym o pomoc, próbowałem wysłać pojedynczo i to potrafię, ale już, żeby zrobić dla wszystkich to nie mam pomysłu.

<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Obecność</title>
    <style>
        table{
            border: 1px solid black;
            border-collapse: collapse;
        }
        td{
            border: 1px solid black;
            border-collapse: collapse;
        }
        tr{
            border: 1px solid black;
            border-collapse: collapse;
        }
        th{
            border: 1px solid black;
            border-collapse: collapse;
        }
    </style>
</head>
<body>
    <table>
        <tr><th>uczen</th><th>ob</th><th>nb</th><th>u</th><th>zw</th><th>sp</th></tr>
        <form action="dodaj_obecnosc.php" method="post">
        <?php
        $polaczenie=mysqli_connect("localhost","root","","szkola");
        $zapytanie="SELECT id_ucznia, concat(nazwisko_ucznia, ' ', imie_ucznia) as uczen, id_klasy FROM `uczniowie` where id_klasy=93;";
        $wyslij=mysqli_query($polaczenie,$zapytanie);
        while($row=mysqli_fetch_array($wyslij)){
            echo '<tr><td><input type="text" name="uczen'.$row[0].'"  value="'.$row[0].'"></td><td><input type="radio"  name="frekwencja'.$row[0].'" id="obecnosc" value="ob"></td><td><input type="radio"  name="frekwencja'.$row[0].'" id="niebecnosc" value="nb"></td><td><input type="radio" name="frekwencja'.$row[0].'" id="usprawiedliwione" value="u"></td>
                        <td><input type="radio"  name="frekwencja'.$row[0].'" id="zwolniony"  value="zw"></td><td><input type="radio"  name="frekwencja'.$row[0].'" id="spoznienie" value="sp"></td></tr>';
        }
        
        
        ?>
    
    </table>
    <input type="submit" name="submit"></td></form>

</body>
</html>
<?php

    $frekwencja44=$_POST['frekwencja44'];
    $uczen44=$_POST['uczen44'];

    $polaczenie=mysqli_connect("localhost","root","","obecnosc");
    $zapytanie="INSERT INTO frekwencja(id_frekwencji, id_ucznia, typ_ob) VALUES (null,'$uczen44','$frekwencja44')";
    $wyslij=mysqli_query($polaczenie,$zapytanie);
    
    echo $zapytanie;

?>
-- phpMyAdmin SQL Dump
-- version 5.1.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Czas generowania: 18 Gru 2022, 13:53
-- Wersja serwera: 10.4.22-MariaDB
-- Wersja PHP: 7.4.27

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Baza danych: `obecnosc`
--

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `frekwencja`
--

CREATE TABLE `frekwencja` (
  `id_frekwencji` int(11) NOT NULL,
  `id_ucznia` int(11) NOT NULL,
  `typ_ob` varchar(3) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--
-- Zrzut danych tabeli `frekwencja`
--

INSERT INTO `frekwencja` (`id_frekwencji`, `id_ucznia`, `typ_ob`) VALUES
(1, 0, 'ob'),
(2, 44, 'sp');

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `uczniowie`
--

CREATE TABLE `uczniowie` (
  `id_ucznia` int(11) NOT NULL,
  `imie_ucznia` varchar(20) NOT NULL,
  `nazwisko_ucznia` varchar(30) NOT NULL,
  `id_klasy` int(11) NOT NULL,
  `funkcja` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--
-- Zrzut danych tabeli `uczniowie`
--

INSERT INTO `uczniowie` (`id_ucznia`, `imie_ucznia`, `nazwisko_ucznia`, `id_klasy`, `funkcja`) VALUES
(44, 'Adam ', 'Czupryński', 93, 4),
(45, 'Anna', 'Dudzińska', 93, 4),
(46, 'Dominik', 'Strózik', 93, 4),
(47, 'Dorota', 'Konkel', 93, 4),
(48, 'Eliza', 'Ciupek', 93, 4),
(49, 'Ignacy', 'Stadnicki', 93, 4),
(50, 'Izabela', 'Rokosz', 93, 4),
(52, 'Juliusz', 'Walasek', 93, 4),
(53, 'Karol', 'Siemiński', 93, 4),
(54, 'Klara', 'Sienkiewicz', 93, 4),
(55, 'Krystian', 'Ciborowski', 93, 4),
(56, 'Krystian', 'Komor', 93, 4),
(57, 'Marek', 'Romanik', 93, 4),
(58, 'Monika', 'Drwal', 93, 4),
(59, 'Olimpia', 'Gliniecka', 93, 4),
(60, 'Paweł', 'Grajek', 93, 4),
(61, 'Korneliusz', 'Kucharski', 92, 4),
(62, 'Kamil ', 'Piotrowski', 92, 4),
(63, 'Marcin ', 'Czarnecki', 92, 4),
(64, 'Gustaw ', 'Kaczmarczyk', 92, 4),
(65, 'Kajetan', 'Kołodziej', 92, 4),
(66, 'Cyprian ', 'Głowacki', 92, 4),
(67, 'Remigiusz', 'Wróblewski', 92, 4),
(68, 'Daniel ', 'Sikora', 92, 4),
(69, 'Amanda', 'Pietrzak', 92, 4),
(70, 'Lucy', 'Gajewska', 92, 4),
(71, 'Marzanna', 'Krajewska', 92, 4),
(72, 'Oktawia ', 'Kaczmarczyk', 92, 4),
(73, 'Cecylia ', 'Jasińska', 92, 4),
(74, 'Wanda ', 'Adamska', 92, 4),
(75, 'Aleksandra ', 'Sobczak', 92, 4),
(76, 'Lidia ', 'Sobczak', 92, 4);

--
-- Indeksy dla zrzutów tabel
--

--
-- Indeksy dla tabeli `frekwencja`
--
ALTER TABLE `frekwencja`
  ADD PRIMARY KEY (`id_frekwencji`);

--
-- AUTO_INCREMENT dla zrzuconych tabel
--

--
-- AUTO_INCREMENT dla tabeli `frekwencja`
--
ALTER TABLE `frekwencja`
  MODIFY `id_frekwencji` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
0
Kuba Wierciński napisał(a):
<body>
    <table>
        <tr><th>uczen</th><th>ob</th><th>nb</th><th>u</th><th>zw</th><th>sp</th></tr>
        <form action="dodaj_obecnosc.php" method="post">
        <?php
        $polaczenie=mysqli_connect("localhost","root","","szkola");
        $zapytanie="SELECT id_ucznia, concat(nazwisko_ucznia, ' ', imie_ucznia) as uczen, id_klasy FROM `uczniowie` where id_klasy=93;";
        $wyslij=mysqli_query($polaczenie,$zapytanie);
        while($row=mysqli_fetch_array($wyslij)){
            echo '<tr><td><input type="text" name="uczen'.$row[0].'"  value="'.$row[0].'"></td><td><input type="radio"  name="frekwencja'.$row[0].'" id="obecnosc" value="ob"></td><td><input type="radio"  name="frekwencja'.$row[0].'" id="niebecnosc" value="nb"></td><td><input type="radio" name="frekwencja'.$row[0].'" id="usprawiedliwione" value="u"></td>
                        <td><input type="radio"  name="frekwencja'.$row[0].'" id="zwolniony"  value="zw"></td><td><input type="radio"  name="frekwencja'.$row[0].'" id="spoznienie" value="sp"></td></tr>';
        }
        
        
        ?>
    
    </table>
    <input type="submit" name="submit"></td></form>

</body>
</html>

Ktokolwiek Cię nauczył pisać taki kod - uciekaj od niego jak najdalej.

2

Nazwij sobie pola formularza w taki sposób, by np. dla ucznia o id=23 nazwa pola wyglądała tak: uczen[23]. Wtedy w $_POST będziesz miał taką strukturę: [uczen => [23 => wartość_pola_23, 24 => wartość_pola_24 ...]] czyli pod kluczem uczen będziesz mieć tablicę wartości po której będziesz mógł iterować foreach'em i wykonać na nich operacje, np. zapis do bazy.

0
Szado napisał(a):

Nazwij sobie pola formularza w taki sposób, by np. dla ucznia o id=23 nazwa pola wyglądała tak: uczen[23]. Wtedy w $_POST będziesz miał taką strukturę: [uczen => [23 => wartość_pola_23, 24 => wartość_pola_24 ...]] czyli pod kluczem uczen będziesz mieć tablicę wartości po której będziesz mógł iterować foreach'em i wykonać na nich operacje, np. zapis do bazy.

Dziękuję za pomysł, udało się :>

<?php
    $polaczenie=mysqli_connect("localhost","root","","obecnosc");
    $tab=$_POST['frekwencja'];
    

    foreach($tab as $key=> $value){
        mysqli_query($polaczenie, "INSERT INTO frekwencja(id_frekwencji, id_ucznia, typ_ob) VALUES (null,$key,'$value');");
      
    }
?>
0

Dziękuję za sugestie, ale najpierw skupiam się na działaniu. O SQL Injection również pamiętam . Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1