Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> dane z sesji w klasie, prosta klasa
Najki
post
Post #1





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

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


Mam np. prostą klasę.
  1. <?
  2. class user {
  3. var $id, $uid, $nick, $email, $gg;
  4.  
  5. $id = $_SESSION['userid'];
  6. $q_user = mysql_query (&#092;"select * from users where id='$id'\");
  7. $r_user = mysql_fetch_array ($q_user);
  8.  
  9. $nick = $r_user[nick];
  10. $email = $r_user[email];
  11. $gg = $r_user[gg];
  12. }
  13. ?>

Dostaję błąd o treści: "parse error, unexpected T_VARIABLE, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}'" (dotyczy linijki, w której ustawiam $id = $_SESSION['userid']). W związku z tym pytanie - jak mam sprawdzić ID zalogowanego w klasie? Czy klasa w ogóle czyta sesje ?

Ten post edytował Najki 24.10.2004, 23:56:21


--------------------
Go to the top of the page
+Quote Post
PUPI
post
Post #2





Grupa: Zarejestrowani
Postów: 69
Pomógł: 5
Dołączył: 6.02.2004
Skąd: Bydgoszcz

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


$id jest własnościa klasy więc powinieneś odwoływać się porzez $this->id.
Identycznie w przypadku $uid, $nick, $email, $gg
  1. <?
  2. class user {
  3. var $id, $uid, $nick, $email, $gg;
  4.  
  5. $this->id = $_SESSION['userid'];
  6. $q_user = mysql_query (&#092;"select * from users where id='$this->id'\");
  7. $r_user = mysql_fetch_array ($q_user);
  8.  
  9. $this->nick = $r_user[nick];
  10. $this->email = $r_user[email];
  11. $this->gg = $r_user[gg];
  12. }
  13. ?>


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





Grupa: Zarejestrowani
Postów: 208
Pomógł: 0
Dołączył: 19.04.2003

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


To w ogóle nie jest poprawny kod winksmiley.jpg Klasa składa się z właściwości i metod. Właściwości (zmienne) przechowują jakieś tam dane, a metody (funkcje) mogę na nich operować. Nie możesz wykonywać kodu zaraz pod zdefiniowaniem właściwości. Musisz go wsadzić do jakiejś metody.
  1. <?php
  2.  
  3. class user {
  4. var $id, $uid, $nick, $email, $gg;
  5.  
  6. function user()
  7. {
  8. $this->id = $_SESSION['userid'];
  9. $q_user = mysql_query (&#092;"select * from users where id='$this->id'\");
  10. $r_user = mysql_fetch_array ($q_user);
  11.  
  12. $this->nick = $r_user[nick];
  13. $this->email = $r_user[email];
  14. $this->gg = $r_user[gg];
  15. }
  16. }
  17.  
  18. ?>


+ Tworzymy klasę w php
Go to the top of the page
+Quote Post
dag
post
Post #4





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 24.12.2003

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


Cytat(Wankster @ 2004-10-25 02:19:38)
Musisz go wsadzić do jakiejś metody.

Najlepiej do konstruktora klasy.


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

------------------------------------------------------------------------------------------------------
Go to the top of the page
+Quote Post
Najki
post
Post #5





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

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


Dzięki Wam bardzo!
Jest ok, ale teraz kolejne pytanie.

Ta klasa ma służyć po prostu, abym mógł się w dowolnym miejscu odwołać do np. nicka zalogowanego użytkownika, jednak niebardzo działa. Mam teraz np. coś takiego:
  1. <?
  2. class user {
  3. var $id, $nick;
  4.  
  5. function nick () {
  6. $this->id = $_SESSION['userid'];
  7. $q_user = mysql_query (&#092;"select * from users where id='$id'\");
  8. $r_user = mysql_fetch_array ($q_user);
  9.  
  10. $this->nick = $r_user[nick];
  11. }
  12. ?>

W dalszej części strony chcę odwołać się do tej funkcji, wydrukować nick osoby, rezultat - nic winksmiley.jpg. Po prostu zmienna jest pusta.
  1. <?
  2. $u = new user ();
  3. echo $u->nick;
  4. ?>

Proszę o drugą pomoc winksmiley.jpg.

A, kombinowałem jeszcze na końcu funkcji z echo i return, ale nic to nie zmieniło.

Ten post edytował Najki 25.10.2004, 08:23:44


--------------------
Go to the top of the page
+Quote Post
Sabistik
post
Post #6


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

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


zle zapytanie.

  1. <?php
  2. mysql_query (&#092;"select * from users where id='\" . $this->id . \"'\");
  3. ?>
Go to the top of the page
+Quote Post
Najki
post
Post #7





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

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


Faktycznie, ale i tak to nic nie zmieniło :/. Wygląda to teraz tak:
  1. <?
  2. class user {
  3. var $id, $nick;
  4. function nick () {
  5. $this->id = $_SESSION['userid'];
  6. $q_user = mysql_query (&#092;"select * from users where id='\".$this->id.\"'\");
  7. $r_user = mysql_fetch_array ($q_user);
  8. $this->nick = $r_user[nick];
  9. }
  10. }
  11.  
  12. $u = new user ();
  13. echo $u->nick;
  14. ?>

Nadal nic nie wyświetla.

Ten post edytował Najki 25.10.2004, 16:47:03


--------------------
Go to the top of the page
+Quote Post
scanner
post
Post #8





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




Ktoś chyba zapomniał:
1. o konstruktorze klasy user
2. o wywołaniu metody nick()


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
Najki
post
Post #9





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

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


Cytat(scanner @ 2004-10-25 18:14:33)
Ktoś chyba zapomniał:
1. o konstruktorze klasy user
2. o wywołaniu metody nick()

ke? tongue.gif
Uczę się dopiero z jakiś tutoriali o klasach i niebardzo wiem co masz na myśli.


--------------------
Go to the top of the page
+Quote Post
rogrog
post
Post #10





Grupa: Zarejestrowani
Postów: 602
Pomógł: 1
Dołączył: 3.04.2004
Skąd: Trójmiasto (Gdańsk)

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


Cytat(Najki @ 2004-10-25 09:21:22)
  1. <?
  2. $u = new user ();
  3. echo $u->nick;
  4. ?>

jako że masz ustawianie wszystkich zmiennych w metodzie nick(), to żeby zostały ustawione te zmienne musisz ją wywołać smile.gif

  1. <?
  2. $u = new user (); //stworzenie obiektu usera
  3. $u->nick(); //wywołanie metody, która ustawi dane
  4. echo $u->nick; //wyświetlenie zawatości pola
  5. ?>


jeśli chcesz pominąć wywołanie metody nick(), to nazwij tą metodę (funkcję) user(). Jeśli metoda nazywa się tak samo jak nazwa klasy, to przy tworzeniu nowego obiektu zostanie wywołana automatycznie biggrin.gif

Ten post edytował rogrog 25.10.2004, 18:18:50


--------------------
Go to the top of the page
+Quote Post
Najki
post
Post #11





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

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


Dzięki za pomoc! Śmiga smile.gif.


--------------------
Go to the top of the page
+Quote Post
bela
post
Post #12


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


można też dodać return do tej metody smile.gif


--------------------
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: 19.08.2025 - 14:41