Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [XML][PHP] foreach pokazuje tylko pierwszą zmienną
adek-
post
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 2
Dołączył: 19.04.2007
Skąd: Częstochowa

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


Witam robię sobie skrypt który z xml'a będzie wygrzebywał mi informacje do którego użyłem funkcji foreach, tak żeby mi wyciągał je w rządku jeden pod drugim. Niestety zapętla się tylko pierwszy parametr $rxn;. Mało sę znam na php i próbowałem sobie to trochę uprościć robiąc to w ten sposób, ale nie bardzo mi to wychodzi. Może zaiast foreach uży czegoś innego?

próbowałem nawet zrobić więcej foreachów (poniżej pokazuję tylko 3) i wkłądać w nie te zmienne po kolei, ale też nic nie działa

  1. <?
  2. echo ' <table><tr>';
  3. $rejsy = simplexml_load_file('dane/export.xml/baza.xml');
  4. $baza = simplexml_load_file('dane/export.xml/baza.xml');
  5. $rnazwa = $baza->rejsy->rejs->nazwa;
  6. $rtrasa = $baza->rejsy->rejs->trasa_rejsu;
  7. $rdataod = $baza->rejsy->rejs->data->od;
  8. $rstatek = $baza->rejsy->rejs->statek->nazwa;
  9. $rlinia = $baza->rejsy->rejs->statek->linia;
  10. $rpilot = $baza->rejsy->rejs->pilot;
  11. $pdzien = $baza->program->rejs->data->opis;
  12. $ccenaod = $baza->cennik->rejs->pozycja->cena->od;
  13. $cpromo = $baza->cennik->rejs->pozycja->promocja->opis;
  14.  
  15. foreach ($rejsy->rejsy->rejs as $rx) {
  16. foreach ($rx->nazwa as $rxn) {
  17. foreach ($rtrasa as $trasa) {
  18.  
  19. //###################
  20. echo '<td class="sl">&nbsp;</td><td class="rnazwa"><table><tr><td style="background-color: rgb(255, 255, 255); text-align: left; padding-left: 5px; width: 350px; font-size: 11px; vertical-align: bottom;">';
  21. echo '<a href="3147,wiosenne-fascynacje,rejs.html">';
  22. echo $rxn;
  23. echo '</a> </td></tr><tr><td style="background-color: rgb(255, 255, 255); text-align: left; padding-left: 5px; width: 350px; font-size: 10px; vertical-align: top;">';
  24. echo $rtrasa;
  25. echo '</td></tr></table>';
  26.  
  27. echo '<td style=\"background-color: rgb(255, 255, 255); text-align: left;\" width=\"100\">';
  28. echo '<a href="">';
  29. echo $rdataod;
  30. echo '<br><span class=\"greytext\">5 nocl.</span></a></td>';
  31.  
  32. echo '<td style="background-color: rgb(255, 255, 255); text-align: center;" width="20"><a href="3147,wiosenne-fascynacje,rejs.html"><img src="images/rejsy/promocja.png" title="PROMOCJA" border="0"></a></td>';
  33. echo '<td style="background-color: rgb(255, 255, 255); text-align: center;" width="40">';
  34. echo '<a href="3147,wiosenne-fascynacje,rejs.html">€&nbsp;389';
  35. echo $rcena;
  36. echo '</a></td><td style="background-color: rgb(255, 255, 255); text-align: right; padding-right: 5px;" width="100">';
  37. echo '<a href="3147,wiosenne-fascynacje,rejs.html">';
  38. echo $rstatek;
  39. echo '</a></td><td style="background-color: rgb(255, 255, 255); text-align: center; padding-right: 5px;" width="50">';
  40. echo '<a class="black" href="3147,wiosenne-fascynacje,rejs.html"><!--<img src="templates/namorzu/logo/costa.gif" alt="costa" border="0">-->';
  41. echo $rx->statek->linia;
  42. echo '</a></td>';
  43. echo ' <td width="20"></td></tr></table>';
  44. } }}
  45. ?>


