Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Jak sprawdzić czy użytkownik istnieje w bazie ?
Gefers
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 5.09.2013

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


Witam,

Jestem początkujący i mam do was pytanie (IMG:style_emoticons/default/biggrin.gif) Jak sprawdzić czy użytkownik istnieje w bazie ?

Z góry dzięki za odpowiedź.
Go to the top of the page
+Quote Post
kujol
post
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


webmade.org/kursy-online/kurs-mysql.php

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





Grupa: Zarejestrowani
Postów: 453
Pomógł: 16
Dołączył: 25.05.2004
Skąd: Gorzów Wlkp.

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


  1. SELECT id FROM users WHERE username = 'nazwa'
Go to the top of the page
+Quote Post
wujek2009
post
Post #4





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


do powyższego zapytania dodałbym LIMIT 1 ;-)
Go to the top of the page
+Quote Post
Gefers
post
Post #5





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 5.09.2013

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


Mógł by mi ktoś z was napisać pełną funkcję to sprawdzenia czy użytkownik istnieje w bazie i wyświetlenia błędu oraz zatrzymania skryptu? Z góry dziękuję.
Go to the top of the page
+Quote Post
kujol
post
Post #6





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


Jeśli jesteś początkujący to powinieneś sobie sam radzić, jeśli chcesz czegoś się nauczyć.
My możemy cię nakierować, jeśli chcesz aby ci ktoś to napisał to zmień dział.
Znajdziesz wiele kursów na ten temat.

Do sprawdzania służy
if ()
Wysyłasz zapytanie, a w zamian otrzymujesz 1 lub 0 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Gefers
post
Post #7





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 5.09.2013

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


Jakoś nie potrafię sobie z tym poradzić (IMG:style_emoticons/default/biggrin.gif)

Kod
function czyIstnieje() {
$con = dbConnect();
    $qry = "SELECT user_name FROM user WHERE user_name = '$imie' LIMIT 1";
    $sql = mysql_query($qry);
    if($sql[0] == 1) {
      echo 'Użytkownik o nazwie $imie istnieje!';
        return false;
    } else {
       echo 'Rejestracja pomyślna!';
       return true;
    }
}


Co tu jest nie tak ?

Ten post edytował Gefers 6.09.2013, 18:13:05
Go to the top of the page
+Quote Post
kujol
post
Post #8





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


