Partage
  • Partager sur Facebook
  • Partager sur Twitter

Informations d'une API dans une bdd

    18 novembre 2017 à 19:41:05

    Bonjour,

    Il y a quelques temps, j'avais créé un site qui faisait un classement de joueurs sur un jeu vidéo.

    C'était un classement. J'avais (avec l'aide de ce site) fait cela en mettant les tags (les id) des joueurs directement sur le code (On a besoin de cet id pour aller chercher les informations dans l'api). Sachant que je devais faire des changements presque chaque jours sur le code, le faire comme ca n'était vraiment pas terrible mais je n'avais pas les connaissances pour aller plus loin.

    Depuis, j'ai appris a utiliser les bases des bases de données et je voudrais refaire mon site qui est très lent et mal fait.

    Alors, je pourrais mettre juste les tags (id) dans cette bdd et aller chercher les informations dans l'api sur le .php mais j'aimerais pouvoir les classer selon plusieurs critères et si je pouvais avoir les infos de l'api en temps réel dans ma bdd, je pourrais faire ceci facilement.

    Alors voila, est-il possible de transférer en permanence des infos d'une api externe a une base de donnée sans passer par le php ? Et de plus, même de façon interne dans la bdd, peut on effectuer des actions sans qu'on ait besoin de charger une page du site ? 

    Ca doit être très anodin mais j'apprend a coder totalement par moi même, je n'ai jamais suivis de cours (en dehors de quelques uns sur openclassroom) du coup je sais pas du tout ce que je dois chercher pour tomber sur les bonnes réponses.

    Merci beaucoup

    API: https://developer.clashofclans.com/

    Voici le code d'une page que j'utilisais pour vous montrer comment l'api marche
    <!DOCTYPE html>
    <html>
    <head>
    	<link rel="icon" type="image/png" href="hdv3.png" />
        <meta charset="utf-8" />
    	<!--[if lt IE 9]>
    	<script src="http://github.com/aFarkas/html5shiv/blob/master/dist/html5shiv.js"></script>
    	<![endif]-->
    	<link rel="stylesheet" href="lowdonators.css" />
        <title>Low Donators - TH 3 but huge level</title>
    	
    </head>
    
    <body>
    <header>
    	<!-- <h1 class="title">Low Donators</h1> -->
    	<a href="index.php"><img src="logo.png" alt="Low Donators Website" class="title" /></a> 
    </header>
    
    <!--TH2 -->
    
    <div class='carre'>
    <img src="hdv3.png" id="hdv" />
    <h3>TH3 LEVELS LEADERBOARD :</h3>
    	<p id="attention">The levels are updated automaticly but not the order so message me at @arcree_coc on Instagram if something is false !</p>
    
    	
    <?php
      /**
       * Identifiants des joueurs
       */
      $playersId = [
        "280Q8YRYC", //Joueur chinois
    	"2CYQCYRC", //ivHan
    	"2GYQYR9JP", //O X Y G E N
    	"92YGGURLV", //doador
    	"8UULJ8GU8", //2000.
    	"290LJ9PRL", //Exodus #1
    	"2L9089YQY", //DONATE GOD
    	'9G8GUUC02', //Coinms67
    	'8RYUJRQYG', //zachd2465WR
      ];
     
      /**
       * Récupération des données
       */
      $token  = "token du site pour l'API";
      $baseUrl = "https://api.clashofclans.com/v1/players/";
     
      $playersData = [];
      foreach( $playersId as $playerId ){
        $ch = curl_init($baseUrl.urlencode("#".$playerId));
     
        curl_setopt($ch, CURLOPT_HTTPHEADER, ["Accept: application/json", "Authorization: Bearer ".$token]);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     
        $response = curl_exec($ch);
        if( curl_getinfo($ch, CURLINFO_HTTP_CODE) == "200" ){
          $data = json_decode($response, true);
     
          $playersData[] = [
            "tag"           => substr($data["tag"], 1),
            "townHallLevel" => $data['townHallLevel'],
            "expLevel"      => $data["expLevel"],
            "name"          => $data["name"],
          ];
        }
     
        curl_close($ch);
      }
     
    function classement($a, $b)
    {
        if ($a['expLevel'] == $b['expLevel']) {
            return 0;
        }
        return ($a['expLevel'] < $b['expLevel']) ? 1 : -1;
    }
    
    usort($playersData, "classement");
     
      /**
       * Affichage des données
       */
      $i = 1;
      foreach( $playersData as $player ){
        // Choix de la couleur du texte
        $color = "";
        if($player['townHallLevel'] > 3){
          $color = "style='color:red;'";
        }
        ?>
     
        <!-- Affichage des données -->
        <a href='player.php?tag=<?= $player['tag'] ?>' target="_blank" id="players" >
          <p <?= $color ?>>
            <?= $i ?> - [TH<?= $player["townHallLevel"] ?>] <?= $player["name"] ?> (<?= $player["tag"] ?>) : <?= $player["expLevel"] ?>
          </p>
        </a>
     
        <?php
        $i++;
      }
    ?>
    </div>
    
    </body>
    </html>

    -
    Edité par paul64lafourcade 18 novembre 2017 à 19:54:05

    • Partager sur Facebook
    • Partager sur Twitter

    Informations d'une API dans une bdd

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown