Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wprowadzanie zmiennej do tablicy
Forum PHP.pl > Forum > Przedszkole
Wolfie
Witam smile.gif


Mam taki kawalek kodu :

  1. if($info['content-type'] == 'text/html') {
  2. $sec = mailparse_msg_get_part($mime, $st);
  3. mailparse_msg_extract_whole_part_file($sec, $dir.$filename);
  4. $contents = ob_get_contents();
  5. echo nl2br(htmlentities($contents));
  6. }
  7. if($info['headers']['subject'] !== null && $info['headers']['date'] !== null) {
  8. $part[] = array(
  9. 'subjects' => $info['headers']['subject'],
  10. 'date' => $info['headers']['date'],
  11. 'from' => $info['headers']['from'],
  12. 'body' => $contents
  13. );
  14. }


Ten kod to jest czesc funkcji w pewnej klasie

Jak widac w pierwszej petli if przypisuje do zmiennej $contents to co jest w buforze, pozniej to wyswietlam no i elegancko na ekranie sie wszystko pojawia, ale dalej w drugiej funkcji che sobie to wrzucic do tablicy 'body' => $contents

No i wyswietlam tablice a tam w tym miejscu pustka

Do tego jeszcze taki error :

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

Gdzie linia 48 to ta 'body' => $contents
Fifi209
Cytat(Wolfie @ 25.10.2009, 22:01:24 ) *
w drugiej funkcji che sobie to wrzucic do tablicy 'body' => $contents


Funkcję ? Rozumiem, że to jest w funkcji i potem w innej chcesz przypisać $contents, czyli kłania się zasięg zmiennych.
Zosiek
Podstawy php
  1. <?PHP
  2. $tab = array( 'jeden' => 2, 'dwa' => 4, 'trzy' => -78 );
  3. foreach ($tab as $klucz => $wartosc)
  4. echo "tab['".$klucz."'] ==". $wartosc;
  5. ?>
lub
  1. <?PHP
  2. $tab = array(/* tu jakaś extremalnie skomplikowana struktura, tablice w tablicy itp.*/);
  3. echo '<pre>';
  4. print_r($tab);
  5. echo '</pre>';
  6. ?>

Odsyłam do
http://webmade.org/porady/tablice-asocjacyjne-print_r.php
Fifi209
Cytat(Zosiek @ 25.10.2009, 22:32:55 ) *
Podstawy php
  1. <?PHP
  2. $tab = array( 'jeden' => 2, 'dwa' => 4, 'trzy' => -78 );
  3. foreach ($tab as $klucz => $wartosc)
  4. echo "tab['".$klucz."'] ==". $wartosc;
  5. ?>

Podstawy php to by się Tobie chyba przydały. Jak widzę coś takiego to mi się płakać chce, Twój parser pewnie płacze nocami, że musi wykonywać coś tak durnego.

P.S. jak coś to:
  1. $tab = array( 'jeden' => 2, 'dwa' => 4, 'trzy' => 78 );
  2. foreach ($tab as $key => $value) {
  3. echo $key.' => '.$value;
  4. }

Cytat(Zosiek @ 25.10.2009, 22:32:55 ) *
lub
  1. <?PHP
  2. $tab = array(/* tu jakaś extremalnie skomplikowana struktura, tablice w tablicy itp.*/);
  3. echo '<pre>';
  4. print_r($tab);
  5. echo '</pre>';
  6. ?>

Odsyłam do
http://webmade.org/porady/tablice-asocjacyjne-print_r.php

Nie uważam, że jest mu to potrzebne.
Wolfie
fifi209 pomylka w tekscie, nie chodzi o funkcje tylko o druga petle if

Widac w listingu, przedstawie cała funkcje :

  1. public function getMsgsParts($dir) {
  2. $files = $this->getFiles($dir);
  3. $slice = array_slice($files, 0, 5);
  4. foreach($slice as $filename) {
  5. $mime = mailparse_msg_parse_file($dir.$filename);
  6. $struct = mailparse_msg_get_structure($mime);
  7. //print_r($struct);
  8. foreach($struct as $st) {
  9. $section = mailparse_msg_get_part($mime, $st);
  10. $info = mailparse_msg_get_part_data($section);
  11. //print_r($info);
  12. if($info['content-type'] == 'text/html') {
  13. $sec = mailparse_msg_get_part($mime, $st);
  14. mailparse_msg_extract_whole_part_file($sec, $dir.$filename);
  15. $contents = ob_get_contents();
  16. echo nl2br(htmlentities($contents));
  17. }
  18. if($info['headers']['subject'] !== null && $info['headers']['date'] !== null) {
  19. $part[] = array(
  20. 'subjects' => $info['headers']['subject'],
  21. 'date' => $info['headers']['date'],
  22. 'from' => $info['headers']['from'],
  23. 'body' => $contents
  24. );
  25. }
  26. }
  27. }
  28. return $part;
  29. }


No wiec odkrylem ze jednak zapisuje sie to do tablicy tylko ze jest jakies dziwne przesuniecie

Bo tak, czytam sobie z pliku dane, no i teraz czesc danych wstawiam do subject, date i form i one pochodza jak widac z jednego zrodla, a 'body' pochodzi stad :

  1. if($info['content-type'] == 'text/html') {
  2. $sec = mailparse_msg_get_part($mime, $st);
  3. mailparse_msg_extract_whole_part_file($sec, $dir.$filename);
  4. $contents = ob_get_contents();
  5. echo nl2br(htmlentities($contents));
  6. }


I teraz z tego co zauwazylem to body jest przesuniete -1 w stosunku do calej reszty czyli

subject : wiadomosc 2
date : wiadomosc 2
from : wiadomosc 2
body : wiadomosc 1

I tak przesuniecie wyglada , jesli zaladuje np 5 plikow to w body z pliku 5 jest body z pliku 4

Dlatego tez jak zaladowalem tylko 1 plik ( jedna wiadomosc) to byl komunikat ze $contents jest niezdefiniowany....
nospor
oj.....
któryś z twoich $info['content-type'] nie jest równe 'text/html' więc dla niego $contents się nie laduje. stad te przesuniecia.
dodaj ELSE i dla niego: $contents = '';
Wolfie
dalem else ale teraz wszystkie $contents sa puste czyli wszystkie body = '';

A no i sie pomylilem, bo teraz spojrzalem na swoje notatki i widze ze przesuneicie jest w druga strone, czyli body z wiadomosci 11 jest w wiadomosci 12.....

edit ------------

czyli tak jak wczesniej mowilem , sam juz sie gubie tongue.gif


Tak w widomosci 1 nie ma wogole text/html, ale jak zmienilem w if'ie z text/html na text/plain ktory napewno jest w wiadomosci 1 to i tak nie laduje sie body w pierwszym przypadku......to chyba nie w tym rzecz.....
nospor
to zamiast zgadywac to moze sobie powyswietlac co tak naprawde tam masz...
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.