Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Formularz do bazy SQL
thehaze420
post 14.03.2017, 19:55:07
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 14.03.2017

Ostrzeżenie: (0%)
-----


Witam mam kilka problemów z wstawieniem formularza do bazy danych
Tak wygląda to na stronie (układ checkbox-ów już poprawiłem)



Kod formularza




  1.  
  2. <div id="nb" style="width:600px; float:left;">
  3. <form action="wpisz_n.php" method="POST">
  4. <table border="1">
  5. <input type="submit" value="value" name="value">
  6. <thead>
  7. <th>ID</th>
  8. <th>NR</th>
  9. <th width="100">Poniedziałek</th>
  10. <th width="100">Wtorek</th>
  11. <th width="100">Środa</th>
  12. <th width="100">Czwartek</th>
  13. <th width="100">Piątek</th>
  14. <tbody>
  15. <?php
  16. $week_number = 7;
  17. $year = 2017;
  18. $date = array (5);
  19. for($day=0; $day<5; $day++)
  20. {
  21. $date[$day] = date('d/m/Y', strtotime($year."W".str_pad($week_number,2,'0',STR_PAD_LEFT).$day))."\n";
  22.  
  23. }
  24.  
  25. ?>
  26.  
  27.  
  28. <tr><td> </td>
  29. <td> </td>
  30. <td> <?php echo $date[0] ?> </td>
  31. <td><?php echo $date[1] ?> </td>
  32. <td><?php echo $date[2] ?> </td>
  33. <td><?php echo $date[3] ?> </td>
  34. <td><?php echo $date[4] ?> </td></tr>
  35.  
  36.  
  37. <?php
  38.  
  39. require_once "connect.php";
  40.  
  41. $connect = new mysqli($host, $db_user, $db_pass, $db_name);
  42. $sql = "SELECT * FROM users WHERE klasa='1a' ORDER BY nr ASC";
  43. $show = mysqli_query(($connect), ($sql));
  44. $ile = $show->num_rows ;
  45. if($ile>0)
  46. {
  47.  
  48.  
  49. for($i=1; $i<=$ile; $i++)
  50. {
  51.  
  52.  
  53. $row = $show->fetch_assoc();
  54.  
  55. $ID = $row['ID'] ;
  56. $nr = $row['nr'] ;
  57.  
  58.  
  59.  
  60.  
  61. echo '<tr><td> <input type="hidden" name="k0_$i" value="$ID"> $ID </td>';
  62. echo '<td> <input type="hidden" name="k1_$i" value="$nr"> $nr </td>';
  63.  
  64.  
  65. for($j=0; $j<5; $j++) //petla poniedzialek - piatek
  66. {
  67.  
  68.  
  69.  
  70. echo <<<END
  71. <td> <input type="hidden" name="date.$j" value="$date[$j]">1
  72. <input type="checkbox" name="1.$j.$i" value="1">2
  73. <input type="checkbox" name="2.$j.$i" value="2">3
  74. <input type="checkbox" name="3.$j.$i" value="3">4
  75. <input type="checkbox" name="4.$j.$i" value="4">5
  76. <input type="checkbox" name="5.$j.$i" value="5">6
  77. <input type="checkbox" name="6.$j.$i" value="6">7
  78. <input type="checkbox" name="7.$j.$i" value="7">8
  79. <input type="checkbox" name="8.$j.$i" value="8">
  80. </td>
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87. END;
  88.  
  89. }
  90.  
  91. echo '</tr>';
  92.  
  93.  
  94.  
  95. }
  96.  
  97. }
  98.  
  99.  
  100.  
  101. ?>
  102. </tbody>
  103. </table>
  104. </form>
  105. </div>
  106.  




Przy zaznaczeniu jak na screenie print_R($_POST) daje


