Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sprawdzanie rekordu, istnienie użytkownika :)
Athlan
post
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 (IMG:http://forum.php.pl/style_emoticons/default/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) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Za reply THX (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Athlan 20.01.2006, 15:41:52
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
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. ?>
(IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

poczytaj se o mysql_num_rows
Go to the top of the page
+Quote Post
LBO
post
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
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
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ś (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Athlan
post
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ą (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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??
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 559
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
musisz pobrac wartosc tego rekordu poprzez chociazby mysql_fetch_array
Go to the top of the page
+Quote Post
SongoQ
post
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
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
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

(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
LBO
post
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 07:55