IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[Débutant] Stocker valeur API dans une base de données SQL.


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2016
    Messages : 14
    Par défaut [Débutant] Stocker valeur API dans une base de données SQL.
    Bonjour à tous, et à toutes.

    Dans le cadre d'un apprentissage et création d'un site web utilisant du PHP. Un ami m'as demandé si je pouvais créer une page qui permettrait de récupérer des informations d'une API de Final Fantasy XIV.
    Toutefois, ces informations doivent être extraites de tous les membres d'une guilde dans le jeu. Ce qui demande énormément de temps d'execution si on recherche directement via l'API.
    C'est pourquoi j'ai eu l'idée de créer une base de données afin de stocker l'ensemble de ses informations. J'ai donc décider de commencer par stocker l'identifiant des joueurs et le nom de ces derniers dans le jeu afin de faire une recherche groupé.

    Voilà mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    <?php
    ini_set('max_execution_time', 300); //300 seconds = 5 minutes
     
    $pdo = new PDO('sqlite:../Data.db'); // Initialisation de la base de données
    $curl = curl_init("https://xivapi.com/freecompany/9237023573225363135?data=FCM"); // Récupération du lien de la guilde
    curl_setopt($curl, CURLOPT_CAINFO, 'certif.cer'); // Certificat de sécurité
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    $data = curl_exec($curl);
    $json = json_decode($data);
    $Welc = $json -> FreeCompanyMembers; // Récupération des membres de la guilde
    $n = count($Welc);
    for ($i = 0; $i <= $n - 1; $i++) {
        $ID[$i] = $Welc[$i]->ID;
        $name[$i] = $Welc[$i]->Name;
    } // Récupération des identifiants et des noms de l'ensemble des membres composant la guilde
    $data = [
        'ID' => $ID,
        'MembreCLNom' => $name
    ]; 
    $sql = "INSERT INTO MembresCL (ID, MembreCLNom) VALUES (:ID, :MembreCLNom)";
    $stmt= $pdo->prepare($sql);
    /*
    $stmt->execute($data);
    */
    var_dump($stmt);
    ?>
    En executant tout ça. Le $stmt m'indique un boolean false. Ce qui signifie (je crois) que mon code n'arrive pas à accéder à la base de données. Or je comprends pas où est le problème.

    Si vous avez besoin davantage d'informations j'y répondrai !

    Merci d'avance à tous pour votre aide et à bientôt !

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Vous faites des tableau de tableau an récupérant vos id et name, du coup, vous passez un tableau d'id au lieu d'un seul et unique id, même chose pour les name.
    Il vaut mieux exécuter la requête dans votre boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $sql = "INSERT INTO MembresCL (ID, MembreCLNom) VALUES (:ID, :MembreCLNom)";
    $stmt= $pdo->prepare($sql);
     
    for ($i = 0; $i <= $n - 1; $i++) { 
     
        $stmt->execute(['ID'=>$Welc[$i]->ID,'MembreCLNom'=>$Welc[$i]->Name]);
     
     
    }

Discussions similaires

  1. Stocker un dictionnaire dans une base de donnée sql lite
    Par kali38 dans le forum Général Python
    Réponses: 19
    Dernier message: 17/02/2016, 13h03
  2. Réponses: 1
    Dernier message: 04/01/2012, 18h08
  3. Réponses: 3
    Dernier message: 29/04/2011, 11h34
  4. Stocker les sessions dans une base de données
    Par mic79 dans le forum Langage
    Réponses: 7
    Dernier message: 06/04/2006, 21h57
  5. Comment stocker des images dans une base de données ?
    Par [Silk] dans le forum Bases de données
    Réponses: 4
    Dernier message: 21/07/2005, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo