[Résolu]Connexion BDD MySQL

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
arutha67
Messages : 13
Inscription : 02 Déc 2012 13:23

[Résolu]Connexion BDD MySQL

Message par arutha67 » 28 Déc 2012 15:37

Bonjour,

Je viens de me mettre à Unity, mon problème est le suivant je cherche à récupérer des données (chaines de caractères) qui se trouvent dans une base de données locales MySQL via des requêtes SQL me permettant de récupérer ces chaînes de caractères pour les intégrer dans une info-bulle.
J'ai déjà fait plusieurs essais qui se sont révélés infructueux notamment avec cette méthode :
http://forum.unity3d.com/threads/63364-Unity-with-MySQL

Si vous pouviez m'aider sur ce problème ce serait génial.

Bonnes fêtes à tous ;)
Dernière édition par arutha67 le 08 Avr 2013 14:10, édité 1 fois.

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Connexion BDD MySQL

Message par cayou66 » 28 Déc 2012 15:47

salut,
quelle plateforme?

arutha67
Messages : 13
Inscription : 02 Déc 2012 13:23

Re: Connexion BDD MySQL

Message par arutha67 » 28 Déc 2012 17:49

Salut,

Ca serait d'abord pour PC puis peut être plus tard pour le Web...

Avatar de l’utilisateur
Freelax
Messages : 1595
Inscription : 30 Déc 2009 23:02
Localisation : Niort
Contact :

Re: Connexion BDD MySQL

Message par Freelax » 28 Déc 2012 18:06

Salut,

Pour la base il y a ça http://wiki.unity3d.com/index.php?title ... Highscores

Ensuite pour pousser le truc il faudra revoir le tout mais le principe basique est là ;)
Image

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Connexion BDD MySQL

Message par cayou66 » 28 Déc 2012 18:09

Pour le web il va falloir ruser alors :)
C'est à cause de la sécurité qu'il n'est pas possible de faire des appels SQL sur un webplayer. La méthode pour résoudre ce problème et de passer par du PHP.

Il faut faire un appel PHP classique avec unity, et la page PHP va s'occuper de faire la requête SQL et de balancer le résultat dans le retour de ton appel. C'est pas très pratique, mais ça marche partout (mobile, web, standalone...).

arutha67
Messages : 13
Inscription : 02 Déc 2012 13:23

Re: Connexion BDD MySQL

Message par arutha67 » 28 Déc 2012 19:15

Freelax a écrit :Salut,

Pour la base il y a ça http://wiki.unity3d.com/index.php?title ... Highscores
Merci pour ta réponse ça m'aide beaucoup.
J'ai bien compris le principe. Par contre je ne vois pas où il faut placer le fichier .php pour qu'il puisse être appelé dans je JS. Si tu pouvais m'éclairer ça serait génial !
J'utilise easyphp pour ma BDD qio est en local et j'ai un serveur exact.

Dsl pour les informations imprécises et ces questions basiques c'est ma première BDD...

sotec
Messages : 542
Inscription : 21 Sep 2012 10:11

Re: Connexion BDD MySQL

Message par sotec » 03 Jan 2013 16:24

