Doubt print more than one item in return JSON web service

Asked

Viewed 22 times

0

I have a site in Wordpress and in it I am consuming a Web Service, I created a function to filter the championships based on some information, If all are true, it returns the name of the respective championship, the teams, their games and results, until then everything works perfectly, but I’m having trouble displaying all the values of the championship, he is calling only one of the games, but there are more than one "Championship":"18" on the return of results, but on the screen is only printing one of them, could someone help me?

<?php /* Template Name: Teste Api */ get_header(); ?>

<?php 
    $api_campeonatos = 'https://sportsmanager.com.br/api/[email protected]&token=SXLSO8342HSDE78623GVS7234GNMSKL&ano=2018&status=A';
    $campeonatos = wp_remote_get( $api_campeonatos );
    $campeonatos_data = json_decode( wp_remote_retrieve_body( $campeonatos ), true );
    $retorno_campeonatos = array(); // <- mudar para array

    if($campeonatos_data){
        foreach($campeonatos_data as $row){
            if(!is_array($row)){
                //$retorno = $retorno.'<td>'.$row.'</td>';
            }else{
                if($row['sexo'] == 'M' && $row['modalidade'] == 2 && $row['categoria'] == 4){
                    $retorno_campeonatos[] = array('valor' => '<td>'.$row['nome'].'</td>', 'id' => $row['codigo']); // <--- adiciona
                }   
            }   
        }
    }
?>

<script>

$(function(){

    var html = '';

    <?php foreach($retorno_campeonatos as $valor){ ?>

        html += '<a class="list-group-item list-group-item-action" data-toggle="list" href="#bloco-<?php echo $valor['id'];?>" role="tab"><?php echo $valor['valor'];?></a>';

    <?php } ?>

    $('#myList').html(html);

});

</script>

<div class="container">
    <div class="row">   
        <div id="contents">
            <div class="list-group" id="myList" role="tablist">
            </div>

            <div id="tabList" class="tab-content">
            </div>
        </div>
    </div>
</div>

<?php
// pega os valores da primeira URL
$api_campeonatos = 'https://sportsmanager.com.br/api/[email protected]&token=SXLSO8342HSDE78623GVS7234GNMSKL&ano=2018&status=A';
$campeonato = wp_remote_get( $api_campeonatos );
$campeonato = json_decode( wp_remote_retrieve_body( $campeonato ), true );

// pega os valores da segunda URL
$api_resultados = 'https://sportsmanager.com.br/api/[email protected]&token=SXLSO8342HSDE78623GVS7234GNMSKL&ano=2018&status=A';
$resultado = wp_remote_get( $api_resultados );
$resultado = json_decode( wp_remote_retrieve_body( $resultado ), true );

$retorno_resultados = array();

foreach($campeonato as $camp){
    foreach($resultado as $result){
        if(isset($camp['codigo']) && isset($result['campeonato']) && $camp['codigo'] == $result['campeonato']){
            $retorno_resultados[] = array(
                'mandante' => '<td>'.$result['mandante'].'</td>', 
                'visitante' => '<td>'.$result['visitante'].'</td>', 
                'id' => $camp['codigo'],
                'data' => '<td>'.$camp['data'],
                'placar1n' => '<td>'.$result['placar1n'].'</td>',
                'placar2n' => '<td>'.$result['placar2n'].'</td>',
                'placar1p' => '<td>'.$result['placar1p'].'</td>',
                'placar2p' => '<td>'.$result['placar2p'].'</td>',
                'placar1s' => '<td>'.$result['placar1s'].'</td>',
                'placar2s' => '<td>'.$result['placar2s'].'</td>'
            ); // <--- adiciona
            break;
        }
    }
}
?>
<script>

$(function(){

    var html2 = '';

    <?php foreach($retorno_resultados as $val){ ?>

        html2 += '<div class="tab-pane" id="bloco-<?php echo $val['id'];?>" role="tabpanel"><td><?php echo $val['mandante'];?>x<?php echo $val['visitante'];?></td></div>';

    <?php } ?>

    $('#tabList').html(html2);

});

</script>




<?php get_footer(); ?>

Return Championships:

  {
"codigo": "17",
"nome": "CIRCUITO ESCOLAR - SÉRIE OURO",
"modalidade": "2",
"categoria": "6",
"sexo": "M",
"data": "2018-08-13 00:00:00",
"atualizacao": null,
"status": "N"
},
  {
"codigo": "19",
"nome": "CIRCUITO ESCOLAR - SÉRIE OURO",
"modalidade": "2",
"categoria": "4",
"sexo": "M",
"data": "2018-08-13 00:00:00",
"atualizacao": null,
"status": "N"
},
  {
"codigo": "18",
"nome": "CIRCUITO ESCOLAR - SÉRIE PRATA",
"modalidade": "2",
"categoria": "4",
"sexo": "M",
"data": "2018-08-13 00:00:00",
"atualizacao": null,
"status": "N"
},

Retorno Results

{
"codigo": "30",
"campeonato": "18",
"data": "2018-08-31 00:00:00",
"horario": "19h",
"local": "4",
"realizada": "N",
"jogo": "0",
"fase": "2",
"rodada": "0",
"mandante": "7",
"visitante": "5",
"placar1n": null,
"placar2n": null,
"placar1p": null,
"placar2p": null,
"placar1s": null,
"placar2s": null,
"grupo1": "",
"grupo2": "",
"quadra": "4",
"obs": null
},
  {
"codigo": "31",
"campeonato": "18",
"data": "2018-09-11 00:00:00",
"horario": "19H",
"local": "2",
"realizada": "N",
"jogo": "0",
"fase": "2",
"rodada": "0",
"mandante": "5",
"visitante": "3",
"placar1n": null,
"placar2n": null,
"placar1p": null,
"placar2p": null,
"placar1s": null,
"placar2s": null,
"grupo1": "",
"grupo2": "",
"quadra": "2",
"obs": null
},
  {
"codigo": "32",
"campeonato": "18",
"data": "2018-09-25 00:00:00",
"horario": "19H",
"local": "4",
"realizada": "N",
"jogo": "0",
"fase": "2",
"rodada": "0",
"mandante": "7",
"visitante": "3",
"placar1n": null,
"placar2n": null,
"placar1p": null,
"placar2p": null,
"placar1s": null,
"placar2s": null,
"grupo1": "",
"grupo2": "",
"quadra": "4",
"obs": null
},

1 answer

0

In both cases, you are scanning the return and, when the condition is satisfied, you are creating an array always and replacing in the return variable.

You perform the array_push($list, items...); with each iteration in return.

Note: Beware of API consumption URL, is with user and token, anyone with bad intentions can consume the services.

  • Sorry, it’s the first time I consume a Web Service, I’m half lost, hahah, I need to run an array_push? could explain me better?

  • Take a look here: https://www.w3schools.com/php/func_array_push.asp

Browser other questions tagged

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