Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Logowanie - klasa
Forum PHP.pl > Forum > Przedszkole
thelaguna
Witam.
Postanowiłem w końcu poćwiczyć sobie pisanie klas w php i mam problem, byłbym wdzięczny gdyby ktoś mi wytłumaczył co jest nie tak.

Mam prostą klasę i w niej metodę do łączenia się z bazą, działającą bo oddaje resource id.

Kiedy chcę jej użyć w innej klasie i metodzie (do sprawdzania hasła) to już jest coś nie tak.
Dostaję błąd: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource(...)
wnioskuję więc, że nie mam połączenia z bazą, tylko nie wiem czemu. Źle się do niej odwołuję...?

Kod zmieniałem wiele razy, oto ostatnia wersja:
  1. private function login_check($user, $pass)
  2. {
  3. require('konektor.php');
  4.  
  5. $this->polacz = new konektor;
  6. $this->polacz -> connect();
  7.  
  8. $this->check = 'SELECT * FROM `login` WHERE login_user='.$user.' AND login_pass='.$pass.' LIMIT 1';
  9. $this->check = mysql_query($this->check);
  10. $this->ile = mysql_num_rows($this->check);
  11.  
  12. if($this->ile == 1) return true;
  13. else return false;
  14. }


Pozdrawiam.
nospor
  1. $sql = 'SELECT * FROM `login` WHERE login_user='.$user.' AND login_pass='.$pass.' LIMIT 1';
  2. $this->check = mysql_query($sql) or die('sql:'.$sql.' BLAD:'.mysql_error());

a byc moze sam zaczaisz gdzie masz blad.
thelaguna
Mam coś takiego:

jak tutaj wpisałem echo $this->dbask; to dostałem Resource ID, więc to tutaj działa, podejrzewam że później coś się sypie

  1. $this->dbask = mysql_connect($this->dbhost, $this->dbuser, $this->dbpass);
  2. mysql_select_db($this->dbname);
  3. if(!$this->dbask) die('Mysql connection error: '.mysql_error());


zapytanie też kilka razy zmieniałem, to jest wzięte i przerobione z phpMyAdmina, ale kto wie, jeszcze je zmienię
nospor
kurcze... napisalem ci jak wol co masz zrobic. zrobiles to? I co dostales?
thelaguna
Dostałem info, że mam błąd w 'SELECT * FROM `login` WHERE login_user='.$user.' AND login_pass='.$pass.' LIMIT 1'; więc zmieniłem na:

"SELECT * FROM `login` WHERE login_user='$user' AND login_pass='$pass' LIMIT 1";

błędu Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource(...) już nie mam. (w sumie wróciłem do punktu wyjścia, bo na początku też go nie miałem tylko zapytanie popsułem)
ale nadal zwraca mi false zamiast true

  1. $this->check = "SELECT * FROM `login` WHERE login_user='$user' AND login_pass='$pass' LIMIT 1";
  2. $this->check = mysql_query($this->check);
  3. $this->ile = mysql_num_rows($this->check);
  4.  
  5. if($this->ile == 1) return true;
  6. else return false;
nospor
Cytat
Dostałem info, że mam błąd w 'SELECT * FROM `login` WHERE login_user='.$user.' AND login_pass='.$pass.' LIMIT 1';
To to ja wiedzialem. chodzilo o to, bys przeanalizowal dokladnie na czym ten blad polegal.

Cytat
więc zmieniłem na:

"SELECT * FROM `login` WHERE login_user='$user' AND login_pass='$pass' LIMIT 1";

błędu Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource(...)
ale nadal zwraca mi false zamiast true

No i skoro nadal ci leci blad to znowu masz zrobic
or die(...........)

Po to ci to napisalem bys nauczyl sie sam diagnozowac bledy. A jak sam nie wiesz co masz nie tak to wyswietla nam blad co ci zwraca die().

Cytat
w sumie wróciłem do punktu wyjścia, bo na początku też go nie miałem tylko zapytanie popsułem
Wlasnie ze nie popsules, bo teraz dopiero wyglada tak ja powinno. Zrob wiec wkoncu ten die() i powiedz co tam masz źle.
thelaguna
Chodziło mi o to że miałem zapytanie dobrze, później je popsułem i znowu naprawiłem.

A błędu mi nie pokazywało żadnego bo... żadnego nie było :\

sprawdziłem echo "$user $pass i okazało się że wcześniej popełniłem błąd tak głupi, że wstyd się przyznać =P
  1. $this -> log = $_POST['log'];
  2. $this -> pas = $_POST['log'];

Dzięki za poświęcony czas.
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.