Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [XML][PHP] Jak wziąć wszystkie pozycje z XML'a?
Frugo75
post
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Witam ponownie.
Nie wiem jak zrobić jedną (wydaje się prostą) rzecz. Mianowicie utknąłem w xmlu.

Mam plik feeds który wygląda tak:
  1. <feeds>
  2. <feed id="158477" cat_id="1" add_date="2014-05-21 13:44:05" mod_date="0000-00-00 00:00:00" path="/1/2014-05-21/158477/158477.xml"/>
  3. <feed id="158476" cat_id="36" add_date="2014-05-21 13:32:19" mod_date="0000-00-00 00:00:00" path="/36/2014-05-21/158476/158476.xml"/>
  4. <feed id="158476" cat_id="21" add_date="2014-05-21 13:32:19" mod_date="0000-00-00 00:00:00" path="/21/2014-05-21/158476/158476.xml"/>
  5. <feed id="158473" cat_id="1" add_date="2014-05-21 13:06:26" mod_date="0000-00-00 00:00:00" path="/1/2014-05-21/158473/158473.xml"/>
  6. <feed id="158471" cat_id="83" add_date="2014-05-21 13:22:44" mod_date="2014-05-21 12:56:16" path="/83/2014-05-21/158471/158471.xml"/>
  7. <feed id="158471" cat_id="21" add_date="2014-05-21 13:22:44" mod_date="2014-05-21 12:56:16" path="/21/2014-05-21/158471/158471.xml"/>
  8.  
  9. </feeds>


