Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][PHP]osługa błędów js+php
jacusek
post
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:
  1. $sql="select concat(nazwisko,imie,rok_ur) dane_os from klienci where concat(nazwisko,imie,rok_ur)='$dane_os'";
  2. $result = mysqli_query($mysqli, $sql) or die(mysqli_error($mysqli));

gdzie
  1. $dane_os=$_POST['nazwisko'].$_POST['imie'].$_POST['rok_ur'];

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:
  1. $result = mysqli_query($mysqli, $sql) or die(mysqli_error($mysqli));
  2. if(mysqli_num_rows($result)>0){
  3. $naz=$_POST['nazwisko'];
  4. $imn=$_POST['imie'];
  5. $tekst='Dane prawdopodobnie znajdują się w bazie. OK->wyszukiwarka, Anuluj->wpisze dane do bazy';
  6. $header="wyszukaj_robocze2.php?nazwisko=$naz&imie=$imn";
  7. echo "<script>if(confirm(\"$tekst\"))
  8. {
  9. window.location.href = '$header';
  10.  
  11. }
  12. else
  13. {
  14.  
  15. }
  16. </script>";
  17. }}

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ę.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
L0k0
post
Post #2





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:

  1. if(cos_istnieje) { return false; } else { dodaj_do_bazy return true; }


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.' (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 4.10.2025 - 15:15