Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]lista obecności
Forum PHP.pl > Forum > Przedszkole
mattii
mam skrypt , który w pętli wypisuje wszystkich uczniów po kolei, a obok nich pole select do wyboru czy był obecny czy nie.

po naciśnięciu submit dodaję do tabeli lekcje nazwę lekcji i datę, a to tabeli obecność czy uczeń był na lekcji czy nie - dane z tego selecta

problem jest w tym, że do bazy zapisuje się obecność tyko ostatniego ucznia , którego wypisał for na samym początku..

mogę przy każdym uczniu zapisywać jego obecność, ale to będzie uciążliwe w momencie kiedy uczniów będzie np 20stu ...

na co zwrócić uwagę aby zapisywana była obecność każdego ucznia wypisanego przez fora?



mój skrypt wygląda tak:

  1.  
  2. .
  3. .
  4. .
  5.  
  6. if(isset($_POST['btn-dodajtr'])) {
  7.  
  8.  
  9.  
  10. $konspekt = strip_tags($_POST['konspekt']);
  11. $data = strip_tags($_POST['data']);
  12. $zawartosc = strip_tags($_POST['zawartosc']);
  13. $idzaw = strip_tags($_POST['idzaw']);
  14. $obecnosc = strip_tags($_POST['obecnosc']);
  15.  
  16.  
  17. $obecnosc = $DBcon->real_escape_string($obecnosc);
  18. $idzaw = $DBcon->real_escape_string($idzaw);
  19. $konspekt = $DBcon->real_escape_string($konspekt);
  20. $data = $DBcon->real_escape_string($data);
  21. $zawartosc = $DBcon->real_escape_string($zawartosc);
  22.  
  23.  
  24. $tenidteam=$idteam2['Team_idTeam'];
  25.  
  26. $tentrener=$userRow2['idTrener'];
  27.  
  28.  
  29. $queryt2 = "INSERT INTO Trening (idTrening,zawartosc, data, konspekt,Team_idTeam, Team_Trener_idTrener )
  30. VALUES ('','$zawartosc','$data','$konspekt','$tenidteam',' $tentrener') ";
  31.  
  32. $pyt=$DBcon->query($queryt2);
  33.  
  34. $last=mysqli_insert_id($DBcon);
  35.  
  36. if ($pyt) {
  37.  
  38.  
  39. $querytrening = $DBcon->query("SELECT * FROM Trening WHERE idTrening = ".$last." ");
  40.  
  41. $idtrening=$querytrening->fetch_array();
  42.  
  43. $idtr=$idtrening[idTrening];
  44.  
  45.  
  46. $querytobecnosc = "INSERT INTO obecnosc (idobecnosc,present, Trening_idTrening, Trening_Team_idTeam,Trening_Team_Trener_idTrener, zawodnik_idzawodnik, zawodnik_Team_idTeam, zawodnik_Team_Trener_idTrener )
  47. VALUES ('','$obecnosc','$idtr','$tenidteam','$tentrener',' $idzaw',' $tenidteam',' $tentrener') ";
  48.  
  49. $pyt2=$DBcon->query($querytobecnosc);
  50.  
  51.  
  52. .
  53. .
  54. .
  55. .
  56.  
  57.  
  58. <form autocomplete="off" method="post" >
  59. <div class="col-md-12">
  60. <div class="form-group">
  61. <h2 class="">Uzupełnij dane</h2>
  62.  
  63. <?php
  64.  
  65.  
  66.  
  67. if (isset($msg)) {
  68. echo $msg;
  69. }
  70. ?>
  71.  
  72. </div>
  73. <div class="form-group">
  74. <hr>
  75. </div>
  76. <div class="form-group">
  77.  
  78.  
  79.  
  80.  
  81.  
  82. <?php
  83. echo 'id' ,$idteam2['Team_idTeam'], 'dd',$tentrener, 'id usera' , $userRow['idUser'];
  84.  
  85. ?>
  86.  
  87. <h5>Data
  88. <p>
  89. <div class="input-group">
  90. <span class="input-group-addon">
  91. <span class="glyphicon glyphicon-calendar"></span>
  92. </span>
  93. <input class="form-control" type="text" required="" id='datetimepicker2' placeholder="Data treningu" name="data" maxlength="10">
  94. </div>
  95. </div>
  96.  
  97.  
  98. <div class="form-group">
  99.  
  100. <h5>Zawartość
  101. <p>
  102. <div class="input-group">
  103. <span class="input-group-addon">
  104. <span class="glyphicon glyphicon-plus"></span>
  105. </span>
  106.  
  107. <select class="form-control" name="zawartosc" maxlength="20">
  108. <option value="1">1</option>
  109. <option value="2">2</option>
  110. <option value="3">3</option>
  111. <option value="4">4</option>
  112. <option value="5">5</option>
  113. <option value="6">6</option>
  114. </select>
  115.  
  116.  
  117. </div>
  118.  
  119.  
  120. </div>
  121.  
  122.  
  123. <table class="table ">
  124. <thead>
  125. <tr>
  126. <th>#</th>
  127. <th>Imię</th>
  128. <th>Nazwisko</th>
  129. <th>Obecność</th>
  130. </tr>
  131. </thead>
  132. <tbody>
  133.  
  134.  
  135. <?php
  136.  
  137. $tenidteam2=$idteam2['Team_idTeam'];
  138.  
  139. $Z2query = $DBcon->query("SELECT * FROM zawodnik WHERE Team_idTeam=".$tenidteam2." ");
  140.  
  141.  
  142. $ileZ2=$Z2query->num_rows;
  143.  
  144. for ($i=0; $i <$ileZ2; $i++)
  145. {
  146.  
  147.  
  148.  
  149. $dzieckoRowZ2=$Z2query->fetch_array();
  150.  
  151. ?>
  152.  
  153.  
  154.  
  155. <tr>
  156. <td> <?php echo $i+1 ?></td>
  157. <td> <?php echo $dzieckoRowZ2['imie']?></td>
  158. <td> <?php echo $dzieckoRowZ2['nazwisko']?>
  159. </td>
  160.  
  161. <input class="form-control" type="hidden" required="" placeholder="Imię" maxlength="30" name="idzaw" value="<?php echo $dzieckoRowZ2['idzawodnik'] ; ?>">
  162.  
  163. <td>
  164.  
  165. <select class="form-control" name="obecnosc" maxlength="20">
  166. <option value="1">Obecny</option>
  167. <option value="2">Nieobecny</option>
  168.  
  169. </select>
  170.  
  171. </td>
  172.  
  173. </tr>
  174.  
  175.  
  176.  
  177. <?php
  178.  
  179. }
  180.  
  181.  
  182. $DBcon->close();
  183. ?>
  184.  
  185.  
  186. </tbody>
  187. </table>
  188.  
  189. <div class="form-group">
  190. <hr>
  191. </div>
  192. <div class="form-group">
  193. <button class="btn btn-block btn-primary" name="btn-dodajtr" type="submit">Potwierdź</button>
  194. </div>
  195. <div class="form-group">
  196.  
  197. </div>
  198.  
  199. </div>
  200. </form>
  201.  
nospor
w petli generujesz zestaw ppol i kazdy kolejny zestaw ma takie samo name i nadpisuja sie nawzajem. No nie oczekuj, ze html/php bedzie magicznie wiedzial jak to rozbic.

Jezeli juz chcesz to miec wszystko w jednym formie, to nadaj polom, np. nazwe tablicowa. Wowczas bedziesz mial tablice na kazde pole ktore bedzie zawierala wszystkie pola

nie:
name="obecnosc"
a
name="obecnosc[]"

analogicznie reszta
mattii
czyli np:

  1. name="obecność[$i]"


gdzie $i to jesli ilość ile razy for się wykonuje ?

i potem dodając do bazy to też insert w pętli for ma być - który ma się wykonać tyle samo razy i za każdym razem zapisywać te wartości ?
trzczy
nie

Cytat
$educationValues = $_POST['education']; // Returns an array


https://stackoverflow.com/a/4689190/5673289
mattii
czyli mam:

  1. <tr>
  2. <td> <?php echo $i+1 ?></td>
  3. <td> <input class="form-control" required="" placeholder="Imię" maxlength="30" name="imie[]" value="<?php echo $dzieckoRowZ2['imie'] ; ?>" disabled></td>
  4. <td> <input class="form-control" required="" placeholder="Nazwisko" maxlength="30" name="nazwisko[]" value="<?php echo $dzieckoRowZ2['nazwisko']; ?>" disabled>
  5. </td>
  6.  
  7. <input class="form-control" type="hidden" required="" placeholder="Imię" maxlength="30" name="idzaw[]" value="<?php echo $dzieckoRowZ2['idzawodnik'] ; ?>">
  8.  
  9. <td>
  10.  
  11. <select class="form-control" name="obecnosc[]" maxlength="20">
  12. <option value="1">Obecny</option>
  13. <option value="2">Nieobecny</option>
  14.  
  15. </select>
  16.  
  17.  
  18. </td>
  19.  
  20.  
  21. </tr>
  22.  


i

  1. if ($pyt) {
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9. $tenidteam2=$idteam2['Team_idTeam'];
  10.  
  11. $Z2query = $DBcon->query("SELECT * FROM zawodnik WHERE Team_idTeam=".$tenidteam2." ");
  12.  
  13.  
  14. $ileZ2=$Z2query->num_rows;
  15.  
  16.  
  17.  
  18. $querytrening = $DBcon->query("SELECT * FROM Trening WHERE idTrening = ".$last." ");
  19.  
  20. $idtrening=$querytrening->fetch_array();
  21.  
  22. $idtr=$idtrening[idTrening];
  23.  
  24. for ($i=0; $i <$ileZ2; $i++)
  25. {
  26.  
  27.  
  28.  
  29. $dzieckoRowZ2=$Z2query->fetch_array();
  30.  
  31.  
  32.  
  33. $idzaw[$i] = strip_tags($_POST['idzaw[$i]']);
  34. $obecnosc[$i] = strip_tags($_POST['obecnosc[$i]']);
  35. $obecnosc = $DBcon->real_escape_string($obecnosc[$i]);
  36. $idzaw = $DBcon->real_escape_string($idzaw[$i]);
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43. $querytobecnosc = "INSERT INTO obecnosc (idobecnosc,present, Trening_idTrening, Trening_Team_idTeam,Trening_Team_Trener_idTrener, zawodnik_idzawodnik, zawodnik_Team_idTeam, zawodnik_Team_Trener_idTrener )
  44. VALUES ('','$obecnosc','$idtr','$tenidteam','$tentrener',' $idzaw',' $tenidteam',' $tentrener') ";
  45.  
  46. $pyt2=$DBcon->query($querytobecnosc);
  47.  



ale dalej coś nie gra..bo $pyt2 się nie wykonuje...

a jak wyświetlam same zmienne
echo $idzaw;
echo $obecnosc;
z tej tablicy z formularza to też pusto...
nospor
wlacz wyswietlanie bledow bo masz ich pelno
Ogarnij tez w manualu podstawy tablic.
mattii
Cytat(nospor @ 16.11.2017, 12:56:22 ) *
wlacz wyswietlanie bledow bo masz ich pelno
Ogarnij tez w manualu podstawy tablic.


to znaczy ? mam notepad++ on nie wyswietla bledow ... chyba ?

co do tablic to w czym jest błąd ?
viking
To nie edytor ma wyświetlać błędy tylko PHP.
W konfiguracji (gdzieś na początku pliku:

  1. ini_set('display_errors', true);
nospor
Cytat
co do tablic to w czym jest błąd ?
W tym, ze nie ogarniasz tablic. Mowie, zajrzyj do manuala i poducz sie podstaw bo bez tego ani rusz.
http://php.net/manual/en/language.types.array.php

teksty zreszta tez sobie odswiez
http://php.net/manual/en/language.types.string.php
mattii
czyli zmieniłem tylko zapis na $_POST['idzaw'][$i] i zaczęło działać - błędów nie wyrzuca - zapisuje też do bazy więc o to chodziło ?

  1.  
  2. for ($i=0; $i <$ileZ2; $i++)
  3. {
  4.  
  5.  
  6.  
  7. $dzieckoRowZ2=$Z2query->fetch_array();
  8.  
  9. $idzaw = strip_tags($_POST['idzaw'][$i]);
  10. $obecnosc = strip_tags($_POST['obecnosc'][$i]);
  11. $obecnosc = $DBcon->real_escape_string($obecnosc);
  12. $idzaw = $DBcon->real_escape_string($idzaw);
nospor
Tak, o to chodzilo
mattii
ok, dzięki.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.