I tutaj skryptem chcę wyciągać wszytkie "feed", parsować i dodawać do bazy:

  1. $doc = new DOMDocument("1.0", "iso-8859-2");
  2. $doc->load("feeds.xml");
  3.  
  4. $books = $doc->getElementsByTagName('feed');
  5. foreach ($books as $feed) {
  6. echo $feed->nodeValue, PHP_EOL;
  7.  
  8. $path = $feed -> getAttribute('path');
  9. $cat_id = $feed -> getAttribute('cat_id');
  10.  
  11. $path1 = substr($path, "1");
  12.  
  13.  
  14. $doc = new DOMDocument("1.0", "iso-8859-2");
  15.  
  16. $doc->load("$path1");
  17.  
  18. $feed = $doc->getElementsByTagName( "feed" );
  19. foreach ($feed as $matches)
  20. {
  21. $title = $matches->getElementsByTagName( "title" );
  22. $tytul = $title->item(0)->nodeValue;
  23.  
  24. $content = $matches->getElementsByTagName( "content" );
  25. $tresc = $content->item(0)->nodeValue;
  26.  
  27. $id = $matches->getElementsByTagName( "id" );
  28. $export_id = $id->item(0)->nodeValue;
  29.  
  30. $add_date = $matches->getElementsByTagName( "add_date" );
  31. $date = $add_date->item(0)->nodeValue;
  32.  


I teraz nie umiem wziąć wszystkich "feed", biore tylko jedno.
Czy pomoże mi ktoś wziąć wszystkie?
Go to the top of the page
+Quote Post
3 Stron V   1 2 3 >  
Start new topic
Odpowiedzi (1 - 42)
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Bierzesz jedno bo tablicę musisz powiększać
nie $title = $matches->getElementsByTagName( "title" );
a $title[] = $matches->getElementsByTagName( "title" );
Go to the top of the page
+Quote Post
Frugo75
post
Post #3





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(Turson @ 21.05.2014, 14:27:32 ) *
Bierzesz jedno bo tablicę musisz powiększać
nie $title = $matches->getElementsByTagName( "title" );
a $title[] = $matches->getElementsByTagName( "title" );


Niestety nie działa, albo nie rozumiem.
Go to the top of the page
+Quote Post
Turson
post
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Ja bym to zrobił z użyciem SimpleXML bo jak sama nazwa wskazuje jest prosty
  1. $plik = new SimpleXMLElement('feeds.xml');
  2. foreach($plik->feeds->feed as $v){
  3. $id = (string)$v['id'];
  4. wrzucDoBazy(dane);
  5. }
Go to the top of the page
+Quote Post
Frugo75
post
Post #5





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(Turson @ 21.05.2014, 15:04:12 ) *
Ja bym to zrobił z użyciem SimpleXML bo jak sama nazwa wskazuje jest prosty
  1. $plik = new SimpleXMLElement('feeds.xml');
  2. foreach($plik->feeds->feed as $v){
  3. $id = (string)$v['id'];
  4. wrzucDoBazy(dane);
  5. }


To mi pomogło, ale dalej nie bierze mi wszystkich.
  1. $plik = simplexml_load_file('feeds.xml');
  2. foreach ($plik->feed as $foo)
  3. {
  4.  
  5. $idd = (string)$foo['path'];
  6. $cat_id = (string)$foo['cat_id'];
  7.  
  8. echo $id = substr($idd, 1);
  9. }


i teraz jak wyświetlę $idd, to pięknie wyrzuca mi wszystkie ścieżki do plików xml.

Ale tu zaczyna się problem, bo chce te ścieżki do plików xml wrzucać tutaj:
  1. $doc = new DOMDocument("1.0", "iso-8859-2");
  2.  
  3. $doc->load($id);
  4.  
  5. $feed = $doc->getElementsByTagName( "feed" );
  6. foreach ($feed as $matches)
  7. {
  8.  
  9.  
  10. $title = $matches->getElementsByTagName( "title" );
  11. $tytul = $title->item(0)->nodeValue;
  12.  
  13. $content = $matches->getElementsByTagName( "content" );
  14. $tresc = $content->item(0)->nodeValue;
  15.  
  16. $id = $matches->getElementsByTagName( "id" );
  17. $export_id = $id->item(0)->nodeValue;
  18.  
  19. $add_date = $matches->getElementsByTagName( "add_date" );
  20. $date = $add_date->item(0)->nodeValue;
  21. }


I nie chce wziąć wszystkich "load($id)", bierze tylko jedną. Proszę o poradę, wskazówkę, jak to przeskoczyć.
Go to the top of the page
+Quote Post
owca_82
post
Post #6





Grupa: Zarejestrowani
Postów: 77
Pomógł: 8
Dołączył: 22.04.2012

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


Pobiera jedną wartość bo $idd nie jest tablicą wink.gif

Zamień na:

  1.  
  2. $idd[] = (string)$foo['path'];
  3.  


i powinno być ok smile.gif
Go to the top of the page
+Quote Post
Frugo75
post
Post #7





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(owca_82 @ 22.05.2014, 18:00:20 ) *
Pobiera jedną wartość bo $idd nie jest tablicą wink.gif

Zamień na:

  1.  
  2. $idd[] = (string)$foo['path'];
  3.  


i powinno być ok smile.gif


Dziękuje, ale nie działa, albo ja czegoś nie rozumiem. Moze pomoże ktoś?

Cytat(Frugo75 @ 22.05.2014, 23:16:24 ) *
Dziękuje, ale nie działa, albo ja czegoś nie rozumiem. Moze pomoże ktoś?

Czy mogę prosić o wyjaśnienie lub wskazanie kierunku?
Go to the top of the page
+Quote Post
ibalyx
post
Post #8





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 20.08.2013

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


tak jak koledzy piszą $idd[] jest tablicą. wiesz co to jest tablica?
w tablicy elementy masz zapisane tak:
$idd[0]
$idd[1]
$idd[2]
itd.

jaśniejsze? :-)
Go to the top of the page
+Quote Post
Frugo75
post
Post #9





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(ibalyx @ 23.05.2014, 14:45:10 ) *
tak jak koledzy piszą $idd[] jest tablicą. wiesz co to jest tablica?
w tablicy elementy masz zapisane tak:
$idd[0]
$idd[1]
$idd[2]
itd.

jaśniejsze? :-)


Niestety nie, totalna czarna dziura. Rozumiem co do mnie piszesz, ale nie wiem jak z tego wybrnąć. Jak to zastosować?
Prosze o troche cierpliwości i pomocy.
Go to the top of the page
+Quote Post
nospor
post
Post #10





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




Bujasz sie z tym banalnym problemem od paru dni... Weź wkoncu zapoznaj się z czymś takim jak TABLICE. Bez tego ani rusz.
http://pl1.php.net/manual/en/language.types.array.php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post
Post #11





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat
Cytat(nospor @ 26.05.2014, 12:09:57 ) *

Bujasz sie z tym banalnym problemem od paru dni... Weź wkoncu zapoznaj się z czymś takim jak TABLICE. Bez tego ani rusz.
http://pl1.php.net/manual/en/language.types.array.php


