Récupérer une bdd mysql sous forme de tableau

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
SoPic
Messages : 32
Inscription : 02 Oct 2019 18:12

Récupérer une bdd mysql sous forme de tableau

Message par SoPic » 02 Oct 2019 18:54

Salut la commu !

Ca y est je me lance dans le forum, je crois que j'en ai bien besoin :gene:
J'ai une base de données sous mysql et j'utilise le php pour faire mes requêtes. Je me sert ensuite du UnityWebRequest pour envoyer et récupérer des infos. J'aimerais tout simplement récupérer des colonnes de ma base de données et afficher tout ça dans un tableau cliquable sous Unity. Déjà rien que là je galère complet mais bon, je bidouille on va dire.
Mon gros soucis là c'est que je n'arrive pas à récup mes données sous forme de tableau, d'autant plus que les infos que je récupère sont en int et en string... Tous les tutos que j'ai trouvé se contentent de faire echo, ce qui me renvoie les infos sous forme de string ce qui ne plait pas à Unity quand je tente de stocker ça dans un tableau.... je pense que j'ai un gros problème de méthode...

D'où ma question : comment à partir de mon fichier php je peux envoyer des données vers Unity autrement que juste un echo ? Merci ::d

Ps : je suis débutant... ai-je vraiment besoin de le préciser... :ange:

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Récupérer une bdd mysql sous forme de tableau

Message par Alesk » 02 Oct 2019 20:23

Yo !

Ce n'est pas le "echo" de php qui pose problème, c'est ton code de réception/traitement du côté d'Unity.
Tu peux essayer de faire un echo de tes données depuis php en les fomattant en json :

Code : Tout sélectionner

echo json_encode($data);
Puis côté unity, tu récupères ça et tu le traites proprement.
Fais un tour par là pour avoir un exemple de comment faire :

https://unity3d.com/fr/learn/tutorials/ ... -data-json

c'est la 4eme vidéo d'un mini cours, donc il vaut mieux commencer par la première pour avoir toutes les explications (la liste est affichée à droite sous le titre "Live Session: Quiz Game 2")

SoPic
Messages : 32
Inscription : 02 Oct 2019 18:12

Re: Récupérer une bdd mysql sous forme de tableau

Message par SoPic » 02 Oct 2019 20:40

Je vais tester ça je te remercie :super:
(je pensais que json faisait appel à un autre language... :gene2: )

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Récupérer une bdd mysql sous forme de tableau

Message par Alesk » 02 Oct 2019 22:20

Le json, c'est juste un façon de mettre ne forme les données sous la forme d'une chaine de caractères.
ça peut s'interpréter avec n'importe quel langage, tout comme les autres formats de données... il suffit juste de connaître l'algorithme d'interprétation.

Là je te donne un exemple avec json, car c'est "facile" à un intégrer. Mais tu aurais aussi pu passer par des sockets pour transférer tes données sous une autre forme et avec éventuellement plus de sécurité, mais c'est plus compliqué à faire ;)

SoPic
Messages : 32
Inscription : 02 Oct 2019 18:12

Re: Récupérer une bdd mysql sous forme de tableau

Message par SoPic » 03 Oct 2019 17:15

Bon j'ai passé ma journée dessus... je pense avoir compris le fonctionnement de Json mais impossible à mettre en oeuvre :(

Mon export Json ressemble à ça :
[{"Nom":"SKC_FreeTP","Langue":"fr","Rang":"31","NbrMembre":"29"},{"Nom":"Mugiwara","Langue":"fr","Rang":"32","NbrMembre":"30"},{"Nom":"North Face","Langue":"fr","Rang":"32","NbrMembre":"30"}]
Jusqu'ici tout va bien.
Ensuite j'ai créé une class pour avoir un objet avec les 4 variables et là, impossible de créer un objet à partir de cette class en récupérant les infos Json...
Help... :taistoi:

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
using System;
using System.IO;


public class Web : MonoBehaviour
{
    public string nameConf = "Mugiwara";
    public string Mdp = "12345";
    public string Valide = "0";

    public Confederations ConfUnique;
    string tableauListeConf;

    public GameObject BoutonNew;
    public Transform BoutonTransform;
    public Text BoutonText;
    public GameObject BoutonParent;

    public int RequeteInt ;
    public string RequeteString;

    public Text ListeConf;

    void Start()
    {
        StartCoroutine(GetListeNom());
        //StartCoroutine(RegisterConf(nameConf, Mdp, Valide));
        //StartCoroutine(GetNbrConf());


    }


    IEnumerator GetListeNom()
    {
        UnityWebRequest www = UnityWebRequest.Get("http://localhost/CTDTCommunityApp/ListeConfNom.php");
        yield return www.SendWebRequest();

        if (www.isNetworkError || www.isHttpError)
        {
            Debug.Log(www.error);
        }
        else
        {
            // Show results as text
            tableauListeConf = www.downloadHandler.text;
            Confederations ConfUnique = JsonUtility.FromJson<Confederations>(tableauListeConf);
            Debug.Log(ConfUnique.Nom);


            // Or retrieve results as binary data
            byte[] results = www.downloadHandler.data;
        }
    }

[System.Serializable]
public class Confederations
{
    public string Nom;
    public string Langue;
    public int Rang;
    public int NbrMembre;
}


Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Récupérer une bdd mysql sous forme de tableau

Message par Alesk » 03 Oct 2019 17:26

C'est parce que la classe JSONUtility ne peut pas recréer un array directement.

Heureusement pour toi, la solution se trouve ici :

https://stackoverflow.com/questions/362 ... y-in-unity

Il y a tout un tas d'explications détaillées dans la réponse qui a été validée, et comment gérer les tableaux, vers la fin du post ;)

SoPic
Messages : 32
Inscription : 02 Oct 2019 18:12

Re: Récupérer une bdd mysql sous forme de tableau

Message par SoPic » 03 Oct 2019 18:00

... Ca marche 8|
Merci beaucoup pour toutes tes réponses et tes liens :amen:
Je vais pouvoir avancer maintenant !!!

Bon, je te cache pas de copier coller du code sans tout comprend ça me laisse un goût amer dans la bouche, mais bon, faut que j'avance :hehe:
On va dire que je comprendrai plus tard à force de l'utiliser !

Merci encore !

Répondre

Revenir vers « Scripting »