![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 11.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich to mój pierwszy post na forum więc proszę mnie oszczędzić
mam stronę na której są dwa formularze 1. dodawanie danych do bazy(cały czas widoczny) 2. edycja danych (pojawia sie dopiero po kliknieciu w link do edycji ) pierwszy formularz działa dobrze, drugi w połowie bo pojawiają się odpowiednie dane do edycji, jednak jak wprowadzę zmiany i klikne w przycisk popraw to i tak zadziała pierwszy submit i zamiast edytowac dane formularz dodaje nowy rekord (IMG:style_emoticons/default/sad.gif) na pewno mógłbym to rozwiązać gdyby formularze odwoływały sie do osobnych skryptów, jednak podoba mi się jak działa to wszystko na jednej stronie i chciałbym aby tak zostało, jednak sam nie potrafię zmusić tego do działania. To jest mój pierwszy kontakt z PHP (ok 5 dni z tym walcze) więc proszę o wyrozumiałość. załączam fragment kodu.
kod to zlepek z tutoriali i kursów które przerobiłem w ostatnim czasie więc prosze nie krytukować jakości kodu, chociaż wszystkie sugestie mile widziane. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 116 Pomógł: 4 Dołączył: 4.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 44 Dołączył: 17.02.2004 Skąd: Wieliczka Ostrzeżenie: (10%) ![]() ![]() |
Na stronie może być i 100 formularzy, wszystko zależy od organizacji kodu.
Najprościej jest je rozróżniać po submicie, a konkretnie po jego nazwie. przykładowo
-oczywiście nazwy tych submitów muszą być unikalne! (nie mogą występować nigdzie indziej w formularzach na tej stronie) Ten post edytował neverever 11.02.2010, 23:10:54 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 11.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
@ZuyPan - niestety nie pomogło (IMG:style_emoticons/default/sad.gif)
@neverever - wygląda obiecującoale tam już mam sporo ifów i elseifów, także niestety musze przeczytać jeszcze kilka manuali, ale dzięki za nakierowanie (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Każdemu submitowi nadaj inny name. Poza tym submit z value='popraw' nie ma u Ciebie name w ogole.
Ten post edytował sadistic_son 12.02.2010, 07:07:50 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 11.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
@sadistic_son - niestety nie dało to również żadnego efektu
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 253 Pomógł: 31 Dołączył: 30.03.2009 Skąd: Szczecin Ostrzeżenie: (0%) ![]() ![]() |
a czy to Tobie pomoże?
daj znać |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Przecież obie te akcje (dodanie i edycja) to jedno i to samo różniące się raptem tylko jedną daną! Robisz formularz z wszystkimi polami jak trzeba i dodajesz jedno pole typu hidden z wartością równą id. Jeśli podczas otwierania nie będzie go -> dajesz 0 i wiesz, że to coś nowego. Jeśli masz owe id, wiesz, że to edycja. Po stronie bazy jedynie sprawdzasz czy nie ma już identycznego podczas sprawdzania "na wszelki wypadek" (nigdy nie ufaj danym usera). Wtedy wystarczy JEDEN submit dla wszystkiego. Jeśli przy submit owo pole ukryte o name = "id" ma value = 0 -> INSERT, jeśli większe od 0 -> UPDATE. Oczywiście po drodze sprawdzasz czy nie ma w bazie już takiego dubla. Pozbywasz się jednak wiele niepotrzebnego kodu. A tak jak radzą poprzednicy, najprościej użyć sprawdzenia po nazwie.
Często spotykam się z błednymi sprawdzeniami typu if( isset( !$_POST ) ) co jest dziwne, bo zmienna ta jest zawsze ustawiona (IMG:style_emoticons/default/winksmiley.jpg) Dlatego sprawdzam tak if( !empty( $_POST ) ) a zaraz potem czy aby wcisnęli właściwy guzik if( array_key_exists( 'name_submita', $_POST ) ) to Ci ujawni, czy klepnięto w interesujący Cię. Nie można bowiem kliknąc dwóch jednocześnie.Do serwera i tak dojdzie tylko jeden (poza przypadkami z modyfikacją danych post, ale to inna bajka (IMG:style_emoticons/default/winksmiley.jpg) ). Wrzucanie kilku submitów do forma i oddanie tego userowi znającemu się na rzeczy to proszenie o kłopoty. Najlepiej niech jest tylko jeden dla jednego kontrolera, a unikniesz problemów wielu. Stąd proponuję Ci usunięcie jednego i pójście w stronę odpowiedniej kontroli po stronie serwera. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 06:35 |