PS 1: kiedyś w cmsie phpfusion jak przy znaku " nie dodawałem ukośnka \ (czyli \") to mi wyskakiwał błąd, a tutaj wszystko działa?
PS 2: w wypadku powyżej jak definiuje w css clasę class="rnazwa" w zewnętrznym pliku css i tam justuje text do lewej, to nie justuje mi go na stronie, a jak zrobię style="text-align: left;" bezpośrednio przy danym elemencie to wszystko działa? Czy PHP może coś knocić, ale raczej wnioskuje że to moja nieznajomość PHP?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
adek-
post
Post #2





Grupa: Zarejestrowani
Postów: 124
Pomógł: 2
Dołączył: 19.04.2007
Skąd: Częstochowa

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


Dziękuję Psychopath za print_r pomocna rzecz której nie znałem, chociaż już przed przystąpieniem do operacji na tym xmlu rozpisałem sobie go na kartce, czyli tak jak Ty to robiłeś (IMG:style_emoticons/default/smile.gif) Jest to cholernie duży xml bo ma aż 51mb i sporo wpisów, ale wypadło mi się uczyć na tym a nie innym!
Skróconą wersję postaram się przedstawić w ten sposób poniżej. Te małpki to dane które próbuję wyciągnąć w pętlach foreach, ale chyba coś przekombinowałem. Żeby zrobić wiele foreach które będą wyrzucać wyniki jeden pod drugim powinienem zrobić coś a'la?
1. forech { foreach{$} foreach{$} foreach{$}}
czy bardziej każdy forach z osobna
2. foreach{$} foreach{$} foreach{$} - to próbowałem i cały czas samą funkcję mi w jednej lini wyrzucało w kółko zamiast kod html
czy też tak jak próbowałem, czyli porobiłem zmienne i zrobiłem jedno foreach z kilkoma zmiennymi
3. foreach {$ $ $ $}

  1. EXPORT
  2. <rejsy>
  3. |<rejs>
  4. | |<nazwa>@
  5. | |<data>
  6. | | |<od>@
  7. | | |<do>@
  8. | |<statek>
  9. | | |<nazwa>@
  10. | | |<linia>@
  11. | |<trasa_rejsu>@
  12. |</rejs>
  13. </rejsy>
  14. <cennik>
  15. |<rejs>
  16. | |<pozycja>
  17. | | |<cena>
  18. | | | |<od>@
  19. | |<promocja>
  20. | | |<od>@
  21. |<rejs>
  22. </cennik>

W razie jak by miało pomóc poniżej zamieszczam link do skróconego pliku xml do tylko 3 całych rekordów z wszystkimi danymi
baza.xml


//EDYTOWANO 25.04.2010!!!!!

  1. <td class="rnazwa">';
  2.  
  3. echo '<table border="1">';
  4. foreach ($rejsy->rejsy->rejs as $1) {
  5. echo '<tr><td>';
  6. echo '<a href="xx">';
  7. echo $1;
  8. echo '</a> </td></tr>';
  9. echo '<tr><td>';
  10. foreach ($rejsy->rejsy->rejs as $2) {
  11. echo $2;
  12. }
  13. echo '</td></tr>';
  14. }
  15. echo '</table>';

Prosta tabela (która jest częścią innej tabeli) ma wyrzucać w 1-wszym TD $1 i w 2-gim TD $2, wyrzuca mi $1 wielokrotenie ale po razie na TD tak jak powinno być, a $2 wilokrotnie w TD. Zapewne to dlatego, że zapętliłem foreach w forachu. Jak zrobić aby i to i to wyrzucało po razie?
screen w gifie (IMG:http://czestochova.pl/plik.gif)

Szukałem i próbowałem kilka przykładów z
PHP manual - foreach
ale żadnym nie trafiłem... czy mógł by mi ktoś podpowiedzieć który sposób byłby właściwym w moim wypadku?

PS, czy są jakieś książki wyczerpujące temat jednej funkcji z przykładami np "foreach" jak na manual PHP (IMG:style_emoticons/default/questionmark.gif) Zamierzam kupić książkę, ale z reguły jak oglądałem treść to były powierzchowni opisywane i po jednym przykładzie.

Ten post edytował adek- 25.04.2010, 11:24:02
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: 13.10.2025 - 06:50