foreach is bugged in xml

Asked

Viewed 35 times

0

Guys I’m cracking my head to make a loop through the foreach The query takes the xml link with the date 12/08/2019 with the token when I click to query it executes the query.php

and so he gives me back my values
80079598 : 27951
80079409 : 27951
80079399 : 27951
80079005 : 27951
80078970 : 27951

Only the CODE it takes right only the ID it should take only takes 1 and does not take the rest

Full code of XML

xml

    This XML file does not appear to have any style information associated with it. The document tree is shown below.
<result>
<success>true</success>
<data>
<charges>
<charge>
<code>80079409</code>
<dueDate>16/08/2019</dueDate>
<checkoutUrl>
https://sandbox.boletobancario.com/boletofacil/checkout/5E4426FF099E1A1C88E388EEB03571610B43523DFB8C8356
</checkoutUrl>
<link>
https://sandbox.boletobancario.com/boletofacil/charge/boleto.pdf?token=539231:m:bb5b865782ceec0633b43500fe3a2633d51b43303e1c7674a80e0e12383df30b
</link>
<payNumber>BOLETO PAGO</payNumber>
<billetDetails>
<bankAccount>0655/46480-8</bankAccount>
<ourNumber>176/80079409-2</ourNumber>
<barcodeNumber>34191798300000021001768007940920655464808000</barcodeNumber>
<portfolio>176</portfolio>
</billetDetails>
<payments>
<payment>
<id>27942</id>
<amount>21.00</amount>
<date>12/08/2019</date>
<fee>3.90</fee>
<type>BOLETO</type>
<status>CONFIRMED</status>
<creditCardId/>
</payment>
</payments>
</charge>
<charge>
<code>80079399</code>
<dueDate>16/08/2019</dueDate>
<checkoutUrl>
https://sandbox.boletobancario.com/boletofacil/checkout/4E6E654050A7F01250197376A4F2DDC5E16C6B297FDA03F2
</checkoutUrl>
<link>
https://sandbox.boletobancario.com/boletofacil/charge/boleto.pdf?token=539221:m:2dedab41ca47e7c16c80b1da059be0bb83f2ef860b68302729671a18f18da845
</link>
<payNumber>BOLETO PAGO</payNumber>
<billetDetails>
<bankAccount>0655/46480-8</bankAccount>
<ourNumber>176/80079399-5</ourNumber>
<barcodeNumber>34191798300000032001768007939950655464808000</barcodeNumber>
<portfolio>176</portfolio>
</billetDetails>
<payments>
<payment>
<id>27941</id>
<amount>32.00</amount>
<date>12/08/2019</date>
<fee>3.90</fee>
<type>BOLETO</type>
<status>CONFIRMED</status>
<creditCardId/>
</payment>
</payments>
</charge>
<charge>
<code>80079005</code>
<dueDate>15/08/2019</dueDate>
<checkoutUrl>
https://sandbox.boletobancario.com/boletofacil/checkout/E383FCFDBB5E4A06E435BEE8DAC6B00D2B10E80D4A014538
</checkoutUrl>
<link>
https://sandbox.boletobancario.com/boletofacil/charge/boleto.pdf?token=538884:m:d53c8ed0e470656c103c8133b6346234049cf2c253eed0e1b1c7ce1918645c27
</link>
<payNumber>BOLETO PAGO</payNumber>
<billetDetails>
<bankAccount>0655/46480-8</bankAccount>
<ourNumber>176/80079005-8</ourNumber>
<barcodeNumber>34194798200000032001768007900580655464808000</barcodeNumber>
<portfolio>176</portfolio>
</billetDetails>
<payments>
<payment>
<id>27943</id>
<amount>32.00</amount>
<date>12/08/2019</date>
<fee>3.90</fee>
<type>BOLETO</type>
<status>CONFIRMED</status>
<creditCardId/>
</payment>
</payments>
</charge>
<charge>
<code>80078970</code>
<dueDate>15/08/2019</dueDate>
<checkoutUrl>
https://sandbox.boletobancario.com/boletofacil/checkout/57D3C0650A743272077CD024E456D1B58735E97B51DB6D13
</checkoutUrl>
<link>
https://sandbox.boletobancario.com/boletofacil/charge/boleto.pdf?token=538849:m:6e2680e3a5620076f0f97524c4270b72bf423f873d549973e89c05965f9409e7
</link>
<payNumber>BOLETO PAGO</payNumber>
<billetDetails>
<bankAccount>0655/46480-8</bankAccount>
<ourNumber>176/80078970-4</ourNumber>
<barcodeNumber>34195798200000032001768007897040655464808000</barcodeNumber>
<portfolio>176</portfolio>
</billetDetails>
<payments>
<payment>
<id>27944</id>
<amount>32.00</amount>
<date>12/08/2019</date>
<fee>3.90</fee>
<type>BOLETO</type>
<status>CONFIRMED</status>
<creditCardId/>
</payment>
</payments>
</charge>
</charges>
</data>
</result>