Kod
if (mysql_num_rows
(mysql_query("SELECT login
haslo FROM uzytkownicy
WHERE login = '".$login."'
&& haslo =
'"$haslo"' ")) >
0 )

else
{
}


Go to the top of the page
+Quote Post
Gefers
post
Post #9





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 5.09.2013

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


Coś mi to nie działa.
Kod
function czyIstnieje() {
    if (mysql_num_rows
    (mysql_query("SELECT user_imie
    user_password FROM user
    WHERE user_imie = '".$imie."'
    && user_password =
    '".$haslo."'")) >
    0 ) {
        echo 'Istnieje';
    } else {
        echo 'Nie istnieje';
    }
}

Nazwa mojej tabeli to : user
Kolumny po kolei: user_imie, user_password, user_email, user_id.

Proszę o pomoc.
Z góry dziękuje.

Ten post edytował Gefers 7.09.2013, 11:33:28
Go to the top of the page
+Quote Post
Turson
post
Post #10





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


SELECT user_imie user_password
Dane, która ma pobrać wpisujesz po przecinku. Zamień && na AND.


To powinno być w dziale "Przedszkole"

Ten post edytował TursoN 7.09.2013, 11:42:01
Go to the top of the page
+Quote Post
Hosiek
post
Post #11





Grupa: Zarejestrowani
Postów: 181
Pomógł: 0
Dołączył: 25.11.2010

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


ja bym zrobił to tak
  1. function czyIstnieje()
  2. {
  3. $query = mysql_query("SELECT * FROM `user` WHERE `user_imie` '{$imie}' AND `user_password` = '{$haslo}'");
  4. if($query)
  5. {
  6. echo 'Istnieje';
  7. } else {
  8. echo 'Nie istnieje';
  9. }
  10. }


tyle ze zamiast echo robisz sobie return i w wywołaniu funkcji sprawdzasz co ci zwraca.

Ten post edytował Hosiek 7.09.2013, 12:49:15
Go to the top of the page
+Quote Post
markonix
post
Post #12





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Hosiek Twój kod jest nieprawidłowy - praktycznie zawsze pokaże że istnieje bo mysql_query nie zwraca prawdy gdy pobierze wynik, a wykona poprawnie zapytanie.

  1. <?php
  2. function userExists($username) {
  3. $query = mysql_query('SELECT * FROM `users` WHERE `username` = "'. $username .'" LIMIT 1');
  4. return (bool)mysql_num_rows($query);
  5. }


Limit można sobie darować w przypadku gdy username jest kolumną unikalną.
Go to the top of the page
+Quote Post
Gefers
post
Post #13





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 5.09.2013

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


Tym razem wywala coś takiego...


Kod
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given


Dzięki za wcześniejsze odpowiedzi czekam na dalszą pomoc (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
valkirek
post
Post #14





Grupa: Zarejestrowani
Postów: 117
Pomógł: 6
Dołączył: 24.07.2013

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


Bo nie wystarczy tylko wkleić podanego przykładu a pomyśleć, u Ciebie w bazie pole username nie istnieje.
Go to the top of the page
+Quote Post
Gefers
post
Post #15





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 5.09.2013

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


Tak wiem, pozamieniałem wszystkie pola tak jak u mnie w bazie są. I mi wywala taki błąd...
Go to the top of the page
+Quote Post
Turson
post
Post #16





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Wklej kod?
Go to the top of the page
+Quote Post
markonix
post
Post #17





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Temat: Jak poprawnie zadac pytanie
Go to the top of the page
+Quote Post
Gefers
post
Post #18





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 5.09.2013

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


Może niepoprawnie mam zbudowaną bazę danych?

Powiedzcie jaki parametry mam zastosować, gdy chce w bazie mieć:

user_imie,
user_nazwisko,
user_haslo,
user_email


Z góry dzięki.
Go to the top of the page
+Quote Post
Gregoreq
post
Post #19





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 8.09.2013

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


Nie wiem czy o to chodzi. Jeśli chodzi o MySQL to musze się bardzo doszkolić, więc za wszystkie błędy przepraszam i poprawe obiecuje (IMG:style_emoticons/default/smile.gif)

imie VARCHAR (50), Null: Nie, Domyślne: Brak
nazwisko VARCHAR(80), Nie, Brak
haslo varchar(255), Nie, Brak
email varchar(100), Nie, Brak

Ten post edytował Gregoreq 8.09.2013, 18:20:01
Go to the top of the page
+Quote Post
Turson
post
Post #20





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Kolejny potrzebujący, który myśli, że wszyscy tutaj są jasnowidzami i wiedzą jaki on ma kod...
Go to the top of the page
+Quote Post
markonix
post
Post #21





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Cytat(Gefers @ 8.09.2013, 18:04:51 ) *
Może niepoprawnie mam zbudowaną bazę danych?

Co rozumiesz przez niepoprawną w tym momencie?

Nazewnictwo kolumn nie ma znaczenia na tym etapie nauki, byle stosowane konsekwentnie w bazie i przy zapytaniach (PHP).
Go to the top of the page
+Quote Post
Gefers
post
Post #22





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 5.09.2013

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


Chodziło mi raczej o nadawanie atrybutów czy coś w tym stylu (IMG:style_emoticons/default/biggrin.gif) .

I jeszcze jedno pytanie jak wysyłam zapytanie do bazy to co ona zwraca true i false czy coś innego ? Bo nadal nie jestem w stanie określić jaki warunek mam stworzyć aby ona wyświetlała że istnieje dany użytkownik.
Go to the top of the page
+Quote Post
Turson
post
Post #23





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Sam select nie zwróci Ci wyniku, czy istnieje dany użytkownik. Musisz do tego dodać mysql_num_rows i dopiero się dowiesz
Go to the top of the page
+Quote Post
markonix
post
Post #24





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Cytat(Gefers @ 10.09.2013, 15:28:27 ) *
I jeszcze jedno pytanie jak wysyłam zapytanie do bazy to co ona zwraca true i false czy coś innego ?


Przecież dałem Ci gotową funkcję, która zwraca prawdę/fałsz więc po co się o to pytasz?

Ten post edytował markonix 10.09.2013, 21:07:23
Go to the top of the page
+Quote Post
Gefers
post
Post #25





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 5.09.2013

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


  1. $con = dbConnect();
  2. $qry = mysql_query("SELECT * FROM user WHERE user_imie = '". $imie ."' LIMIT 1");
  3. $wynik = mysql_num_rows($qry);
  4. mysql_close($con);
  5. echo "$wynik";



Stworzyłem coś takiego, i zwraca mi tylko 0...


Z góry dzięki za pomoc.
Go to the top of the page
+Quote Post
markonix
post
Post #26





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Skorzystasz w końcu z mojej funkcji (oczywiście zmieniając nazwy kolumn)?
Go to the top of the page
+Quote Post
Dejmien_85
post
Post #27





Grupa: Zarejestrowani
Postów: 251
Pomógł: 23
Dołączył: 23.04.2013

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


Pany, tożto obciach, aby w dzisiejszych czasach używać mysql_query - shame on you! (IMG:style_emoticons/default/wink.gif)

PS Mysql to przeżytek, jak coś to brać się za mysqli lub PDO.

Ten post edytował Dejmien_85 10.09.2013, 23:00:08
Go to the top of the page
+Quote Post
com
post
Post #28





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


tak jak wspomniał Dejmien_85 to się aż prosi o PDO czy mysqli a co do zapytania to po jakiego grzyba pobierasz wszystko skoro itak korzystasz z jednego pola ... w zasadzie jeden mądry wrzucił Limit 1 i każdy go powiela, to poco wgl liczyć te wiersze skoro zawsze będzie bool... dajesz po prostu
  1. function uExists($user) {
  2. $qry = mysql_query("SELECT * FROM users WHERE userlogin = '". $user ."'") or die ("...");
  3. return (bool) mysql_num_rows($qry) ? : 0; // ponieważ przy bool echo zera nie wyświetla ;)
  4. }
  5. echo uExists("ala");


Poza tym jak chcesz sprawdzić czy user jest w bazie to rekord musi być unikalny, wiec nie imię tylko jakiś login... poza tym o jakiś index to aż sie prosi (IMG:style_emoticons/default/wink.gif)



http://webmade.org/kursy-online/mysql_num_...-kurs-mysql.php

Ten post edytował com 11.09.2013, 00:49:15
Go to the top of the page
+Quote Post
markonix
post
Post #29





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Cytat(com @ 11.09.2013, 01:29:15 ) *
tak jak wspomniał Dejmien_85 to się aż prosi o PDO czy mysqli a co do zapytania to po jakiego grzyba pobierasz wszystko skoro itak korzystasz z jednego pola ... w zasadzie jeden mądry wrzucił Limit 1 i każdy go powiela, to poco wgl liczyć te wiersze skoro zawsze będzie bool... dajesz po prostu
  1. function uExists($user) {
  2. $qry = mysql_query("SELECT * FROM users WHERE userlogin = '". $user ."'") or die ("...");
  3. return (bool) mysql_num_rows($qry) ? : 0; // ponieważ przy bool echo zera nie wyświetla ;)
  4. }
  5. echo uExists("ala");


A po co wrzucasz kolejny kod, który jest praktycznie identyczny do mojego?

Co do PDO/mysqli to praktycznie można w co drugim temacie napisać, że warto go używać.
Dla problemu nie ma znaczenia użyte API. Temat dotyczy logiki jakiegoś problemu, a nie sposobu łączenia się z bazą.
Go to the top of the page
+Quote Post
Gefers
post
Post #30





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 5.09.2013

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


Dziękuję użytkownikowi com za udzielenie poprawnego rozwiązania oraz wszystkim osobom wypowiadającym się w tym temacie (IMG:style_emoticons/default/biggrin.gif) .



Problem rozwiązany.


/Close
Go to the top of the page
+Quote Post
com
post
Post #31





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


Owszem zgadzam się, ale masz przecież
Cytat(Gefers @ 7.09.2013, 18:02:51 ) *
Tym razem wywala coś takiego...


Kod
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given


Dzięki za wcześniejsze odpowiedzi czekam na dalszą pomoc (IMG:style_emoticons/default/biggrin.gif)


Wiec skorzystano z tego co pisałeś ale nie chciało poprawnie działać, a moje działa dlatego dałem kod...
w zasadzie to tak powinno być... niby subtelna różnica ale jednak...
  1. function uExists($user) {
  2. $qry = mysql_query("SELECT user FROM users WHERE user = '". $user ."'") or die ("...");
  3.  
  4. return (bool) mysql_num_rows($qry) ? : 0;
  5. }
  6. echo uExists("ala");


bo pobieranie całej bazy w tym wypadku mija się z celem, a pisałem na szybko i nie zauważyłem tego (IMG:style_emoticons/default/wink.gif)

Cytat
Dla problemu nie ma znaczenia użyte API. Temat dotyczy logiki jakiegoś problemu, a nie sposobu łączenia się z bazą.

Owszem dla problemu może nie ma, choć to wcale nie jest tylko sposób łączenia z bazą, a poza tym jak php.net informuje This extension is deprecated as of PHP 5.5.0, and will be removed in the future.

Ten post edytował com 11.09.2013, 19:57:55
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 - 19:24