Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Odwołanie do tablicy zza klasy
Arhimenrius
post 27.11.2012, 00:16:42
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 3
Dołączył: 19.04.2011

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


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ę....
Go to the top of the page
+Quote Post
Damonsson
post 27.11.2012, 00:33:19
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


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?

Ten post edytował Damonsson 27.11.2012, 00:34:35
Go to the top of the page
+Quote Post
Arhimenrius
post 27.11.2012, 00:38:49
Post #3





Grupa: Zarejestrowani
Postów: 115
Pomógł: 3
Dołączył: 19.04.2011

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


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ś

Ten post edytował Arhimenrius 27.11.2012, 00:47:45
Go to the top of the page
+Quote Post
Damonsson
post 27.11.2012, 00:50:59
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


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ż.
Go to the top of the page
+Quote Post
Arhimenrius
post 27.11.2012, 11:39:44
Post #5





Grupa: Zarejestrowani
Postów: 115
Pomógł: 3
Dołączył: 19.04.2011

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


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ą.
Go to the top of the page
+Quote Post
nospor
post 27.11.2012, 13:00:38
Post #6





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




Odpowiedź na pytanie masz w tym temacie
http://forum.php.pl/index.php?showtopic=20...p;#entry1008725
Na przyszłość nie powielaj tematów...


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

"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

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 Wersja Lo-Fi Aktualny czas: 24.06.2025 - 13:53