Page 1 sur 1

PHP/MySQL et programmation de jeu !

Posté : 01 nov. 2013, 22:53
par manzard
Bonsoir ! Je suis entrain de créer un site de jeu en ligne et j'aimerais vous poser quelques questions car je suis un peu bloqué.

Grâce a une fonction PHP qui demande des données à MySQL on peut facilement créer un inventaire à l'aide d'une table contenant les ID, objets, leur nombre etc ... Mais comment l'info envoyé à MySQL permet à MySQL d'envoyer l'objet dans l'inventaire du joueur ? Par exemple : PHP dit à MySQL que Bob à reçu une épée mais comment faire apparaitre une épée dans l'inventaire de Bob sur le jeu ?
L'épée va être ajouter dans une table via une fonction mais comment cette épée va-t-elle être affichée dans l'inventaire du joueur ?


J'ai une autre petite question pour vous, chers confrères ! :D

J'aimerais savoir si vous saviez comment faire d'un point de vue codage, pour faire glisser un objet de l'inventaire jusqu'au stuff mais en plus que seulement les chapeaux puissent se glisser sur l'emplacement(la case) des chapeaux(sinon l'objet sélectionné retourne à sa place)? Bottes pareil, etc...


stuff inventaire

OO OOOO
OO OOOO
OO OOOO

O= 1 emplacement

Ou alors ! Connaissez-vous un moyen plus simple pour faire passer un objet présent dans l'inventaire jusqu'au stuff (et en rajoutant la même difficulté qu'au dessus: que chapeau soit positionnable uniquement sur emplacement chapeau etc...) ?


Je débute vraiment en programmation donc si vous pouviez expliquer lentement ça serait vraiment génial ! :p

Merci beaucoup à tous ceux qui voudront bien m'aider, bonne soirée à vous ;D

Re: PHP/MySQL et programmation de jeu !

Posté : 02 nov. 2013, 11:42
par damien_55
Slt,

1/ Si j'ai bien compris "Par exemple : PHP dit à MySQL que Bob à reçu une épée mais comment faire apparaitre une épée dans l'inventaire de Bob sur le jeu ?".

Tu peux faire ça en Ajax. En gros, tu update ta base quand il y a une action, et cela te rafraichis ta div automatiquement.

Tu trouveras de la doc sur gg.

2/ deplacer un objet: je pense au drag and drop ajax. A toi de voir si cela correspond à tes attentes.

Re: PHP/MySQL et programmation de jeu !

Posté : 02 nov. 2013, 17:38
par manzard
Salut, merci pour ta réponse ;). En fait, dans la base de donnée on a une table dans laquelle il y a le nom de l'objet et son ID mais pas son image et ses bonus... Comment associer l'image de l'objet avec ses bonus à son nom et à son ID dans la base de donnée ?

De plus, j'ai finalement décidé d'opter pour une méthode plus simple pour le déplacement d'objet : Je vais créer des menu déroulants pour chaque sorte d'items. Le menu déroulant des chapeaux ne contiendra que les chapeaux, les armes, pareils.

Dans ce menu déroulant je veux qu'il n'y ait que les équipements que le joueur possède. Comment faire ?

En gros, imaginons que dans la base de donnée le joueur possède:

Chapeau1
Chapeau2
Chapeau3

Mais qu'il existe aussi chapeau 4, Chapeau5, Chapeau6, Chapeau7 etc...Comment afficher seulement chapeau1, chapeau2, chapeau 3, dans le menu déroulant du joueur ?


Comment afficher l'image de l'objet avec ses bonus si il est sélectionné dans le menu déroulant et comment placer l'image qui va apparaitre ? (car je voudrais que le chapeau sélectionné se place dans la case chapeau, etc...)

Exemple de menu déroulant:

<select name="chapeaux">
<option value="c1" > Chapeaux 1 </option>
<option value="c2" > Chapeaux 2 </option>
<option value="c3" > Chapeaux 3 </option>
</select>



Merci à vous et j'espère que vous pourrez m'aider ! ;D

Re: PHP/MySQL et programmation de jeu !

Posté : 02 nov. 2013, 18:51
par sirakawa
Si j'ai bien compris:
1) Consultation de la BDD pour connaître le nombre d'objets du même type possédés par un jouuer donné
2? Comment constituer le select corresondant?
2 $n = nombre d'objets;
<?PHP 
 $n = 0;

$select_chapeau = "<select name = 'chaps' id='1'>";
if ($n == 0)
{
	$select_chapeau .= "<option>aucun chapeau</option>";
}
else
{
	for ($i = 1; $i <= $n; $i++)
	{
		$select_chapeau .= "<option>chapeau $i</option>";
	}
$select_chapeau .= "</select>";
}
print "$select_chapeau ";
?>
ou ça:
<?PHP 
 $n = 2;
