Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sprawdzanie rekordu, istnienie użytkownika :)
Athlan
post 20.01.2006, 15:41:14
Post #1





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Mam taki problem, chcę sprawdzić, czy element (dokładnie nazwa użytkownika) istnieje już w jakimś rekordzie.

Rejestracja która dodaje użytkowników, nie patrząc czy dany już istnieje:

  1. <?php
  2.  
  3. $user = $_POST['user'];
  4. $pass = $_POST['pass'];
  5. $mail = $_POST['mail'];
  6. $gg = $_POST['gg'];
  7. $avatar = $_POST['avatar'];
  8. $sygnature = $_POST['sygnature'];
  9. $add_date = date("d.m.Y, G:i:s");
  10. $add_ip = $_SERVER['REMOTE_ADDR'];
  11.  
  12. if(!empty($user) && !empty($pass)){
  13.  
  14. $query = "INSERT INTO users VALUES('','$user','$pass','$mail','$gg','$avatar','$sygnature','$add_date','$add_date','$add_ip','$add_ip','0')";
  15. $result = mysql_query($query);
  16. if($result) { echo "Rejestracja przebiegła pomyślnie, możesz się zalogować!"; }
  17. else { echo "Błąd bazy danych! Rejestracja nie powiadła się!"; }
  18.  
  19. }
  20.  
  21. ?>


A próbowałem sprawdzić rekord robiąc tak:

  1. <?php
  2.  
  3. $user = $_POST['user'];
  4. $pass = $_POST['pass'];
  5. $mail = $_POST['mail'];
  6. $gg = $_POST['gg'];
  7. $avatar = $_POST['avatar'];
  8. $sygnature = $_POST['sygnature'];
  9. $add_date = date("d.m.Y, G:i:s");
  10. $add_ip = $_SERVER['REMOTE_ADDR'];
  11.  
  12. if(!empty($user) && !empty($pass)){
  13.  
  14. $query = "SELECT * FROM users WHERE user='$user'";
  15. $do = mysql_query($query);
  16.  
  17. while($seq = mysql_fetch_array($do)) {
  18.  
  19. if($user == $seq['user']){
  20. echo'Użytkownik o takiej nazwie już istnieje!';
  21. }
  22. else{
  23. $query2 = "INSERT INTO users VALUES('','$user','$pass','$mail','$gg','$avatar','$sygnature','$add_date','$add_date','$add_ip','$add_ip','0')";
  24. $result2 = mysql_query($query2);
  25. if($result2) { echo "Rejestracja przebiegła pomyślnie, możesz się zalogować!"; }
  26. else { echo "Błąd bazy danych! Rejestracja nie powiadła się!"; }
  27. }
  28. }
  29. }
  30.  
  31. ?>


No ale nie działa... owszem wykrywa użytkownika w tabeli gdy już taki jest (np wpisuje usera ROOT1 i istnieje), ale jak rejestruje jeszcze nieistniejącego (np podaje ROOT2) to mi go nie dodaje... nie wyświetla się żaden komunikat (pusto tongue.gif )

Jak sprawdzić, czy użytkownik istnieje w tabeli, aby zarejestrować nowego?

P.S. Acha i jeszcze... jak sprawdzić ile jest urzytkowników w tabeli (funkcja count($do); jakos mi nie sadziałała) questionmark.gif

Za reply THX smile.gif

Ten post edytował Athlan 20.01.2006, 15:41:52


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
nospor
post 20.01.2006, 15:44:23
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. <?php
  2. while($seq = mysql_fetch_array($do)) {
  3.  
  4. if($user == $seq['user']){
  5. }
  6. else{
  7. $query2 = "INSERT INTO users VALUES('','$user','$pass','$mail','$gg','$avatar','$sygnature','$add_date','$add_date','$add_ip','$add_ip','0')";
  8. }
  9. }
  10. ?>
laugh.gif , przepraszam

zastanow sie co robisz. chcesz dodac ludka gdy go nie ma. ale dodajesz go w petli, do ktorej wchodzi tylko wtedy, gdy ludek jest. to ci sie nigdy nie spelni smile.gif

poczytaj se o mysql_num_rows


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
LBO
post 20.01.2006, 16:25:11
Post #3





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


jezeli chodzi o sprawdzenie czy uzytkownik istnieje to najefektowniej uzyc:
  1. <?php
  2. $query = "SELECT COUNT(*) FROM users WHERE user = $user";
  3. ?>

to zapytanie zwraca tylko liczbe znalezionych wierszy. jezeli zwroci 0 to uzytkownik o danym loginie $user nie istnieje, jezeli 1 to istnieje...
Go to the top of the page
+Quote Post
SongoQ
post 20.01.2006, 19:38:16
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


@LBO
Cytat
jezeli chodzi o sprawdzenie czy uzytkownik istnieje to najefektowniej uzyc:


