![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 3 Dołączył: 18.10.2009 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Stworzyłem sobie plik wrzucający dane do bazy. Chcąc uniknąć powtarzania rekordów chciałem wymusić sprawdzenie czy dane osoby będące już w bazie (MYSQL) nie są już raz wpisane. Sprawdzam to na podstawie pytania:
gdzie
Wymyśliłem sobie, że będę informował użytkownika, żeby sprawdził czy dana osoba czasami nie jest już w bazie (a przecież te same nazwiska i rok urodzenia mogą się zdarzyć). Takie ostrzeżenie miałoby mieć formę komunikatu js w następującej formie:
No właśnie - kiedy warunek jest spełniony to owszem pokazuje mi się informacja o konieczności sprawdzenia, ale kiedy potwierdzam to owszem przekierowuje mnie do wyszukiwarki, ale już z wpisanymi danymmi, czy ze zduplikowanym rekordem. Z kolei po naciśnięciu anuluj jest tak jak sobie założyłem - tzn wpisuje mi dane do bazy. Cały problem wydaje się polegać na konieczności zatrzymania działania skryptu PHP przy spełnieniu tych warunków (tzn. przekierownia do wyszukiwarki). Niestety exit w js nie spełnia swojej funkcji. Czy może mi ktoś pomóc jak ten problem rozwiązać. Z góry dziękuję. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 186 Pomógł: 18 Dołączył: 2.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Przecież JS działający w przeglądarce nie zatrzymuje działania PHP na serwerze. Musisz zdefiniować akcję po kliknięciu potwierdzenia która doda rekord do bazy. Pomijam już sposób sprawdzania czy dana osoba jest już w bazie który jest... hmm dziwny
![]() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 161 Pomógł: 4 Dołączył: 18.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Po co robić sprawdzanie czy ktoś istnieje w bazie skoro może się zduplikować? Na jakiej podstawie określisz czy jednak ktoś ma być dodany czy nie? Wg mnie to sprawdzanie traci sens. Nawet jeśli się ktoś powtórzy i dostaniesz komunikat to co wtedy? Poszukasz w bazie? Ale czego? A co z użytkownikiem, który takiej możliwości nie ma? Jeśli coś może się potarzać sprawdzanie nie ma sensu. Jeśli jednak patrzymy już czysto technicznie to sprawdzanie i działanie sprawdzania należy zrobić w PHP. Jak napisał Kolega wyżej - js nie zatrzyma PHP. Musisz więc zrobić coś na sposób:
Następnie na podstawie danych z return'a wyświetlasz odpowiedni komunikat o powodzeniu lub powtórzeniu. Jeśli w przypadku wystąpienia powtórzenia mimo wszystko chcesz dodać do bazy to musisz obsłużyć kolejny element. Według mnie najlepiej to zrobić przy użyciu Ajax'a i jQuery. Pozdrawiam! P.S. Rozwalił mnie tekst 'Dane prawdopodobnie znajdują się w bazie.' ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 3 Dołączył: 18.10.2009 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Dlaczego uważasz, że taki sposób jest dziwny?W bazie mam aktualnie trochę powtórzonych rekordów. Masz jakiś lepszy pomysł, bo na niego nie wpadłem niestety. Po PESELu (jak mam) to już sprawdzam. Ale chętnie jakiś inny pomysł wdrożę.
Co do js to wiem, ze nie zatrzymuje php (to by było kompletnie nielogiczne) ale nie miałem pomysłu jak to inaczej zrobić dlatego napisałęm pierwszego posta. Nie zauważyłem nowej odpowiedzi. ![]() @L0k0 pozwolę się nie do końca z Tobą zgodzić. To sprawdzanie chce wprowadzić po 2 latach prowadzenia bazy. Ludzie wpisujący różne rzeczy są z natury leniwi, a ja nie chcę dwa razy wpisywać do bazy tej samej osoby. To nie są jedyne dane, które posiadam (jest też adres, nr tel i inne), dlatego bez sensu po dwa razy wpisywać to samo. A jeżeli ktoś się powtórzy to użytkownik, żeby sprawdzić jest przekierowywany do przeglądarki, gdzie może sobie zweryfikować czy osoba, którą wprowadza jest już raz wprowadzona (choćby po tych dodatkowych danych, które już posiadam). Właśnie dlatego napisałem, że dane PRAWDOPODOBNIE znajdują się w bazie. Mimo wszystko dziękuję za sugestię i pozdrawiam Ten post edytował jacusek 19.03.2014, 14:53:11 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 186 Pomógł: 18 Dołączył: 2.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Chodziło mi o to że robisz konkatenację łańcuchów i po niej wyszukujesz rekordy. W ten sposób nie korzystasz m.in. z indeksów (o ile masz takie założone).
--edit Poza tym jeżeli zbierasz numery pesel to dlaczego nie sprawdzasz czy taki jest już w bazie? W przeciwnym wypadku i tak nie masz pewności czy Jan Kowalski jest tym Janem Kowalskim którego masz już w bazie? Ten post edytował ghost1511 20.03.2014, 08:39:45 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 161 Pomógł: 4 Dołączył: 18.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
No to sprawa wydaje się być bardzo prosta:
1. Sprawdzasz czy pewne dane już istnieją w bazie 2. Jeśli istnieją pobierasz rekord 3. Zwracasz rekord i wyświetlasz go w komunikacie (jakiś dialog czy coś) 4. Dialog posiada przyciski 'Dodać mimo wszystko' oraz 'Nie dodawaj' 5. Po wciśnięciu odpowiedniego wykonujesz kod PHP Czyli masz PHP + jQuery (dialog) + Ajax (jedna funkcja). Pozdrawiam! |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 262 Pomógł: 3 Dołączył: 18.10.2009 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Już się tłumaczę
![]() Po numerach PESEL też sprawdzam i tam oczywiście nie mam problemów - tylko nie zawsze ten numer PESEL posiadam (z różnych historycznych już powodów). W momencie kiedy sprawdzam PESEL to oczywiście nie sprawdzam już dalej konkatenacją, bo to rzeczywiście byłoby bez sensu. W takim przypadku nie mogę założyć indeksów bo i na czym i jakich? Indeks ma na id rekordu, PESEL unique i właściwie to wszystko co ma sens żeby zrobić. Z ajaxem czuję się słabo, wiem, że można to zrobić w ten sposób, ale muszę jeszcze doczytać ![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 186 Pomógł: 18 Dołączył: 2.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
No nie wiem... wydaje mi się że "klasyczny" sposób jest bardziej elastyczny i łatwiejszy do modyfikacji.
Co do AJAX'a to użyj np jQuery, które odwala za Ciebie 90% roboty związanej z ajaxem. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 20:29 |