$chapeaux = "<table><caption>chapeaux</caption>";



$select_chapeau = "<select name = 'chaps' id='1'>";
if ($n == 0)
{
	$select_chapeau .= "<option>aucun chapeau</option>";
	
	
}
else
{
	for ($i = 1; $i <= $n; $i++)
	{
		$select_chapeau .= "<option>chapeau $i</option>";
		$chapeaux .= "<tr><td><img src = 'ch.jpg'></td></tr>";
	}
$select_chapeau .= "</select>";
$chapeaux .= "</table>";
}
print "$select_chapeau<br /> $chapeaux";
?>

Re: PHP/MySQL et programmation de jeu !

Posté : 11 nov. 2013, 01:32
par manzard
Ok, merci ^^

J'ai un problème, quand je crée mon formulaire d'inscription, quand je fais un test en rentrant des valeurs(pseudo, mot de passe...) ça m'affiche

"Erreur SQL !INSERT INTO membres VALUES( "", "err", "d95679752134a2d9eb61dbd7b91c4bcc etc...)

Column count doesn't match value count at row 1" ?

Je n'arrive pas à trouver l'erreur ! je bloque dessus depuis maintenant 4h o_o ! Si quelqu'un veut bien m'aider, ça serait cool :p.

Voici le codage: http://pastebin.com/RuJAeNkB

J'ai déjà essayé de mettre mysql_real_escape_string à la place de mysql_escape_string et des tas de trucs mais ça n'a pas marché...

Je ne comprends pas... J'indique 7 valeurs et j'ai 8 colonnes dont l'id qui est en auto-incrémentation, donc pas besoin de le rentrer.

Merci par avance, bonne soirée.

Re: PHP/MySQL et programmation de jeu !

Posté : 11 nov. 2013, 09:04
par xTG
Listes les colonnes dans la requête :
INSERT INTO membres(`pseudo`, `mot_de_passe`, ect) VALUES(...

Re: PHP/MySQL et programmation de jeu !

Posté : 11 nov. 2013, 11:01
par manzard
Merci, j'avais déjà essayé et ça me fait toujours ça...


Erreur SQL !INSERT INTO membres(`pseudo`,`mot_de_passe`,`email`,`nom_perso`,`classe`,`type`,`réponse_secrète`) VALUES ("" ,"René", "d95679752134a2d9eb61dbd7b91c4bcc\", \"[email protected]\", \"lalalalala\", \"zombie\", \"mâle\", \"llallaa")
Column count doesn't match value count at row 1

Je pense que je dois mal gérer l'id dans l'insertion...Que faire, svp ? ^^


(Edit: ce n'est pas un problème d'orthographe, chaque colonne dans la BDD s'appelle pareil que ce dans quoi je veux insérer.)


Merci.

Re: PHP/MySQL et programmation de jeu !

Posté : 11 nov. 2013, 12:41
par xTG
Pour cette requête l'erreur est normale.
Tu spécifies 7 champs à remplir et tu fournis 8 valeurs. :)

Re: PHP/MySQL et programmation de jeu !

Posté : 11 nov. 2013, 13:08
par manzard
J'ai réessayer en enlevant 'id' mais ça me fait toujours pareil...!

Erreur SQL !INSERT INTO membres (`pseudo`,`mot_de_passe`,`email`,`nom_perso`,`classe`,`type`,`réponse_secrète`) VALUES ("rttgg", "83878c91171338902e0fe0fb97a8c47a\", \"[email protected]\", \"efzfff\", \"blabla\", \"mâle\", \"gghhjj")
Column count doesn't match value count at row 1


Ca ne viendrait pas du count(*) par hasard ? ou alors ça vient de l'id et il faut mettre quelque chose de particulier et ne pas rien mettre...Ou alors ça peut venir des types que j'ai mis pour les champs.

Champs/types dans ma BDD:

id/int11 ==>auto_increment
pseudo/varchar 20
mot_de_passe/varchar32
email/varchar45
nom_perso/varchar25
classe/varchar20
type/varchar20
réponse_secrète/varchar20


Les valeurs à insérer dans la base ne dépasse pourtant pas les valeurs limites...Je ne comprends pas d'où vient l'erreur...

Re: PHP/MySQL et programmation de jeu !

Posté : 11 nov. 2013, 15:42
par xTG
Et avec cela ?

Code : Tout sélectionner

INSERT INTO membres (`id`, `pseudo`,`mot_de_passe`,`email`,`nom_perso`,`classe`,`type`,`réponse_secrète`) VALUES (NULL, "rttgg", "83878c91171338902e0fe0fb97a8c47a\", \"[email protected]\", \"efzfff\", \"blabla\", \"mâle\", \"gghhjj")

Re: PHP/MySQL et programmation de jeu !

Posté : 11 nov. 2013, 20:25
par sirakawa
DEUX ASTUCES:
1 insert set champ = valeur
2 présenter les champs sur deqs lignes distinctes et les valeurs de même.

Re: PHP/MySQL et programmation de jeu !

Posté : 12 nov. 2013, 22:29
par manzard
Bonsoir, merci à vous mais j'ai finalement décidé de changer de structure^^.

Il y a une page:
login.php pour taper les données(pseudo, mdp...)==>une page loginok.php pour les vérifier
inscription.php pour taper les données(pseudo, mdp...)==>une page inscriptionok.php pour les vérifier
Et lorsque le membre sera connecté il sera basculé vers index.php.
Une page déconnexion.php à placer en haut de chaque page des membres connectés.


Pour la vérification des données liées à l'inscription: inscriptionok.php
http://pastebin.com/x8dsJjnv

ce code marche, le mot de passe est bien insérer dans la base de donnée mais j'aimerais l'insérer haché, je n'arrive pas à le faire malgré plusieurs tentatives...Pourriez-vous m'aider, svp ?^^



Pour la vérification de données liées à la connexion: loginok.php:

http://pastebin.com/6NfpNnUY


Sauf que quand j'appuie sur valider, rien ne se passe, alors que j'entre un pseudo et un mot de passe qui sont dans la base de donnée. Et quand j'appuie sur valider en laissant les champs vides, ça charge et ça me ramène sur loginok.php au lieu de m'envoyer sur index.php.

Je devrais bien placer ce code ci: http://pastebin.com/sQVtRLvG en haut de chaque page réservées aux membres connecté ? C'est bien ça ?

Avec "index.php", comme elle est codée ici http://pastebin.com/mKBCm0yC, je pourrais m'en servir comme page de menu des membres connectés, est-ce bien ça ?



Lorsque le membre sera connecté il sera basculé vers index.php. ==>est-ce bien ce qui est codé ?

Merci, bonne soirée.

Re: PHP/MySQL et programmation de jeu !

Posté : 13 nov. 2013, 08:29
par xTG
Tu as déjà calculé un hash de ton mot de passe, c'est juste que tu n'utilises pas la variable mais celle qui vient du formulaire dans ta requête. ;)
Sinon pour plus de sécurité je te conseillerai plutôt de te tourner vers cet algorithme :
$mot_de_passe = hash('sha256', $mot_de_passe);
Idem pour ta requête de connexion...

