Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Algorytm na sprawdzanie czy użytkownik coś zmienił przy formularzu do edycji danych
Taifun
post 21.09.2011, 17:19:38
Post #1





Grupa: Zarejestrowani
Postów: 222
Pomógł: 2
Dołączył: 10.07.2007

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


witam,
Jak sprawdzacie w swoich skryptach, że użytkownik dokonał jakiś zmian podczas edycji danych (standard: <form ...>)?

Ja umiem wykryć tylko, że użytkownik wysłał formularz i być może coś się zmieniło ale równie dobrze nic nie zmieni i kliknie zapisz to wyświetli mu komunikat, że "dane zapisano".
Po głowie chodzi mi porównywanie danych z bazy mysql do tych z formularza, które użytkownik przesłał ale w przypadku programowania strukturalnego i dużej ilości pól jest to trochę brzydkie.
Jakie macie na to sposoby?


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Crozin
post 21.09.2011, 17:31:01
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Jedyny sposób po sprawdzenie każdego pola z odpowiadającym mu w bazie danych. O ile formularz nie reprezentuje jakiejś paskudnie rozbudowanej (relacyjnie) struktury to nawet nie będzie to specjalnie męczące:
  1. SELECT COUNT(*) FROM tbl_name WHERE id = :id AND col_name_1 = :val1 AND col_name_2 = :val2 ...
Go to the top of the page
+Quote Post
Korab
post 21.09.2011, 17:38:08
Post #3





Grupa: Zarejestrowani
Postów: 202
Pomógł: 36
Dołączył: 10.06.2011
Skąd: Dokąd

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


Ja mam formularz, w którym inputy i textaree są aktywowane po zaznaczeniu checkboxa. Jak użytkownik chce coś zmienić, to klika checkboxa i aktywuje się do edycji odpowiednie pole.
Go to the top of the page
+Quote Post
Taifun
post 21.09.2011, 17:43:53
Post #4





Grupa: Zarejestrowani
Postów: 222
Pomógł: 2
Dołączył: 10.07.2007

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


Cytat
Jak użytkownik chce coś zmienić, to klika checkboxa i aktywuje się do edycji odpowiednie pole.

a jak zaznaczy ale nic nie zmieni to co?


--------------------
Go to the top of the page
+Quote Post
Korab
post 21.09.2011, 17:58:57
Post #5





Grupa: Zarejestrowani
Postów: 202
Pomógł: 36
Dołączył: 10.06.2011
Skąd: Dokąd

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


Na ogół zaznaczają tylko wtedy, kiedy chcą coś zmienić. A pola są takie, że osoba, która wchodzi, wie, co chce zmienić - i tylko to zaznacza. Nie jest to doskonałe rozwiązanie, ale na pewno szybsze niż porównywanie, czy coś się zmieniło, albo dodawanie wszystkiego na pałę (minimalnie szybsze, ale zawsze coś).
Go to the top of the page
+Quote Post
Taifun
post 21.09.2011, 19:52:52
Post #6





Grupa: Zarejestrowani
Postów: 222
Pomógł: 2
Dołączył: 10.07.2007

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


a są jakieś wzorce, klasy, szablony, funkcje dotyczące edytowania danych ?
Ja to pisze tak jak 100 lat temu czystym kodem php bez oop ;p


--------------------
Go to the top of the page
+Quote Post
CuteOne
post 21.09.2011, 20:08:29
Post #7





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1. foreach($_POST as $k => $v) {
  2.  
  3. foreach($row as $kk => $vv) {
  4.  
  5. if($k == $kk && $v != $vv) {
  6.  
  7. $zmien[] = $k.' = '.$v.',';
  8. }
  9. }
  10. }


Prościutki przykład jak sprawdzić czy coś się zmieniło... $row to wiersz z bazy danych. Bolączką tego rozwiązania jest to że nazy kolumn muszą odpowiadać nazwom pól z formularza ale coś za coś wink.gif

Ten post edytował CuteOne 21.09.2011, 20:10:22
Go to the top of the page
+Quote Post
Crozin
post 21.09.2011, 20:40:17
Post #8





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
Na ogół zaznaczają tylko wtedy, kiedy chcą coś zmienić. [...]
Na ogól w edycję danych wchodzi się tylko wtedy, gdy chce się coś zmienić.

Na dobrą sprawę możesz wszystko zaktualizować. MySQL sam przed wprowadzeniem zmian sprawdza czy w ogóle trzeba je wprowadzać (czy dane się różnią). W dodatku po wykonaniu UPDATE-a możesz przy pomocy ROW COUNT-a zobaczyć ile rekordów zostało faktycznie zaktualizowanych (0 - dane się nie zmieniły, 1+ - dane się zmieniły).
Go to the top of the page
+Quote Post
Taifun
post 22.09.2011, 11:16:05
Post #9





Grupa: Zarejestrowani
Postów: 222
Pomógł: 2
Dołączył: 10.07.2007

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


za ROW COUNT wielkie dzięki!


--------------------
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: 14.08.2025 - 02:05