Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] edycja tabeli w php
Forum PHP.pl > Forum > Przedszkole
dentopolis
mam tabelę wypełnianą danymi z bazy mysql do odpowiednich pól. jak jednym przyciskiem zapisać wszystkie modyfikacje?



obecny kod:
  1.  
  2. <form name='magazyn' method='GET' action='zapiszedycjemagazynu.php'>
  3.  
  4. <table border="1" width="100%" class="table table-striped table-bordered">
  5. <tr>
  6. <td align='center'><b>kategoria</b></td>
  7. <td align='center'><b>produkt</b></td>
  8. <td align='center'><b>opakowań</b></td>
  9. <td align='center'><b>dlailuop</b></td>
  10. <td align='center'><b>cena</b></td>
  11. <td align='center'><b>użycia</b></td>
  12. <td align='center'><b>sprawdzenie</b></td>
  13. </tr>
  14.  
  15. <?php
  16. $servername = "localhost";
  17. $username = "root";
  18. $password = "";
  19. $dbname = "gabinet";
  20.  
  21. $conn = new mysqli($servername, $username, $password, $dbname);
  22.  
  23. mysqli_set_charset( $conn, 'utf8' );
  24. if ($conn->connect_error) {
  25. die("Connection failed: " . $conn->connect_error);
  26. }
  27.  
  28. $sql = "SELECT * FROM magazyn";
  29. $result = $conn->query($sql);
  30.  
  31. if ($result->num_rows > 0) {
  32. while($row = $result->fetch_assoc()) {
  33.  
  34. $id=$row["id"];
  35. $kategoria=$row["kategoria"];
  36. $produkt=$row["produkt"];
  37. $opakowan=$row["opakowan"];
  38. $dlailuop=$row["dlailuop"];
  39. $cena=$row["cena"];
  40. $uzycia=$row["uzycia"];
  41. $sprawdzenie=$row["sprawdzenie"];
  42.  
  43. echo "<input name='id' type='hidden' value='$id'>";
  44. echo "<tr>";
  45. echo "<td><input type='text' name='kategoria' value='$kategoria' size='' class='form-control text-center'></td>";
  46. echo "<td align='center'><input type='text' name='produkt' value='$produkt' size='' class='form-control text-center'></td>";
  47. echo "<td align='center'><input type='text' name='opakowan' value='$opakowan' size='2' class='form-control text-center'></td>";
  48. echo "<td align='center'><input type='text' name='dlailuop' value='$dlailuop' size='2' class='form-control text-center'></td>";
  49. echo "<td align='center'><input type='text' name='cena' value='$cena' size='20' class='form-control text-center'></td>";
  50. echo "<td align='center'><input type='text' name='uzycia' value='$uzycia' size='20' class='form-control text-center'></td>";
  51. echo "<td align='center'><input type='text' class='datepicker form-control text-center' name='sprawdzenie' value='$sprawdzenie' size='8'></td>";
  52. echo "</tr>";
  53.  
  54. }
  55.  
  56. echo "</table>";
  57.  
  58. } else {
  59. echo "";
  60. }
  61.  
  62. ?>
  63. <br/>
  64. <button type='submit' class='btn btn-danger'>zapisz</button>
  65. </form>
trueblue
Pola powinny mieć nazwę: nazwa[id]
dentopolis
dobrze, nazwę tak pola ale jak wtedy napisać kod?
Puszy
Dentopolis - użytkownicy forum.php.pl, praca zbiorowa
dr_NO
Co prawda w trochę przestarzałej wersji (mysql_) ale zasada działania taka sama (część logiczna): http://www.phpeasystep.com/mysql/10.html
Rysh
Trochę offtopic, czy waszym zdaniem nie lepiej zrobić dla każdego wiersza osobny formularz zamiast jednego zbiorowego ?
markuz
Cytat
jak jednym przyciskiem zapisać wszystkie modyfikacje?


Cytat
Trochę offtopic, czy waszym zdaniem nie lepiej zrobić dla każdego wiersza osobny formularz zamiast jednego zbiorowego ?
Rysh
Napisałem przecież że offtopic, nie odnoszę się dokładnie do tematu który założył autor - lecz jest z nim mocno związany i pytałem o zdanie bardziej doświadczonych programistów.
dr_NO
Cytat(Rysh @ 29.06.2017, 21:53:49 ) *
Napisałem przecież że offtopic, nie odnoszę się dokładnie do tematu który założył autor - lecz jest z nim mocno związany i pytałem o zdanie bardziej doświadczonych programistów.


Powiedzmy że masz zmienną ilość pól, w takim wypadku ilość formularzy obsługujących każdy z przypadków może być całkiem spora.
Puszy
Cytat(dr_NO @ 30.06.2017, 08:02:27 ) *
Powiedzmy że masz zmienną ilość pól, w takim wypadku ilość formularzy obsługujących każdy z przypadków może być całkiem spora.


Ale dzięki temu zyskujesz kontrolę, zapisujesz rzeczywiście tylko ten wiersz który chcesz zmienić. Jednak takie rozwiązanie nie ma sensu gdy strona się przeładowuje, musiałby być zastosowany AJAX, dzięki temu użytkownik może np. wprowadzić wpierw zmiany (chociażby z kartki czy Excela) a następnie weryfikować poprawność danych i zapisywać linijka po linijce.
dr_NO
Cytat
a następnie weryfikować poprawność danych i zapisywać linijka po linijce.
- dajmy na to 2000 wierszy - powodzenia.
Jeżeli chciałbym edytować jeden konkretny wiersz, to wolałbym to zrobić przez PMA, niż za każdym razem zapisywać po jednym wierszu zmiany dajmy na to w 300 rekordach. (inną sprawą jest to że bym pewnie to zrobił w excelu, i zaimportował CSV)
Puszy
Cytat(dr_NO @ 30.06.2017, 15:16:54 ) *
- dajmy na to 2000 wierszy - powodzenia.
Jeżeli chciałbym edytować jeden konkretny wiersz, to wolałbym to zrobić przez PMA, niż za każdym razem zapisywać po jednym wierszu zmiany dajmy na to w 300 rekordach. (inną sprawą jest to że bym pewnie to zrobił w excelu, i zaimportował CSV)


Równie dobrze mogę powiedzieć: Jeżeli chciałbym edytować jeden konkretny wiersz i przy tym musiał obsłużyć formularz z 2000 wierszy, to wolałbym zapisać pojedynczy wiersz.

Przecież to jest formularz dla użytkownika. Pytanie w jakim celu, jeżeli służy to za edycję wielkiego zbioru to najlepszą opcją jest połączenie kilku rozwiązań jednocześnie

- zapis jednego wiersza
- zapis wielu wierszy w zaznaczonych lub w których stwierdzono zmiany
- zapis wszystkich wierszy jednocześnie

Wtedy przy zmianie jednego pola nie wysyłasz jak głupi wszystkich inputów do serwera...
Rysh
Jakim problemem jest 300 formularzy? Podpiąć pod każdy wiersz osobny formularz i dodać zdarzenie on change w jquery i ajaxowo aktualizować rekord.
Pyton_000
Idąc dalej równie dobrze można po zmodyfikowaniu wiersza Ajaxem wysyłać tylko to co się zmieniło, więc i 1 przyciskiem aktualizujesz wszystko i tylko to co się zmieniło.
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.