Poczytam, obiecuje. Skoro jest taki banalny to proszę Cię o pomoc, jak to zastosować.
Go to the top of the page
+Quote Post
nospor
post
Post #12





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




Albo mozesz zrobic jak ci pisano na samym poczatku:
  1. $plik = new SimpleXMLElement('feeds.xml');
  2.  
  3. foreach($plik->feeds->feed as $v){
  4.  
  5. $id = (string)$v['id'];
  6.  
  7. wrzucDoBazy(dane); // I TUTAJ MASZ OD RAZU WRZUCAC DO BAZY A NIE TY WRZUCANIE ROBISZ GDZIESZ INDZIEJ GDZIE TRACISZ AKTUALNY OBROT PETLI
  8.  
  9. }


Cytat
Poczytam, obiecuje. Skoro jest taki banalny to proszę Cię o pomoc, jak to zastosować.
To poczytaj. Potem zapytaj ponownie, bo jak zrobic, to juz dostales nie raz tu odpowiedź.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post
Post #13





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(nospor @ 26.05.2014, 12:15:11 ) *
Albo mozesz zrobic jak ci pisano na samym poczatku:
  1. $plik = new SimpleXMLElement('feeds.xml');
  2.  
  3. foreach($plik->feeds->feed as $v){
  4.  
  5. $id = (string)$v['id'];
  6.  
  7. wrzucDoBazy(dane); // I TUTAJ MASZ OD RAZU WRZUCAC DO BAZY A NIE TY WRZUCANIE ROBISZ GDZIESZ INDZIEJ GDZIE TRACISZ AKTUALNY OBROT PETLI
  8.  
  9. }


To poczytaj. Potem zapytaj ponownie, bo jak zrobic, to juz dostales nie raz tu odpowiedź.


OK. Spokojnie;)
Nie chce od razu wrzucać danych do bazy. To co dostaje z $id = (string)$v['id']; muszę wrzucać do kolejnego parsera, bo są to ścieżki do plików xml. ($doc->load("$path1")wink.gif. Czyli najpierw z pliku feeds.xml pobieram ściezkę do kolejnych plików xml, a dopiero te wrzucam do bazy.

Ten post edytował Frugo75 26.05.2014, 11:21:31
Go to the top of the page
+Quote Post
nospor
post
Post #14





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




To dlatego masz to wrzucac do tablicy. Pisano ci juz to wielokrotnie, wielokrotnie też podano ci jak to wrzucać. jesli nadal nie ogarniasz, zaprzyjaźniej sie w koncu z TABLICAMI - linka ci podalem.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post
Post #15





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(nospor @ 26.05.2014, 12:21:24 ) *
To dlatego masz to wrzucac do tablicy. Pisano ci juz to wielokrotnie, wielokrotnie też podano ci jak to wrzucać. jesli nadal nie ogarniasz, zaprzyjaźniej sie w koncu z TABLICAMI - linka ci podalem.

Dzięki za linka;) Łatwiej byłoby mi ogarnąć temat na tym przykładzie. wink.gif
Go to the top of the page
+Quote Post
nospor
post
Post #16





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




Nie watpie ze latwiej by ci bylo ogarnac, jakby ktos to zrobil za Ciebie. Ale za dwa dni bedziesz mial podobny problem i znowu klops... Ogarnij tablice, to bedziesz mial wiedze ogolną a nie tylko dla jednego przykladu
Powód edycji: [nospor]:


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post
Post #17





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(nospor @ 26.05.2014, 12:24:22 ) *
Nie watpie ze latwiej by ci bylo ogarnac, jakby ktos to zrobil za Ciebie. Ale za dwa dni bedziesz mial podobny problem i znowu klops... Ogarnij tablice, to nie bedziesz mial wiedze ogolną a nie tylko dla jednego przykladu

Może i masz rację.
Dzięki.

