Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak sprawdzić czy użytkownik istnieje w bazie ?
Forum PHP.pl > Forum > PHP
Gefers
Witam,

Jestem początkujący i mam do was pytanie biggrin.gif Jak sprawdzić czy użytkownik istnieje w bazie ?

Z góry dzięki za odpowiedź.
kujol
webmade.org/kursy-online/kurs-mysql.php

fiszol
  1. SELECT id FROM users WHERE username = 'nazwa'
wujek2009
do powyższego zapytania dodałbym LIMIT 1 ;-)
Gefers
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ę.
kujol
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 wink.gif
Gefers
Jakoś nie potrafię sobie z tym poradzić 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 ?
kujol
Kod
if (mysql_num_rows
(mysql_query("SELECT login
haslo FROM uzytkownicy
WHERE login = '".$login."'
&& haslo =
'"$haslo"' ")) >
0 )

else
{
}


Gefers
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.
Turson
SELECT user_imie user_password
Dane, która ma pobrać wpisujesz po przecinku. Zamień && na AND.


To powinno być w dziale "Przedszkole"
Hosiek
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.
markonix
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ą.
Gefers
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 biggrin.gif
valkirek
Bo nie wystarczy tylko wkleić podanego przykładu a pomyśleć, u Ciebie w bazie pole username nie istnieje.
Gefers
Tak wiem, pozamieniałem wszystkie pola tak jak u mnie w bazie są. I mi wywala taki błąd...
Turson
Wklej kod?
markonix
Temat: Jak poprawnie zadac pytanie
Gefers
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.
Gregoreq
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 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
Turson
Kolejny potrzebujący, który myśli, że wszyscy tutaj są jasnowidzami i wiedzą jaki on ma kod...
markonix
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).
Gefers
Chodziło mi raczej o nadawanie atrybutów czy coś w tym stylu 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.
Turson
Sam select nie zwróci Ci wyniku, czy istnieje dany użytkownik. Musisz do tego dodać mysql_num_rows i dopiero się dowiesz
markonix
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?
Gefers
  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.
markonix
Skorzystasz w końcu z mojej funkcji (oczywiście zmieniając nazwy kolumn)?
Dejmien_85
Pany, tożto obciach, aby w dzisiejszych czasach używać mysql_query - shame on you! wink.gif

PS Mysql to przeżytek, jak coś to brać się za mysqli lub PDO.
com
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 wink.gif



http://webmade.org/kursy-online/mysql_num_...-kurs-mysql.php
markonix
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ą.
Gefers
Dziękuję użytkownikowi com za udzielenie poprawnego rozwiązania oraz wszystkim osobom wypowiadającym się w tym temacie biggrin.gif.



Problem rozwiązany.


/Close
com
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 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 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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.