Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Logowanie - klasa
thelaguna
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 21.09.2009

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


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
nospor
post
Post #2





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




  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.


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

"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
thelaguna
post
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 21.09.2009

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


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ę

Ten post edytował thelaguna 18.01.2010, 13:12:32
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




kurcze... napisalem ci jak wol co masz zrobic. zrobiles to? I co dostales?


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

"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
thelaguna
post
Post #5





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 21.09.2009

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


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;


Ten post edytował thelaguna 18.01.2010, 13:24:43
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




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.


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

"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
thelaguna
post
Post #7





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 21.09.2009

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


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.

Ten post edytował thelaguna 18.01.2010, 14:16:38
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 Aktualny czas: 20.08.2025 - 12:08