Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pętle w pętlach, obsługa XML
Forum PHP.pl > Forum > PHP
shpaque
Witam serdecznie , zapętliłem sie mocno i sie zgubiłem. Czy probowac tutaj czy json encode i decode i tyle?

  1. $xmlPath = './db/customers.xml';
  2. $dataBase = simplexml_load_file($xmlPath) or die ('Błąd: Wystąpił problem z plikiem XML!');
  3.  
  4. $changeLogDB = $dataBase -> changeLog;
  5. $ip = $dataBase -> ip;
  6.  
  7. foreach ($dataBase -> customer as $customer)
  8. {
  9. if ( ($customer -> name == $getCustomerName) && ($customer -> settings -> id == $getID) )
  10. {
  11. $customerName = $customer -> name;
  12. $customerFolder = $customer -> folder;
  13.  
  14. $changeLog = $customer -> settings -> changeLog;
  15. $id = $customer -> settings -> id;
  16. $webTitle = $customer -> settings -> webTitle;
  17. $webLink = $customer -> settings -> weblink;
  18. $webMetaTags = $customer -> settings -> webMetaTags;
  19. $webDescription = $customer -> settings -> webDescription;
  20. $webBgColor = $customer -> settings -> webBgColor;
  21. $webTextColor = $customer -> settings -> webTextColor;
  22.  
  23. $set = ['customerName' => $customerName, 'customerFolder' => $customerFolder, 'customerChangeLog' => $changeLog, 'customerID' => $id, 'webTitle' => $webTitle, 'webLink' => $webLink, 'webMetaTags' => $webMetaTags, 'webDescription' => $webDescription, 'webBgColor' => $webBgColor, 'webTextColor' => $webTextColor];
  24.  
  25. if (isset($customer -> catalogs -> catalog -> file))
  26. {
  27. foreach ($customer -> catalogs -> catalog as $cat)
  28. {
  29. $catTitle = $cat -> title;
  30. $catFile = $cat -> file;
  31. if (isset($cat -> main -> title))
  32. {
  33. foreach ($cat -> main as $main)
  34. {
  35. $mainTitle = $main -> title;
  36. $mainPage = $main -> page;
  37. if (isset($main -> link -> title))
  38. {
  39. foreach ($main -> link as $link)
  40. {
  41. $linkTitle = $link -> title;
  42. $linkPage = $link -> page;
  43. $links[] = ['title' => $linkTitle, 'page' => $linkPage];
  44. }
  45. }
  46. $mains[] = ['title' => $mainTitle, 'page' => $mainPage, $links];
  47. }
  48. }
  49. $cats[] = ['title' => $catTitle, 'file' => $catFile, $mains];
  50. }
  51. }
  52. }


chce tym skryptem pobrac dane w postaci:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <customers>
  3. <changeLog>2018-05-14 00:18:58</changeLog>
  4. <ip>192.0.0.1</ip>
  5. <customer>
  6. <name>Brunner</name>
  7. <folder>brunner</folder>
  8. <settings>
  9. <changeLog>2018-05-14 00:18:58</changeLog>
  10. <id>227632</id>
  11. <webTitle>Brunner - Outdoor in motion</webTitle>
  12. <webLink>Brunner.Warszawa.pl</webLink>
  13. <webMetaTags>namioty, namioty samochodowe, namioty użytkowe, pawilony, parawany, meble kempingowe, krzesła, fotele, leżanki, wykładziny, podłogi, akcesoria namiotowe, torby podróżne, plecaki, zestawy z melaminy, garnki, suszarki, pojemniki, preparaty czyszczące i impregnujące</webMetaTags>
  14. <webDescription>Niemiecka firma Brunner, to uznany lider w Europie w dziedzinie akcesoriów turystyczno - kempingowych. Ponad 50 lat doświadczenia w branży. Dzięki ciągłej modernizacji produkcji zapewnia produkty o jak najwyższej jakośći i oryginalności. W ofercie szeroka gama obecnie ponad 3000 artykułów np.: namioty, namioty samochodowe, namioty użytkowe, pawilony, parawany, meble kempingowe, krzesła, fotele, leżanki, wykładziny, podłogi, akcesoria namiotowe, torby podróżne, plecaki, zestawy z melaminy, garnki, suszarki, pojemniki, preparaty czyszczące i impregnujące, AGD, chłodziarki turystyczne, oświetlenie, gniazda, wtyki, przedłużacze, daszki, pokrowce, maty izotermiczne, wózki transportowe, lusterka.<br />Zapraszamy do zapoznania się z katalogiem. To interesująca oferta dla właścicieli przyczep kempingowych, kamperów jak i zwolenników turystyki pieszej, podróży samolotem, wycieczki autokarem lub osób preferujących odpoczynek na łonie natury.</webDescription>
  15. <webBgColor>#003f20</webBgColor>
  16. <webTextColor>#ffffff</webTextColor>
  17. </settings>
  18. <catalogs>
  19. <catalog>
  20. <title>Katalog Brunner 2017</title>
  21. <file>brunner2017.pdf</file>
  22. <main>
  23. <title>Spis treści Katalog Brunner 2017</title>
  24. <page>3</page>
  25. <link>
  26. <title>Wstęp i opisy produktów</title>
  27. <page>4</page>
  28. </link>
  29. <link>
  30. <title>Kody kolorów</title>
  31. <page>5</page>
  32. </link>
  33. </main>
  34. <main>
  35. <title>Namioty i przedsionki</title>
  36. <page>6</page>
  37. <link>
  38. <title>Namioty pompowane - A.I.R. Tech</title>
  39. <page>7</page>
  40. </link>
  41. <link>
  42. <title>Namioty turystyczne - Outdoor Tents</title>
  43. <page>8</page>
  44. </link>
  45. <link>
  46. <title>Namioty biwakowe - Enjoy Tents</title>
  47. <page>8</page>
  48. </link>
  49. <link>
  50. <title>Namioty rodzinne - Full Comfort</title>
  51. <page>8</page>
  52. </link>
  53. ...
Neutral
W jakim formacie chcesz wyświetlić te dane?

Tak:

changeLog
2018-05-14 00:18:58

customer
name
Brunner
folder
brunner

?

Czy tak jak masz w formacie XML, czy może jeszcze jakoś inaczej?

  1. <?php
  2.  
  3. $xmlPath = 'shpaque.xml';
  4. $customers = simplexml_load_file($xmlPath) or die ('Błąd: Wystąpił problem z plikiem XML!');
  5.  
  6. foreach($customers->customer as $customer) {
  7. echo $customer->name.'<br />';
  8. echo $customer->folder.'<br />';
  9. $settings[] = $customer->settings;
  10. $catalog[] = $customer->catalogs->catalog;
  11. }
  12.  
  13. foreach($settings as $setting) {
  14. echo $setting->changeLog.'<br />';
  15. echo $setting->id.'<br />';
  16. echo $setting->webTitle.'<br />';
  17. echo $setting->webLink.'<br />';
  18. echo $setting->webMetaTags.'<br />';
  19. echo $setting->webDescription.'<br />';
  20. echo $setting->webBgColor.'<br />';
  21. echo $setting->webTextColor.'<br />';
  22. }
  23.  
  24. foreach ($catalog as $feature) {
  25. echo $feature->title.'<br />';
  26. echo $feature->file.'<br />';
  27. $main[] = $feature->main;
  28. }
  29.  
  30. foreach($main as $main_next) {
  31. echo $main_next->title.'<br />';
  32. echo $main_next->page.'<br />';
  33. $link[] = $main_next->link;
  34. }
  35.  
  36. foreach($link as $link_next) {
  37. echo $link_next[0]->title.'<br />';
  38. echo $link_next[0]->page.'<br />';
  39. echo $link_next[1]->title.'<br />';
  40. echo $link_next[1]->page.'<br />';
  41. }
  42.  
  43. ?>

Nie podałeś wytycznych, więc dokończ sam.
shpaque
tak tak jak w formacie xml, chodzi o to ze jeden katalog ma swoje sekcje main i pod nimi jeszcze linki. to co teraz robie to do edycji/formularza wiec bed z tego inputy - chce zrobic tak zeby pozniej tak samo latwo nadpisac dane w xml

w efekcie wyglada to tak: http://smusic.nazwa.pl/test/db/brunner/
Neutral
No to w czym problem? Podałem rozwiązanie.
shpaque
i dziękuję Ci za to smile.gif
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-2024 Invision Power Services, Inc.