Tu as deux session_start() sur ta page de connexion.

Pour le test que le membre est connecté pourquoi ne pas faire :
if( !empty($_SESSION['id']) )
Un membre sans id n'a pas tellement d'intérêt. ;)

Re: PHP/MySQL et programmation de jeu !

Posté : 17 nov. 2013, 21:22
par manzard
Merci, j'ai réussi :p, il ne me reste plus qu'à bloquer les pages interdits aux non connectés, etc...

Là je suis entrain de m'attaquer aux jointures entre différentes tables mais j'ai quelques soucis.

J'ai une table membres avec les champs suivants:

id
nom_perso
pseudo
mot_de_passe
email
race
type(mâle,femelle)
réponse_secrète
date_inscription


et une table personnages avec les champs suivants:

id
nom_perso
membres_id
race
type(mâle,femelle)
date_inscription
etc...

En s'inscrivant, le joueur rentrera le nom de son perso, son pseudo, la race, le type(mâle,femelle) etc... Les champs communs aux 2 tables sont:

nom_perso
membres_id
race
type(mâle,femelle)

J'aimerais que ces informations soit balancées dans la table personnage lors de l'inscription et que ce personnage créé soit associée à l'id du compte dans la table membre

J'ai essayé cette jointure

SELECT membres.id, personnages.membres_id
FROM membres
LEFT JOIN personnages
ON membres.id=personnages.membres_id

ORDER BY membres.id, personnages.membres_id;


Est-ce que c'est la bonne méthode ?


J'ai choisi de séparer personnages et joueurs pour qu'un joueur puisse créer plusieurs personnages mais j'ai quelques problèmes au niveau des jointures...

J'obtiens une colonne id et une colonne membres id, mais dès que je rajoute un ON etc... Ca me marque "erreur de syntaxe".

Au fait, j'ouvre une fenêtre de requête pour taper la requête pour faire des jointures mais je ne comprends pas pourquoi le champ id et membres_id s'enlève et la table réapparait comme elle était au départ à chaque réactualisation de la page...Quelqu'un pourrait m'expliquer, s'il vous plaît ?

Je pensais qu'une jointure se conservait tout le temps...J'ai l'impression que c'est temporaire ! Help ^^


Merci à vous et bonne soirée ;).