Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML][PHP]Import z xml
Forum PHP.pl > Forum > Przedszkole
zundap
Witam chcę zaimportować zawartość pliku xml płatności masowe kombinuję ale nie mogę wyciągnąć interesujących mnie wartości

  1.  
  2. $xml = simplexml_load_file('plik.xml');
  3. $licz = count($xml->Rpt->Ntry);
  4. for($i=0;$i<$licz;$i++) {
  5. $attr = $xml->Rpt->Ntry[$i]->attributes();
  6. $kwota[$i] = $attr['Amt'];
  7. echo $kwota[$i];
  8. }





freemp3
Metoda attributes zwraca listę atrybutów danego węzła, a nie jego elementy podrzędne. Jeśli chcesz wyciągnąć wartość węzła Amt, to wystarczy się do niego odwołać tak jak do węzłów nadrzędnych, czyli:
  1. $xml->Rpt->Ntry[$i]->Amt
zundap
Hmm coś nadal robię źle bo w wynikach pusto

  1.  
  2. $xml = simplexml_load_file('plik.xml');
  3. $licz = count($xml->Rpt->Ntry);
  4. for($i=0;$i<$licz;$i++) {
  5. $attr = $xml->Rpt->Ntry[$i]->Amt->attributes();
  6. $kwota[$i] = $attr['Amt'];
  7. echo $kwota[$i];
Pyton_000
Czy ja widzę plik SEPA ? biggrin.gif
zundap
Tak smile.gif
freemp3
Jest pusto ponieważ węzeł Amt nie posiada atrybutów więc zwraca pustą listę. Ciebie interesuje wartość więc użycie metody attributes jest niepotrzebne.
zundap
Hmm nie bardzo wiem co ty do mnie mówisz smile.gif
tak mi też nie działa
  1.  
  2. $xml = simplexml_load_file('plik.xml');
  3. $licz = count($xml->Rpt->Ntry);
  4. for($i=0;$i<$licz;$i++) {
  5. $attr = $xml->Rpt->Ntry[$i]->Amt ;
  6. $kwota[$i] = $attr['Amt'];
  7. echo $kwota[$i];
viking
Możesz wrzucić kawałek tego xmla na jakieś środowisko php online? Będzie łatwiej ci pokazać.
zundap
Poniżej link do pliku

http://infoo.net/1/plik.xml

viking
  1. $xml = simplexml_load_file('plik.xml');
  2.  
  3. $x = $xml->xpath('//BkToCstmrAcctRpt/Rpt/Ntry/Amt');
  4. foreach ($x as $item) {
  5. echo $item, '<br>';
  6. }
zundap
ładnie wyświetla ceny smile.gif dzięki ale jak jeszcze zrobić żeby oprócz cen wyświetliło inne np tytuł przelewu " Ustrd "

bo na podstawie tego kodu nie przychodzi mi nic do głowy
viking
Nie ma żadnego znaczenia czy po twojemu czy mojemu.

  1. $xml = simplexml_load_file('plik.xml');
  2.  
  3. // 1
  4. foreach ($xml->BkToCstmrAcctRpt->Rpt->Ntry as $item) {
  5. echo $item->Amt, '|';
  6. echo $item->NtryDtls->TxDtls->RmtInf->Ustrd, "\r\n";
  7. }
  8.  
  9. // 2
  10. $x = $xml->xpath('//BkToCstmrAcctRpt/Rpt/Ntry');
  11.  
  12. foreach ($x as $item) {
  13. echo $item->Amt, '|';
  14. echo $item->NtryDtls->TxDtls->RmtInf->Ustrd, "\r\n";
  15. }
zundap
viking Wielkie dzięki wszystko jasne , pięknie działa
Ostania rzecz mi tylko została

Zabezpieczenie żeby do bazy kilkukrotnie nie wszedł ten sam przelew , przy kilkukrotnym imporcie , każdy przelew ma swój unikalny pm_id_platnosci


ja do bazy wsadzam tak

  1.  
  2. $pm_id_platnosci = $item->NtryDtls->TxDtls->Refs->EndToEndId ;
  3.  
  4. $masowe_wsad = "INSERT INTO platnosci_masowe (pm_kwota, pm_id_platnoscy) values ('$pm_kwota', '$pm_id_platnosci')";
  5.  
  6. if (!mysql_query ($masowe_wsad, $link) )
  7. {
  8. }


co dodać w tym INSERT
nospor
Skoro pm_id_platnosci jest UNIKALNE to ustaw w bazie na to pole klucz UNIQUE i juz, baza sama bedzie pilnowac tego
viking
mysql_query - rozszerzenie mysql już bardzo dawno temu zostało usunięte z php.
zundap
dziękuję wam za pomoc , wszystko działa jak należny smile.gif
zamykamy temat
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.