query Pagamentov.php

<?php 
    include("../../conexao.php");


if(!isset($_SESSION)){
    session_start();
}
    $query4 = "select * from funcionalidades where id = '1'";
    $result4 = mysqli_query($conexao, $query4);
    $dados4 = mysqli_fetch_array($result4);

      if(mysqli_num_rows ($result4) > 0) {

      }
    if($dados4['status'] == 1) {
    if (isset($_POST['data'])){
            $data =  $_POST['data'];
            $token = "3C9D99D90FF1F6F9AF2353D708CA2C59BFC6828CBDFF4ED2254F9CE4D3EBA416";

            function gerar($token,$data){
                $url = "https://sandbox.boletobancario.com/boletofacil/integration/api/v1/list-charges?";
                $url .= "token=".$token."&";
                $url .= "beginPaymentDate=".$data."&";
                $url .= "responseType=XML";

                return $url;
            }

              $xml = gerar($token,$data);
              $boleto = simplexml_load_file($xml);
            $capeta = $boleto->data->charges->charge;
            foreach($capeta as $dados){

             echo $dados->code;
         echo "<br>";
             echo $dados->payNumber;
              echo "<br>";
            }


    }
    }else{
        echo "Função desabilitada contate um administrador para fazer a liberação!";
    }
?>

It takes the correct information already in the example below it does not take all xml Payments->payment ID

query Pagamentov.php

 <?php 
    include("../../conexao.php");


if(!isset($_SESSION)){
    session_start();
}
    $query4 = "select * from funcionalidades where id = '1'";
    $result4 = mysqli_query($conexao, $query4);
    $dados4 = mysqli_fetch_array($result4);

      if(mysqli_num_rows ($result4) > 0) {

      }
    if($dados4['status'] == 1) {
    if (isset($_POST['data'])){
            $data =  $_POST['data'];
            $token = "3C9D99D90FF1F6F9AF2353D708CA2C59BFC6828CBDFF4ED2254F9CE4D3EBA416";

            function gerar($token,$data){
                $url = "https://sandbox.boletobancario.com/boletofacil/integration/api/v1/list-charges?";
                $url .= "token=".$token."&";
                $url .= "beginPaymentDate=".$data."&";
                $url .= "responseType=XML";

                return $url;
            }

              $xml = gerar($token,$data);
              $boleto = simplexml_load_file($xml);
            $capeta = $boleto->data->charges->charge->payments->payment;
            foreach($capeta as $dados){

             echo $dados->id;
         echo "";
             echo $dados->amount;

            }


    }
    }else{
        echo "Função desabilitada contate um administrador para fazer a liberação!";
    }
?>

consult.php

<form action="consultarPagamentov" method="POST">
          <div class="form-group">
            <label for="exampleInputEmail1">Data</label>
            <input type="text" required class="form-control" name="data" id="data" placeholder="Data">

          </div>
          <button type="submit" class="btn btn-primary">Consultar</button>

            </form>
  • $Capeta was great kkkkk

  • just out of anger I put kk

1 answer

0


Edward, change these lines from your file:

$capeta = $boleto->data->charges->charge->payments->payment;
            foreach($capeta as $dados){

             echo $dados->id;
         echo "";
             echo $dados->amount;

            }

For these:

$capeta = $boleto->data->charges->charge;
    foreach($capeta as $dados){
         echo "ID: " . $dados->payments->payment->id . '<br>';
         echo "ID: " . $dados->payments->payment->amount . '<br><br>';

    }
  • Leandro forgot to put the sandbox link on top they are already closed..

  • Fixed already the post checks there now

  • This link it is deploying inside the search ai forms the link when I click on query

  • All right, with the information you posted to work it’s just closing the tags and it will work. You should correct your entire question, because the link you put from the sandbox is different from the xml you put as an example and so, we can’t help you, something else. You have not posted what is your function generate(). Without this information we cannot help you either. Unfortunately.

  • Leandro put the whole code there and put what I need

  • post your generate function, because if the problem is not in xml will be in it.

  • Ready Leandro, remembering that it works what does not work is the example 2 of displaying the code of Payments

  • your repetition is in Charge and not in Payments. After this you get what you need, I changed my answer

  • Bah was worth more worked here

Show 4 more comments

Browser other questions tagged

You are not signed in. Login or sign up in order to post.