No i prawie zrobiłem. Mam tak:
  1. $plik = simplexml_load_file('feeds.xml');
  2. foreach ($plik->feed as $foo)
  3. {
  4. echo "<LI>";
  5. $idd[] = (string)$foo['path'];
  6. $cat_id = (string)$foo['cat_id'];
  7.  
  8.  
  9. foreach ($idd as $idr) {
  10.  
  11.  
  12.  
  13. $doc = new DOMDocument("1.0", "iso-8859-2");
  14.  
  15.  
  16. $doc->load($idr);

Ale jak wkładam to tutaj: $doc->load($idr); to mam: Warning: DOMDocument::load() [domdocument.load]: I/O warning : failed to load external entity "/74/2014-05-26/158813/158813.xml" in /mundial/news/index.php on line 56
/74/2014-05-26/158813/158813.xml -

Czyli zła ścieżka do pliku przez slasha. Powiecie mi jak w pętli go wyrzucić? Jeśli zastosuje substr to znów mam jeden plik.
Go to the top of the page
+Quote Post
nospor
post
Post #18





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




Czemu dales foreach w foreach? Przeciez to nie ma sensu. Jedne foreach ma generowac twoją tablicę a drugi foreach ma iterowac po tej tablicy. Te foreach nie mają byc jeden w drugim.

Zas co do bledu, to wyraźnie ci napisano, ze nie moze odczytac /74/2014-05-26/158813/158813.xml Masz taki XML w ogole?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post
Post #19





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(nospor @ 26.05.2014, 15:39:39 ) *
Czemu dales foreach w foreach? Przeciez to nie ma sensu. Jedne foreach ma generowac twoją tablicę a drugi foreach ma iterowac po tej tablicy. Te foreach nie mają byc jeden w drugim.

ok Zaraz poprawię.
Cytat
Zas co do bledu, to wyraźnie ci napisano, ze nie moze odczytac /74/2014-05-26/158813/158813.xml Masz taki XML w ogole?

Tak, istnieje, ale w ścieżce 74/2014-05-26/158813/158813.xml. Nie wiem jak usunac tego slasha przed 74. Jak juz pisałem substr nie daje rady.

Cytat(Frugo75 @ 26.05.2014, 15:42:35 ) *
ok Zaraz poprawię.

Tak, istnieje, ale w ścieżce 74/2014-05-26/158813/158813.xml. Nie wiem jak usunac tego slasha przed 74. Jak juz pisałem substr nie daje rady.


Zrobiłem też tak i nadal nie działa. Jakby gdzies gubił pętlę.
  1.  
  2. $plik = simplexml_load_file('feeds.xml');
  3. foreach ($plik->feed as $foo)
  4. {
  5. echo "<LI>";
  6. $idd[] = (string)$foo['path'];
  7. $cat_id = (string)$foo['cat_id'];
  8.  
  9.  
  10. foreach ($idd as $idr) {
  11.  
  12.  
  13.  
  14. $rep = ltrim($idr,'/');
  15.  
  16.  
  17. $doc = new DOMDocument("1.0", "iso-8859-2");
  18. $doc->load($rep);

I w $doc->load($rep) wstawia tylko jedną ścieżkę. Ma ktoś pomysł jak usunąć "/" bez utraty pętli?

Ten post edytował Frugo75 26.05.2014, 14:45:59
Go to the top of the page
+Quote Post
nospor
post
Post #20





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




Nadal masz petle w petli..... ltrim nie kasuje petli....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post
Post #21





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(nospor @ 26.05.2014, 16:17:50 ) *
Nadal masz petle w petli..... ltrim nie kasuje petli....

To co ją kasuje?
Go to the top of the page
+Quote Post
nospor
post
Post #22





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




Nic jej nie kasuje.... ciagle masz petle w petli.... miales to zmienic....

To jest petla w petli
  1. foreach (....){ //PETLA 1
  2. foreach (.....) {//PETLA2
  3. } //koniec PETLA2
  4. } //KONIEC PETLA1


A to nie jest petla w petli:
  1. foreach (....){ //PETLA 1
  2. } //KONIEC PETLA1
  3.  
  4. foreach (.....) {//PETLA2
  5. } //koniec PETLA2
  6.  

I tak wlasnie masz miec


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post
Post #23





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(nospor @ 26.05.2014, 16:31:35 ) *
[/php]
I tak wlasnie masz miec


Mam tak:

  1. $plik = simplexml_load_file('feeds.xml');
  2. foreach ($plik->feed as $foo)
  3. {
  4.  
  5. $idd[] = ltrim((string)$foo['path'],'/');
  6. $cat_id = (string)$foo['cat_id'];
  7.  
  8.  
  9.  
  10.  
  11. }
  12.  
  13. foreach ($idd as $idr){
  14.  
  15.  
  16. echo $idr;
  17.  
  18.  
  19. $doc = new DOMDocument("1.0", "iso-8859-2");
  20. $doc->load($idr);
  21.  
  22. }


No i chyba działa;)
Dzięki.


Cytat
No i chyba działa;)
Dzięki.


Teraz bierze ostatni... F****
Go to the top of the page
+Quote Post
Turson
post
Post #24





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Nie dość, że da się to załatwić w jednej pętli, to bierze ostatni, bo tylko wczytujesz w drugiej pętli jakiś dokument ale nic z nim nie robisz i wczytujesz w kólko wszystkie jakie są w tablicy
Go to the top of the page
+Quote Post
Frugo75
post
Post #25





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(Turson @ 26.05.2014, 18:34:37 ) *
Nie dość, że da się to załatwić w jednej pętli, to bierze ostatni, bo tylko wczytujesz w drugiej pętli jakiś dokument ale nic z nim nie robisz i wczytujesz w kólko wszystkie jakie są w tablicy

Wkleje całość:

  1.  
  2. <?php
  3.  
  4. function str2url($str, $replace = "-" ){
  5. $str = iconv('UTF- 8', 'ASCII//TRANSLIT', $str);
  6.  
  7.  
  8.  
  9. $charsArr = array( '^', "'", '"', '`', '~');
  10. $str = str_replace( $charsArr, '', $str );
  11.  
  12. $return = trim(ereg_replace(' +',' ',preg_replace('/[^a-zA-Z0-9\s]/','',strtolower($str))));
  13. return str_replace(' ', $replace, $return);
  14. }
  15. /*
  16. $doc = new DOMDocument("1.0", "iso-8859-2");
  17. $doc->load("feeds.xml");
  18.  
  19. $books = $doc->getElementsByTagName('feed');
  20. foreach ($books as $feed) {
  21.   echo $feed->nodeValue, PHP_EOL;
  22.  // echo $feed -> getAttribute('id').'<br>';
  23.   $path = $feed -> getAttribute('path');
  24.   $cat_id = $feed -> getAttribute('cat_id');
  25.   // echo $feed -> getAttribute('cat_id').'<br>';
  26. //echo $path;
  27.  
  28. //$path1
  29.  */
  30.  
  31. $plik = simplexml_load_file('feeds.xml');
  32. foreach ($plik->feed as $foo)
  33. {
  34.  
  35. $idd[] = ltrim((string)$foo['path'],'/');
  36. $cat_id = (string)$foo['cat_id'];
  37.  
  38.  
  39.  
  40. }
  41. foreach ($idd as $idr){
  42.  
  43.  
  44. //echo $idr."<br>";
  45.  
  46.  
  47. $doc = new DOMDocument("1.0", "iso-8859-2");
  48. $doc->load($idr);
  49.  
  50. echo $idr;
  51.  
  52. $feed = $doc->getElementsByTagName( "feed" );
  53. }
  54. foreach ($feed as $matches)
  55. {
  56.  
  57.  
  58. $title = $matches->getElementsByTagName( "title" );
  59. $tytul = $title->item(0)->nodeValue;
  60.  
  61. $content = $matches->getElementsByTagName( "content" );
  62. $tresc = $content->item(0)->nodeValue;
  63.  
  64. $id = $matches->getElementsByTagName( "id" );
  65. $export_id = $id->item(0)->nodeValue;
  66.  
  67. $add_date = $matches->getElementsByTagName( "add_date" );
  68. $date = $add_date->item(0)->nodeValue;
  69.  
  70.  
  71. //
  72.  
  73. $tytul1 = addslashes($tytul);
  74. $tresc1 = addslashes($tresc);
  75. $date1 = addslashes($date);
  76.  
  77. mysql_connect("*******","*******","******") or die(mysql_error());
  78. mysql_query("SET NAMES utf8");
  79. mysql_select_db("********");
  80.  
  81. $tresc1;
  82.  
  83.  
  84. $tylul1a=str2Url($tytul1);
  85.  
  86. mysql_query("INSERT INTO wp_posts (post_content, post_title, post_date, ID, post_name) VALUES ('".$tresc1."', '".$tytul1."', '".$date1."', '".$export_id."', '".$tylul1a."') ON DUPLICATE KEY UPDATE ID=VALUES(ID)") or die(mysql_error());
  87.  
  88.  
  89. mysql_query("INSERT IGNORE INTO wp_term_relationships (object_id, term_taxonomy_id) VALUES ('$export_id', '2')") or die(mysql_error());
  90.  
  91. //$first = (explode("/", $path));
  92. //$path_cat = $first[1];
  93.  
  94. $path_cat = $cat_id;
  95.  
  96. if ($path_cat == 1) {
  97.  
  98. $cat = 13;
  99. }
  100.  
  101. elseif ($path_cat == 10) {
  102. $cat = 6;
  103. }
  104.  
  105. elseif ($path_cat == 80) {
  106. $cat = 8;
  107. }
  108. elseif ($path_cat == 36) {
  109. $cat = 11;
  110. }
  111.  
  112. elseif ($path_cat == 83) {
  113. $cat = 14;
  114. }
  115.  
  116. elseif ($path_cat == 84) {
  117. $cat = 12;
  118. }
  119.  
  120. elseif ($path_cat == 74) {
  121. $cat = 2;
  122. }
  123.  
  124. $reqwer = mysql_query("INSERT INTO wp_term_relationships (object_id, term_taxonomy_id) VALUES ('$export_id', '$cat')") or die(mysql_error());
  125. //var_dump($reqwer);
  126.  
  127.  
  128.  
  129. //}
  130. }
  131.  
  132. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #26





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




W petli masz takie cos:
$feed = $doc->getElementsByTagName( "feed" );
i za kazdym razem w petli nadpisujesz ten $feed, przez co po zakonczeniu petli masz tylko ostatni $feed...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post
Post #27





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(nospor @ 26.05.2014, 21:08:49 ) *
W petli masz takie cos:
$feed = $doc->getElementsByTagName( "feed" );
i za kazdym razem w petli nadpisujesz ten $feed, przez co po zakonczeniu petli masz tylko ostatni $feed...


Kurde niestety nic to nie dało. Zamknąłem pętle wyżej i dalej to samo. Może to nie temat do przedszkola?smile.gif
Go to the top of the page
+Quote Post
nospor
post
Post #28





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




Cytat
Może to nie temat do przedszkola?
No nie, zarowno problem jak i wiedza autora jak najbardziej pasuje tam gdzie jest wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post
Post #29





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(nospor @ 26.05.2014, 22:13:58 ) *
No nie, zarowno problem jak i wiedza autora jak najbardziej pasuje tam gdzie jest wink.gif


Wiedza to na 100 proc tutaj. Ale problem chyba poważny.wink.gif
Pomóż mi kolego nospor proszę.
Go to the top of the page
+Quote Post
nospor
post
Post #30





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




Ja nadal nie ogarniam, czemu sie uparles ze te sciezki mają być w tablicy. Z kodu co teraz pokazales widac jak wol, że mozna spokojnie zrobic to co ci proponowal raz Turson a potem ja po nim powtorzylem - czyli, że zapisywac od razu do bazy na bieżąco, wszystkie obliczenia i zapis robic w glownej petli na biezaco.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post
Post #31





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(nospor @ 26.05.2014, 22:20:00 ) *
Ja nadal nie ogarniam, czemu sie uparles ze te sciezki mają być w tablicy. Z kodu co teraz pokazales widac jak wol, że mozna spokojnie zrobic to co ci proponowal raz Turson a potem ja po nim powtorzylem - czyli, że zapisywac od razu do bazy na bieżąco, wszystkie obliczenia i zapis robic w glownej petli na biezaco.


Nie upieram się, tylko mam jakiś blackout i nie wiem jak to zrobić.
Go to the top of the page
+Quote Post
nospor
post
Post #32





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




Tak jak ci napisalismy podajac przykladowy kod - wszystko od razu na bieżącą w tej samej petli co pobierasz sciezki

I tak, upierales sie, bo kilkukrotnie ci na to zwracalismy uwage, a ty waliles ciagle swoje, ze tak nie moze byc bo cos tam..... potem pokazujesz caly kod i nagle sie okazuje, ze zadnego "bo cos tam " nie ma.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post
Post #33





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(nospor @ 26.05.2014, 22:34:10 ) *
Tak jak ci napisalismy podajac przykladowy kod - wszystko od razu na bieżącą w tej samej petli co pobierasz sciezki

I tak, upierales sie, bo kilkukrotnie ci na to zwracalismy uwage, a ty waliles ciagle swoje, ze tak nie moze byc bo cos tam..... potem pokazujesz caly kod i nagle sie okazuje, ze zadnego "bo cos tam " nie ma.


Świetnie mobilizujesz do samodzielnej pracy. Wskaż mi tylko drogę, a nią pójdę. Rozumiem o co chodzi, tylko nie wiem, jak mam od razu wrzucać dane, tak jak podpowiedziałeś z Tursonem.
Go to the top of the page
+Quote Post
Turson
post
Post #34





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Tworzysz tablicę $idd po to, żeby lecieć po niej potem foreachem i deklarujesz zmienną $feed, którą znowu traktujesz foreachem. Zauważ, że to bez sensu powtarzać to samo enty raz.
Go to the top of the page
+Quote Post
Frugo75
post
Post #35





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(Turson @ 26.05.2014, 22:40:07 ) *
Tworzysz tablicę $idd po to, żeby lecieć po niej potem foreachem i deklarujesz zmienną $feed, którą znowu traktujesz foreachem. Zauważ, że to bez sensu powtarzać to samo enty raz.


OK. Tylko to jest taki układ, że plik feed.xml pokazuje ścieżki do innych plików xml, które to właśnie pliki mają być wrzucane do bazy.
A jak robię tak jak Wy podpowiadacie to mam bład: Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: Entity: line 1: parser error : Start tag expected, '<' not found in /mundial/news/index.php on line 46

a kod mam taki

  1.  
  2.  
  3. $plik = new SimpleXMLElement('feeds.xml');
  4.  
  5. foreach($plik->feeds->feed as $v){
  6.  
  7. $id = (string)$v['path'];
  8. echo $id;
  9.  
  10.  
  11. }


Ten post edytował Frugo75 26.05.2014, 21:46:56
Go to the top of the page
+Quote Post
nospor
post
Post #36





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




Musisz wszystko robic na bieżaco

  1. $plik = simplexml_load_file('feeds.xml');
  2. foreach ($plik->feed as $foo) {
  3. $idr = ltrim((string)$foo['path'],'/');
  4. $cat_id = (string)$foo['cat_id'];
  5. $doc = new DOMDocument("1.0", "iso-8859-2");
  6. $doc->load($idr);
  7. $feed = $doc->getElementsByTagName( "feed" );
  8.  
  9. foreach ($feed as $matches) {
  10. //I TU TWOJ KOD OD BAZY. NIE WKLEJALEM GO JUZ BO ZA DLUGI
  11. }
  12. }

Tu naprawde nie ma zadnej filozofii


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post
Post #37





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(nospor @ 27.05.2014, 08:46:19 ) *
Musisz wszystko robic na bieżaco


[/php]
Tu naprawde nie ma zadnej filozofii


Dziękuje, jednak... wrzuca tylko jedną. Mam taki kod:

  1.  
  2. <?php
  3.  
  4. function str2url($str, $replace = "-" ){
  5. $str = iconv('UTF- 8', 'ASCII//TRANSLIT', $str);
  6.  
  7.  
  8.  
  9. $charsArr = array( '^', "'", '"', '`', '~');
  10. $str = str_replace( $charsArr, '', $str );
  11.  
  12. $return = trim(ereg_replace(' +',' ',preg_replace('/[^a-zA-Z0-9\s]/','',strtolower($str))));
  13. return str_replace(' ', $replace, $return);
  14. }
  15.  
  16.  
  17. $plik = simplexml_load_file('feeds.xml');
  18. foreach ($plik->feed as $foo) {
  19. $idr = ltrim((string)$foo['path'],'/');
  20. $cat_id = (string)$foo['cat_id'];
  21. $doc = new DOMDocument("1.0", "iso-8859-2");
  22. $doc->load($idr);
  23. $feed = $doc->getElementsByTagName( "feed" );
  24.  
  25. foreach ($feed as $matches) {
  26.  
  27.  
  28.  
  29.  
  30.  
  31. $title = $matches->getElementsByTagName( "title" );
  32. $tytul = $title->item(0)->nodeValue;
  33.  
  34. $content = $matches->getElementsByTagName( "content" );
  35. $tresc = $content->item(0)->nodeValue;
  36.  
  37. $id = $matches->getElementsByTagName( "id" );
  38. $export_id = $id->item(0)->nodeValue;
  39.  
  40. $add_date = $matches->getElementsByTagName( "add_date" );
  41. $date = $add_date->item(0)->nodeValue;
  42.  
  43.  
  44.  
  45.  
  46. $tytul1 = addslashes($tytul);
  47. $tresc1 = addslashes($tresc);
  48. $date1 = addslashes($date);
  49.  
  50. mysql_query("SET NAMES utf8");
  51.  
  52. $tresc1;
  53.  
  54.  
  55. $tylul1a=str2Url($tytul1);
  56.  
  57. mysql_query("INSERT INTO wp_posts (post_content, post_title, post_date, ID, post_name) VALUES ('".$tresc1."', '".$tytul1."', '".$date1."', '".$export_id."', '".$tylul1a."') ") or die(mysql_error());
  58.  
  59.  
  60. mysql_query("INSERT IGNORE INTO wp_term_relationships (object_id, term_taxonomy_id) VALUES ('$export_id', '2')") or die(mysql_error());
  61.  
  62.  
  63. $path_cat = $cat_id;
  64.  
  65. if ($path_cat == 1) {
  66.  
  67. $cat = 13;
  68. }
  69.  
  70. elseif ($path_cat == 10) {
  71. $cat = 6;
  72. }
  73.  
  74. elseif ($path_cat == 80) {
  75. $cat = 8;
  76. }
  77. elseif ($path_cat == 36) {
  78. $cat = 11;
  79. }
  80.  
  81. elseif ($path_cat == 83) {
  82. $cat = 14;
  83. }
  84.  
  85. elseif ($path_cat == 84) {
  86. $cat = 12;
  87. }
  88.  
  89. elseif ($path_cat == 74) {
  90. $cat = 2;
  91. }
  92.  
  93. $reqwer = mysql_query("INSERT INTO wp_term_relationships (object_id, term_taxonomy_id) VALUES ('$export_id', '$cat')") or die(mysql_error());
  94.  
  95.  
  96.  
  97.  
  98.  
  99. }
  100. }
  101.  
  102. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #38





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




1) Łączenie z bazą ma być poza pętlami...
2) I co, wrzuca tylko jeden rekord i nie pluje żadnym błędem?
3) Wyswietlaj sobie stan danych zmiennych byś wiedział na jakim etapie jesteś w danej chwili. Może pobiera ci tylko jedną dane i dlatego tylko ją wrzuca.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post
Post #39





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(nospor @ 27.05.2014, 12:33:34 ) *
1) Łączenie z bazą ma być poza pętlami...
2) I co, wrzuca tylko jeden rekord i nie pluje żadnym błędem?
3) Wyswietlaj sobie stan danych zmiennych byś wiedział na jakim etapie jesteś w danej chwili. Może pobiera ci tylko jedną dane i dlatego tylko ją wrzuca.