Nie prawda. Jesli masz warunek na usera i dodatkowno stusujesz jeszcze COUNT to wykorzystujesz dodatkowo baze, lepiej jest sprawdzic ile rekordow zwrocil niz stosowac COUNT. Czas jest tu niewielki ale zawsze cos.


--------------------
Go to the top of the page
+Quote Post
Athlan
post 20.01.2006, 20:57:18
Post #5





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Wystarczy mi to, co napisał LBO, thx serdeczne... nie wpadłem na takie coś tongue.gif


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
Athlan
post 22.01.2006, 12:14:12
Post #6





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


Kontynuuję temat http://forum.php.pl/index.php?showtopic=40503, na podstawie odpowiedzi @LBO (chciałem żeby poszedł jako nowy topic bo tamtych starych nie przeglądają tongue.gif).

No więc robię tak jak mi kazałeś
  1. <?php
  2.  
  3. if(!empty($user) && !empty($pass)){
  4.  
  5. $query = "SELECT COUNT(*) FROM users WHERE user='$user'";
  6. $result = mysql_query($query);
  7.  
  8. if($result != 0){
  9. echo'Uzytkownik o takim nicku już istnieje w naszej bazie!';
  10. }
  11. else{
  12. $sql++;
  13. $query2 = "INSERT INTO users VALUES('','$user','$pass','$mail','$gg','$avatar','$sygnature','$add_date','$add_date','$add_ip','$add_ip','0')";
  14. $result2 = mysql_query($query2);
  15. if($result2) { echo "Rejestracja przebiegła pomyślnie, możesz się zalogować!"; }
  16. else { echo "Błąd bazy danych! Rejestracja nie powiadła się!"; }
  17. }
  18. }
  19.  
  20. ?>


No i według powyższego skryptu, jeżeli wynik szukania podanego użytkownika w bazie już zarejestrowanych nie będzie się równać 0 nie doda go... jeżeli będzie inne niż 0 doda.

Przynajmniej ma to tak działać ale nie działa smile.gif


I drugi mój sposób:

  1. <?php
  2.  
  3. $query = "SELECT COUNT(*) FROM users WHERE user='$user'";
  4. $result = mysql_query($query);
  5. $do = mysql_num_rows($result);
  6.  
  7. echo"Zmienna $do zwraca: $do";
  8.  
  9. ?>


I dlaczego za każdym razem $do zwraca mi 1, rozumiem jak uzes istnieje... ale jak go nie ma to też pisze 1 :/
Co robię źle??


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
nospor
post 22.01.2006, 12:19:06
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




temat lacze. ale nie rob tak wiecej bo warna zalapiesz.

twoje zapytanie zawsze zrowci ci jeden rekord. w przypadku gdy nie ma usera to zawartosc tego tekotdu bedzie "0", ale zwroconyhc rekordów bedzie 1 smile.gif
musisz pobrac wartosc tego rekordu poprzez chociazby mysql_fetch_array


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
SongoQ
post 22.01.2006, 12:22:28
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Cytat
$result = mysql_query($query);
if($result != 0){

Cos takiego nie istenieje bo to sprawdza czy wystapil blad czy nie. Posluchaj @nospor'a


--------------------
Go to the top of the page
+Quote Post
LBO
post 22.01.2006, 13:25:07
Post #9





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


przyklad:
  1. <?php
  2.  
  3. $query = "SELECT COUNT(*) FROM users WHERE user='$user'";
  4. $result = mysql_query($query);
  5. $isUser = mysql_fetch_row($result);
  6. if ($isUser[0] == 1) {
  7. print($user.' istnieje w bazie<br />');
  8. } else {
  9. //code
  10. }
  11.  
  12. ?>


Ten post edytował LBO 22.01.2006, 13:28:36
Go to the top of the page
+Quote Post
Athlan
post 22.01.2006, 15:03:36
Post #10





Grupa: Developerzy
Postów: 823
Pomógł: 12
Dołączył: 18.12.2005

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


@LBO

Mam pytanie do linii 6 Twojego kodu. Dlaczego właśnie
Kod
$isUser[0]

a nie
Kod
$isUser

questionmark.gif


--------------------
Portfolio: Vgroup.pl | athlan.pl | Test.php.pl - sprawdź się z wiedzy o PHP i ułóż własne pytania!
Pomogłem? Kliknij pod postem.
Go to the top of the page
+Quote Post
LBO
post 22.01.2006, 15:09:46
Post #11





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

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


poniewaz mysql_fetch_row() zwraca rekord jako tablice indeksowana...

PS. jakas niechec do manuala?
mysql_fetch_row" title="Zobacz w manualu php" target="_manual
Cytat
pobiera jeden wiersz danych z wyniku skojarzonego z podanym identyfikatorem wyniku. Wiesz zwracany jest jako tablica. Komórki są umieszczone pod oddzielnymi ofsetami, zaczynając od 0.


Ten post edytował LBO 22.01.2006, 15:13:30
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.07.2025 - 22:40