Kod
Array ( [value] => value [k0_$i] => $ID [k1_$i] => $nr [date_0] => 12/02/2017 [1_0_1] => 1 [2_0_1] => 2 [3_0_1] => 3 [4_0_1] => 4 [5_0_1] => 5 [6_0_1] => 6 [7_0_1] => 7 [8_0_1] => 8 [date_1] => 13/02/2017 [1_1_1] => 1 [2_1_1] => 2 [3_1_1] => 3 [4_1_1] => 4 [5_1_1] => 5 [6_1_1] => 6 [7_1_1] => 7 [8_1_1] => 8 [date_2] => 14/02/2017 [1_2_1] => 1 [2_2_1] => 2 [date_3] => 15/02/2017 [date_4] => 16/02/2017 [3_3_2] => 3 )


$i-wiersz
$j-dzień

W bazie danych mam tabele nieobecnosci
id
data
godziny
id_ucznia

Teraz chcę żeby z tego formularza do bazy dodawało się coś takiego

W każdej komórce jest zapisane id ucznia, data, godziny(string'1,2,3,4,5,6,7,8') w zależności od zaznaczenia

Czytałem o połączeniu wartości tych pól funkcją include(), lub join()

Jestem na dobrej drodze?

Czy raczej radzicie użyć tablicy 3 poziomowej?

Kolejnym pseudoproblemem jest wybór tygodnia . Czy jeżeli dam <select> z wartościami 1-52(?) i drugiego z rokiem da rade funkcjonować ?



EDIT: Poprawiłem pętle z wybieraniem dat, nie zaczyna sie już od 0-niedzieli tylko od 1-pn smile.gif

Ten post edytował thehaze420 14.03.2017, 20:08:30
Go to the top of the page
+Quote Post
Lord
post 14.03.2017, 20:35:21
Post #2





Grupa: Zarejestrowani
Postów: 239
Pomógł: 32
Dołączył: 10.03.2004

Ostrzeżenie: (10%)
X----


Nie analizowałem całego kodu, ale:
checkboxy mozesz połaczyć
  1. <input type="checkbox" name="options[]" value="Politics"/> Politics<br/>
  2. <input type="checkbox" name="options[]" value="Movies"/> Movies<br/>
  3. <input type="checkbox" name="options[]" value="World "/> World<br/>


dzieki temu masz 1 tablice z opcjami

jezeli chcesz polaczyc tablice uzywajac seperatora jakiegos np przecinka to mozesz uzyc

http://php.net/manual/en/function.implode.php
lub to:
http://php.net/manual/en/function.serialize.php

ale raczej uzywanie takiego zapisu w bazie danej (string'1,2,3,4,5,6,7,8') nie jest najlepszym rozwiazaniem, lepiej uzyc innej tabeli z relacjiami



Ten post edytował Lord 14.03.2017, 20:40:05
Go to the top of the page
+Quote Post
thehaze420
post 15.03.2017, 17:57:30
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 14.03.2017

Ostrzeżenie: (0%)
-----


Dzięki POST teraz daje cos takiego

Kod
Array ( [value] => value [ile] => $ile [id_$i] => $ID [nr_$i] => $nr [1_1_nb] => Array ( [0] => 13/02/2017 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 ) [1_2_nb] => Array ( [0] => 14/02/2017 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 )


więc do każdej daty przypisuje dobrze godziny, nie do końca poprawne wydaje mi się
Kod
Array ( [value] => value [ile] => $ile [id_$i] => $ID [nr_$i] => $nr [1_1_nb] => Array ( [0]


zaczynam kombinować z czymś takim. Jakies rady ? Bo biore sie za prace smile.gif
  1. for($i=1; $i<=$_POST['ile']; $i++)
  2. {
  3.  
  4. $id = $_POST['id_$i'];
  5.  
  6.  
  7.  
  8. for($j=1; $j<=5; $j++)
  9. {
  10. $date.$j.$i = $_POST['$date.$i.$j'];
  11. $nb.$j.$i = $_POST['$i.$j.nb[]'];
  12. $dzien.$j.$i = implode(",", $nb.$j.$i);
  13.  
  14. echo '$string.$j.$i ||| $date.$j.$i';
  15.  
  16.  
  17. }
  18.  
  19.  
  20. }



Gdybys mógł powiedzieć coś więcej o tej tabeli którą masz na myśli smile.gif

Ten post edytował thehaze420 15.03.2017, 18:01:39
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.04.2024 - 04:49