ton fichier php, tu le place dans le www de ton serveur php (sinon il marchera jamais) du type wamp, easyphp, ensuite il te faut mettre ton webplayer dans le même dossier ( la il n'y aura rien à rajouter comme ça :) ) sinon il faut rajouter un fichier xml crossdomain à l'emplacement de ton webplayer pour accéder à ton fichier php : http://docs.unity3d.com/Documentation/M ... ndbox.html

dans ton code JS sous unity, tu appel ta page php avec la classe WWW , http://docs.unity3d.com/Documentation/S ... e/WWW.html , tu peux récupérer le résultat en le mettant dans un echo dans ta page php, et tu récupère ce résultat grâce à WWW.text . tu obtiens alors ton résultat sous forme de texte dans unity, pense à utiliser split si ta page php ne renvois pas qu'un seul élément. Après à toi de traiter tes résultats, notamment avec des int.Parse(string) :D .
┬─┬ノ(º - ºノ) - (╯°□°)╯︵ ┻━┻

Avatar de l’utilisateur
Glorek
Messages : 134
Inscription : 22 Oct 2010 14:16
Localisation : Paris

Re: Connexion BDD MySQL

Message par Glorek » 03 Jan 2013 16:45

En gros pour faire simple:

#region ----------------ServeurWeb

--------------------------
----- BDD MYSQL -----
--------------------------

Communique avec grace à :

------------------------
----- PHP -----
------------------------

un exemple de page php:

Code : Tout sélectionner

<?PHP
	$host='bdd.com';
		$db_name='name';
		$db_user='user';
		$db_pass='pass';
		try{
			$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
			$bdd = new PDO('mysql:host='.$host.';dbname='.$db_name, $db_user, $db_pass, $pdo_options);
		} catch (PDOException $e){
			die("Erreur ! : ".$e->getMessage() );
		}
	
	
	if( true)//!empty($_POST['ACTION']) && $_POST['ACTION'] == "BASE" )
	{
		
		$reqListServer = "";
		
		$rep = $bdd->query(" SELECT * FROM BDD_a_cherche WHERE statue ='1' ") or die('Erreur SQL : <br />'.$sql);
		
		while($don = $rep->fetch())
		{
			if($don['level'] == 1)
			{
				$reqListServer .= $don['nameServer']."=".$don['pass']."=".$don['IP']."=".$don['port']."=".$don['joueurMax']."=".$don['keyServer']."|";
			}
		}
		
		die($reqListServer);
		
		$rep -> closeCursor();
		
		
	}
?>

Le client va donc recevoir une page html avec un truck bien lourd et groupé.

#endregion ----------------ServeurWeb


#region ----------------ClientUnity
// peut être aussi un serveur bien sur ;)

Formulaire WWW
exemple c'était un bouton qui allais chercher dans ma bdd mysql les serveurs (Csharp - C#):
Le bouton (à placer dans "OnGUI(){}" ):

Code : Tout sélectionner

if( GUI.Button(  new Rect( 20, 50 + espacement * 4, ButtonWidth, ButtonHeight ), "Refresh")  )
		{
			WWWForm form = new WWWForm();
			form.AddField("ACTION", "BASE");
			WWW showServerURL = new WWW("http://tonsite.com/listServer.php", form);
			StartCoroutine(showServer(showServerURL));
		}
La function (Csharp - C#) :

Code : Tout sélectionner

IEnumerator showServer(WWW w)
	{
		yield return w;
		if (w.error == null)
		{
			
			string serverPack = w.text;
			char[] splitchar = { '|' };//permet de passer plusieurs arguments séparer par un caractère ici "|"
			serverList = serverPack.Split( splitchar );
			messageInfo = serverList[0];
			
			refreshON =true;
			
		}
		else
		{
			messageInfo = "ERROR: " + w.error;
			
		}
	}

Ps: StartCoroutine est obligatoire sinon il va essayer de continuer le code après avoir envoyé ton formulaire sans avoir eu la réponse de la bdd.

#endregion ----------------ClientUnity

j'ai essayer de montrer un exemple concret tout ne se recoupe pas mais sa permet de donner un exemple de chaque ;)
à toi de faire des tests pour arriver à la réussite.

Ps2: j'ai supprimer les données perso ;)
Ps3: je suis loin d'être un pro mais sa marche ;)


Cordialement Glorek
Dernière édition par Glorek le 03 Jan 2013 17:02, édité 3 fois.
ImageImageImage

sotec
Messages : 542
Inscription : 21 Sep 2012 10:11

Re: Connexion BDD MySQL

Message par sotec » 03 Jan 2013 16:51

Glorek a écrit : Ps: StartCoroutine est obligatoire sinon il va essayer de continuer le code après avoir envoyé ton formulaire sans avoir eu la réponse de la bdd.
de toute manière, WWW ne peux être utilisé que dans une coroutine il me semble ^^ .
Beau boulot pour l'aide :D , bien plus travaillé que moi :oops:
┬─┬ノ(º - ºノ) - (╯°□°)╯︵ ┻━┻

Avatar de l’utilisateur
cayou66
Codeur
Codeur
Messages : 6450
Inscription : 30 Juin 2011 14:45
Localisation : Montréal

Re: Connexion BDD MySQL

Message par cayou66 » 03 Jan 2013 16:55

Mini info: si ça code en JS, pas besoin du mot clé StartCoroutine.

Répondre

Revenir vers « Scripting »