Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dane z sesji w klasie
Forum PHP.pl > Forum > PHP
Najki
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 ?
PUPI
$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. ?>
Wankster
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
dag
Cytat(Wankster @ 2004-10-25 02:19:38)
Musisz go wsadzić do jakiejś metody.

Najlepiej do konstruktora klasy.
Najki
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.
Sabistik
zle zapytanie.

  1. <?php
  2. mysql_query (&#092;"select * from users where id='\" . $this->id . \"'\");
  3. ?>
Najki
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.
scanner
Ktoś chyba zapomniał:
1. o konstruktorze klasy user
2. o wywołaniu metody nick()
Najki
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.
rogrog
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
Najki
Dzięki za pomoc! Śmiga smile.gif.
bela
można też dodać return do tej metody smile.gif
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.