Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Błąd w funkcji, imap_header()
Wolfie
post
Post #1





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Witam,


Napisalem sobie taki kod :

  1. public function header ($mID, $param = '' ) {
  2. $eHeader = imap_header($this->_connection, $mId);
  3. if($param) {
  4. return $eHeader->param;
  5. }
  6. return $eHeader;
  7. }
  8.  
  9. public function status() {
  10. return imap_mailboxmsginfo($this->_connection);
  11. }
  12.  
  13. public function to($mId){
  14. return $this->header($mId, 'toaddress');
  15. }
  16.  
  17. public function subject($mId) {
  18. return $this->header($mId, 'subject');
  19. }
  20.  
  21. public function from($mId) {
  22. return $this->header($mId, 'senderaddress');
  23. }


No i teraz wykonuje go w ten sposob :

  1.  
  2. $info = $mailbox->status();
  3. echo $info->Nmsgs;
  4. for($i = 1; $i < $info->Nmsgs; $i++) {
  5. echo $head = $mailbox->subject($i);
  6. }


Wydawaloby sie ze wszystko jest ok, przynajmniej ja zadnego bledu nie widze, a tutaj prosze jaki dostaje rezultat :

Cytat
Notice: Undefined variable: mId in C:\Apache\htdocs\PrackaMgr\class.MailboxAccess.php on line 48

Warning: imap_header() [function.imap-header]: Bad message number in C:\Apache\htdocs\PrackaMgr\class.MailboxAccess.php on line 48

Notice: Trying to get property of non-object in C:\Apache\htdocs\PrackaMgr\class.MailboxAccess.php on line 50


gdzie 48 linijka to ta :

  1.  
  2. $eHeader = imap_header($this->_connection, $mId);


a 50 linijka to ta :

  1. return $eHeader->param;


Co tutaj jest nie tak ?

Message number jest napewno poprawnie bo wyswietla sie prawidlowa liczna wiadomosci echo $info->Nmsgs;, mId tez powinno byc dlatego w porzadku, bo przeciez podaje do funkcji odpowiednia liczbe.....a co do tego non-object to nie mam pojecia co jest nie tak.....

Ten post edytował Wolfie 26.08.2009, 10:40:57
Go to the top of the page
+Quote Post
TrevorGryffits
post
Post #2





Grupa: Zarejestrowani
Postów: 139
Pomógł: 24
Dołączył: 29.07.2007
Skąd: Tarnowskie Góry

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


Literówka. Zobacz jak wygląda feralna zmienna w definicji funkcji, a jak ją wywołujesz w jej ciele.
Go to the top of the page
+Quote Post
Wolfie
post
Post #3





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Ok, poprawilem , teraz dziala znacznie lepiej ale wywala jeszcze jeden blad :

Cytat
Notice: Undefined property: stdClass::$subject in C:\Apache\htdocs\PrackaMgr\class.MailboxAccess.php on line 50



ale tylko w dwoch przypadkach, gdzies miedzy wyswietlanymi tematami wiadomosci.....

Jak sie zorientowalem to jest to spowodowane brakiem tamatu wiadomosci

ale gdy robie taka pentelke :

  1. for($i = 1; $i < $info->Nmsgs; $i++) {
  2. if($mailbox->subject($i) = ''){
  3. echo "brak tematu";
  4. } else {
  5. echo $head = $mailbox->subject($i).'<br/>';
  6. //echo str_replace($search_arr, $replace_arr,$head->subject).'<br/>';
  7. }


To otrzymuje taki komunikat :

Cytat
Fatal error: Can't use method return value in write context in C:\Apache\htdocs\PrackaMgr\class.MailboxAccess.php on line 109


Ten post edytował Wolfie 26.08.2009, 10:50:57
Go to the top of the page
+Quote Post
TrevorGryffits
post
Post #4





Grupa: Zarejestrowani
Postów: 139
Pomógł: 24
Dołączył: 29.07.2007
Skąd: Tarnowskie Góry

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


Za bardzo się nie przyglądałem, ale... Nie możesz dać tylko param, bo to PHP interpretuje tak, że chcesz dostać się do właściwości obiektu "param", powinienieś napisać "$param", bo w ten sposób PHP najpierw zamieni na wartośc zmiennej, a potem dopiero poszuka w obiekcie.
Go to the top of the page
+Quote Post
Wolfie
post
Post #5





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Wiem, juz to wczesniej poprawilem, sprawa sie tyczy tego ze dla niektorych wiadomosci nie wystepuje wogole temat wiec nie jest zdefiniowana wlasciwosc $subject

Zrobilem to w ten sposob :

  1. for($i = 1; $i < $info->Nmsgs; $i++) {
  2. if($mailbox->subject($i) === null){
  3. echo "brak tematu".'<br>';
  4. } else {
  5. echo $head = $mailbox->subject($i).'<br/>';
  6. //echo str_replace($search_arr, $replace_arr,$head->subject).'<br/>';
  7. }
  8. }


No i teraz pojawia sie etykietka brak tematu, ale i tak pojawia sie taki blad :

Cytat
Notice: Undefined property: stdClass::$subject in C:\Apache\htdocs\PrackaMgr\class.MailboxAccess.php on line 50


Jak sobie z tym poradzic ?

Ten post edytował Wolfie 26.08.2009, 11:06:32
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: 21.08.2025 - 10:48