1. ok
2. Wrzuca pierwszą z feeds.xml i info "Duplicate entry '158869' for key 'PRIMARY'"
3. Dobrze. Ale to wieczorkiem.
Go to the top of the page
+Quote Post
nospor
post
Post #40





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




Cytat
2. Wrzuca pierwszą z feeds.xml i info "Duplicate entry '158869' for key 'PRIMARY'"

facepalmxd.gif
Naprawde nie mogles wczesniej samemu wpasc na to by podac nam blad, ktory rzuca ci baza??

No i juz wiesz czemu dodaje ci tylko jeden rekord. Bo baza rzuca blad i informuje cie co sie jej nie podoba


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post
Post #41





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(nospor @ 27.05.2014, 13:05:53 ) *
facepalmxd.gif
Naprawde nie mogles wczesniej samemu wpasc na to by podac nam blad, ktory rzuca ci baza??

No i juz wiesz czemu dodaje ci tylko jeden rekord. Bo baza rzuca blad i informuje cie co sie jej nie podoba


Nie do końca tak. Nawet jak mam czystą bazę i puszczam skrypt, to dodaje tylko jeden i dalej nie idzie. Czy nie powinno być tak, że skoro jest duplikat, to bierze następny?
Go to the top of the page
+Quote Post
nospor
post
Post #42





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




Nie, bo dales DIE a DIE konczy wykonywanie skryptu natychmiast :/


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Frugo75
post
Post #43





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(nospor @ 27.05.2014, 13:30:27 ) *
Nie, bo dales DIE a DIE konczy wykonywanie skryptu natychmiast :/

Chyba działa. Jeszcze na bazie pozmieniałem primary na index.
Dzięki wielkie Panowie. Myślę jak Wam tu się odwdzięczyć.
Go to the top of the page
+Quote Post

3 Stron V   1 2 3 >
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: 20.08.2025 - 21:43