Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Odwołanie do tablicy zza klasy
Forum PHP.pl > Forum > Przedszkole
Arhimenrius
Witam. Więc planowałem stworzyć metodę która by mi pobierała z bazy danego użytkownika, by następnie wyciągnąć po za klasę jego dane. Aczkolwiek nie mam pojęcia jak wyciągnąć całą tablicę.
  1.  
  2. class User
  3. {
  4. //pole profilu użytkownika
  5. public function myprofil($userid)
  6. {
  7. $finduser = $db -> prepare("SELECT * FROM `users` WHERE `usid` = :userid");
  8. $finduser -> bindValue(':userid', $userid, PDO::PARAM_STR);
  9. $finduser -> execute();
  10. $row = $finduser -> fetch(PDO::FETCH_ASSOC);
  11. print_r ($row); //celowo by sprawdzic czy ma zawartość, ma
  12. $this -> user = $row;
  13. }
  14. }


A następnie poza klasą:
  1. $profil = new User();
  2. $profil -> myprofil($_SESSION['usid']);
  3. print_r ($profil-> row['usid']);

I niestety zwraca pustkę....
Damonsson
Daj return w funkcji, a poza klasą po prostu tę funkcję wywołuj z danym parametrem.

print_r ($profil-> row['usid']); <-- to powinno chyba dać błąd, masz włączone pokazywanie błędów?
Arhimenrius
Nie trzeba. Zmęczenie przepisywaniem kodu od rana sprawiło że przeoczyłem taką kwestię:
w metodzie dałem: $this -> user = $row;

A za klasą starałem się odwołać do zmiennej z klasy a nie do tego co wyrzucam. czyli zamiast
print_r ($profil-> row);

ma być
print_r ($profil-> user);

Aczkolwiek z drugiej strony, zadam pytanie z tej beczki. Jak sprawić, by w takim razie zamiast 1 odpowiedzi, to zapętlić by wyrzuciło wszystkie dostępne wartości?
chodzi mi o odpowiednik:
  1.  
  2. $finduser = $db -> prepare("SELECT * FROM `users` WHERE `usid` = :userid");
  3. $finduser -> bindValue(':userid', $userid, PDO::PARAM_STR);
  4. $finduser -> execute();
  5. while($row = $finduser -> fetch(PDO::FETCH_ASSOC))
  6. {
  7. }
  8.  

owszem, szukając po ID zawsze będę mieć 1 wynik. Ale jeżeli bym szukał po czymś co może się powtarzać, to chciałbym by wszystkie znalezione rzeczy mi wypisało jakoś
Damonsson
Też dlatego zapytałem, czy tam czasem Ci błędu nie pokazało.

Jeśli chcesz wyświetlić wszystkie to fetchAll zamiast fetch.

while czy tam foreach dajesz sobie przy wyświetlaniu już.
Arhimenrius
Mam nadzieję że jeszcze odpiszecie. Więc tak.
  1. public function SearchUser($option='one')
  2. {
  3.  
  4. global $db;
  5. $finduser = $db -> prepare("$this->query");
  6. if(isset($this->usid)) $finduser -> bindValue(':usid', $this->usid, PDO::PARAM_STR);
  7. if(isset($this->usname)) $finduser -> bindValue(':usname', $this->usname, PDO::PARAM_STR);
  8. if(isset($this->uspassword)) $finduser -> bindValue(':uspassword', $this->uspassword, PDO::PARAM_STR);
  9. if(isset($this->usclass)) $finduser -> bindValue(':usclass', $this->usclass, PDO::PARAM_STR);
  10. if(isset($this->ushow)) $finduser -> bindValue(':ushow', $this->ushow, PDO::PARAM_STR);
  11. $finduser -> execute();
  12. if($option='one')
  13. {
  14. $row = $finduser -> fetch(PDO::FETCH_ASSOC);
  15. }
  16. elseif($option='multi')
  17. {
  18. $row = $finduser -> fetchAll(PDO::FETCH_ASSOC);
  19. }
  20. $this -> user = $row;
  21.  
  22. }


Chodzi o to, że gdy wybiorę to multi, wypisało mi wszystkie dane związane z szukaną rzeczą. Więc daję zmienną jako 'multi' (niżej). Więc powinno użyć fetchAll(...);

  1. $request = new DBRequest();
  2. $request -> UserClearVar(NULL, NULL, NULL, '4WD', NULL);
  3. $request -> BuildUserSearchRequest();
  4. $request -> SearchUser('multi');
  5.  
  6.  
  7. print_r($request->user);


Jak widać, szukam w tym miejscu po klasie w której jest osoba. Potem za pomocą print_r próbuję wypisać wszystkie znalezione osoby, ale niestety wyrzuca tylko pierwszą znalezioną.
nospor
Odpowiedź na pytanie masz w tym temacie
http://forum.php.pl/index.php?showtopic=20...p;#entry1008725
Na przyszłość nie powielaj tematów...
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.