Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sprawdzenie formularza z bazą
Skie
post
Post #1





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Witam,
Mam prosty formularz rejestracyjny na stronie, którego pola są sprawdzane za pomocą JS. I schodki zaczynają się w przypadku sprawdzania nicka usera. Nie mam zielonego pojęcia jak wprowadzić do mojego skryptu funkcję która by sprawdzała czy dany nick istniaje już w bazie danych czy też nie. Jak Wy rozwiązaliście ten problem?


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Np sprawdzając w bazie czy jest już taki login zwykłym selectem (SELECT `ID` FROM `USERS` WHERE `LOGIN`=$login;), albo poprzez insert i sprawdzenie wyniku działania: jeśli wstawił - takigo loginu nie było, a jeśli nie - to sprawdzenie czy pojawił się błąd typu 'Duplicate entry for key...' (oczywiście musisz mieć założony unikat na kolumne login)

Jeśli sprawdzasz formularz javascriptem, to możesz użyć ajaxa, który po opuszczeniu pola z loginem sprawdzi czy już taki jest w bazie.


--------------------
Go to the top of the page
+Quote Post
webasek
post
Post #3





Grupa: Zarejestrowani
Postów: 274
Pomógł: 35
Dołączył: 18.07.2008
Skąd: Kielce

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


Metodą najlepszą jest użycie ajaxa jednak jeśli nie umiesz to wczytaj do tablicy w js nicki z twojej tabeli a potem przeszukaj tabelę w js za pomocą prostego for i if. Jednak mało efektywna taka funkcja przy dużej liczbie userów.


--------------------
"Tylko dwie rzeczy są nieskończone: wszechświat oraz ludzka głupota,
choć nie jestem pewien co do tej pierwszej." Albert Einstein

Wirtualny Rynek Predykcyjny
Go to the top of the page
+Quote Post
Skie
post
Post #4





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Myślałem nad tym by zrobić to w taki sposób:
Ajaxem uruchomić plik PHP, który sprawdziłby czy dany nick jest już w bazie. Jeżeli tak to tworzyłby niewidoczny div o zawartości true, albo jeżeli nie to zawartość byłaby false. Potem Ajax by sprawdzał zawartość tego div'a i generował odpowiedni komunikat. Czy jest to dobre wyjście?


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
mike
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Hmm, czyli
ajax sprawdza bazę -> generuje diva -> sprawdza jego zawartość -> wyświetla komunikat
lub
ajax sprawdza bazę -> wyświetla komunikat
?

To teraz sam pomysl co lepsze tongue.gif
Go to the top of the page
+Quote Post
Skie
post
Post #6





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


No tak, ale jak pobrać do Ajaxa wynik działania PHP inaczej niż przez stworzenie niewidocznego diva? ;p

I dokładnie rzecz biorąc to byłoby tak:
Ajax otwiera plik PHP -> [PHP] sprawdza dostępność nicka -> [PHP] generuje diva o zawartości true/false -> [AJAX] pobiera zawartość diva -> [AJAX] wyświetla odpowiedni komunikat

Ten post edytował Skie 23.07.2008, 20:17:35


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
vokiel
post
Post #7





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Po prostu:
Ajax otwiera plik PHP -> [PHP] sprawdza dostępność nicka i zwraca true/false -> [AJAX] (funkcja zwrotna js) wyświetla odpowiedni komunikat w zależności od tego co zwraca PHP


--------------------
Go to the top of the page
+Quote Post
Trojan
post
Post #8





Grupa: Zarejestrowani
Postów: 53
Pomógł: 10
Dołączył: 17.01.2008

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


Właśnie zrobiłem sobie taki formularz u mnie wygląda to tak (tak jak napisał vokiel ):
  1. <script type="text/javascript">
  2.  
  3.      //bez tego niedziała na IE :/
  4.      var ObiektXMLHttp = false;
  5.      if (window.XMLHttpRequest){
  6.      ObiektXMLHttp = new XMLHttpRequest();
  7.            }else if(window.ActiveXObject){
  8.            ObiektXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
  9.            }
  10.  
  11.      //Sprawdzanie Loginu (1-login zajety) (0-login wolny)
  12.      function sprawdz(wartosc){
  13.            if(ObiektXMLHttp){
  14.                  //pobieranie danych
  15.                  ObiektXMLHttp.open("GET", 'sprawdz.php?wartosc='+wartosc);
  16.                  
  17.                  ObiektXMLHttp.onreadystatechange = function(){
  18.                        if(ObiektXMLHttp.readyState == 4){
  19.                              var i = ObiektXMLHttp.responseText;
  20.                              //gdy dane pobrane
  21.                              if(parseFloat(i) == 1){
  22.                              alert('Login '+wartosc+' zajęty');
  23.                                    }else if(parseFloat(i) == 0){
  24.                                    alert('Login '+wartosc+' wolny');
  25.                                    }
  26.                        }
  27.                  }
  28.                  ObiektXMLHttp.send(null);
  29.            }
  30.      }
  31.      
  32. </script>
  33.      
  34. <input name="login" type="text" onblur="sprawdz(this.value);">

  1. <?php
  2. //zawartosc pliku sprawdz.php
  3.  
  4. $wartosc = $_GET['wartosc'];
  5.  
  6. $db_baza = '******';
  7. $db_user = '******';
  8. $db_pass = '******';
  9. $db_host = '******';
  10.  
  11. $polaczenie = mysql_connect($db_host, $db_user, $db_pass);
  12. mysql_select_db($db_baza);
  13.  
  14. $czy_isnieje = mysql_num_rows(mysql_query("SELECT (`nick`) FROM `users` WHERE `nick` LIKE '$wartosc'"));
  15. echo $czy_isnieje;
  16. mysql_close($polaczenie);
  17. ?>


mam nadzieje ze pomogłem (o ile problem nie został już rozwiązany)
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 Aktualny czas: 20.08.2025 - 12:35