Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][OOP]Brak efektu przy próbie wywołania metody
Kerth
post
Post #1





Grupa: Zarejestrowani
Postów: 250
Pomógł: 1
Dołączył: 6.08.2012

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


Witam,
chcę "przerobić" mój kod strukturalny na obiektowy. Miałem się już dawno za to brać ale chęci mi nie pozwalały (IMG:style_emoticons/default/smile.gif) Kod dotyczy pobierania liczby nowych, nieprzeczytanych prywatnych wiadomości jeśli takowe istnieją. Liczba pojawia się w nawiasie np. "PrivateMessage(5)".

Tak wygląda aktualny kod:
  1. <?php
  2.  
  3. if(isset($_SESSION['zalogowany'])){
  4. echo '
  5. <li>Zakładka1</a></li>
  6. <li>Zakładka2</li>
  7. <li>Zakładka3</li>
  8. ';
  9. //wywołanie klasy
  10. $connect_class_pm = new PrivateMessage();
  11. $connect_class_pm->setDb($db);
  12. $connect_class_pm->GetPrivateMessage();
  13.  
  14. var_dump($row_last_topic); //zwraca NULL
  15. if(!$read_message){
  16. echo '<li><a href="private_message">Private message</a></li>';
  17. }else{
  18. echo '<li><a href="private_message">Private message <span class="black"><span class="pogrub">('.$data_read_message['ilosc'].')</span></span></a></li>';
  19. }
  20. }else{
  21. echo '
  22. <li class="active"><a href="forum">Zakładka1</a></li>
  23. <li><a href="forum/userpanel">Zakładka2</a></li>
  24. ';
  25. }
  26. ?>

Plik GetPrivateMessage.class.php wygląda tak:
  1. <?php
  2. class PrivateMessage extends DatabaseManipulator {
  3. public function GetPrivateMessage() {
  4. $read_message = $this->getPdo()->prepare("SELECT COUNT(`przeczytane_pw`) AS `ilosc` FROM `wiadomosci_pw` WHERE `wiadomosc_do` = :nick_odbiorcy AND przeczytane_pw = 0");
  5. $read_message->bindValue(":nick_odbiorcy", $_SESSION['nick'], PDO::PARAM_STR);
  6. if(!$read_message->execute()){
  7. throw new Exception("Błąd zapytania");
  8. }else{
  9. $data_read_message = $read_message->fetch();
  10. $read_message = $data_read_message['ilosc'];
  11. }
  12. }
  13. }
  14. ?>

Nie powoduje on błędów, jednakże nic nie zwraca. Nie zwraca liczby wiadomości jak to było w przypadku kodu strukturalnego. Co dziwne, w taki sam sposób wywołuję instancje w innych plikach np. przy logowaniu. Wszystko ładnie się pobiera z bazy, dane etc.

Wcześniej było w ten sposób i działało bez zarzutów.

  1. <?php
  2.  
  3. if(isset($_SESSION['zalogowany'])){
  4. echo '
  5. <li>Zakładka1</a></li>
  6. <li>Zakładka2</li>
  7. <li>Zakładka3</li>
  8. ';
  9. $read_message = $db->prepare("SELECT COUNT(`przeczytane_pw`) AS `ilosc` FROM `wiadomosci_pw` WHERE `wiadomosc_do` = :nick_odbiorcy AND przeczytane_pw = 0");
  10. $read_message->bindValue(":nick_odbiorcy", $_SESSION['nick'], PDO::PARAM_STR);
  11. if(!$read_message->execute()){
  12. throw new Exception("Błąd zapytania");
  13. }else{
  14. $data_read_message = $read_message->fetch();
  15. $read_message = $data_read_message['ilosc'];
  16. }
  17.  
  18. if(!$read_message){
  19. echo '<li><a href="private_message">Private message</a></li>';
  20. }else{
  21. echo '<li><a href="private_message">Private message <span class="black"><span class="pogrub">('.$data_read_message['ilosc'].')</span></span></a></li>';
  22. }
  23. }else{
  24. echo '
  25. <li class="active"><a href="forum">Zakładka1</a></li>
  26. <li><a href="forum/userpanel">Zakładka2</a></li>
  27. ';
  28. }
  29. ?>


Wie może ktoś w czym jest problem?

Ten post edytował Kerth 10.06.2015, 07:39:32
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





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




Zeby funkcja cokolwiek zwracala, to musi posiadać magiczne słowo RETURN... moze zamiast za obiektowke, poducz się wpierw ze strukturalnego bo na tym jeszcze lezysz.
http://php.net/manual/en/functions.returning-values.php

I majac juz tyle postow moglbys juz naprawde nauczyc sie wyswietlac wszystkie bledy, to bys widzial czemu ci sie nic nie wyswietla.... Tu masz napisane jak:
Temat: Jak poprawnie zada pytanie
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 23:12