Organisation de l'économie pour un jeu

Eléphant du PHP | 206 Messages

30 oct. 2007, 18:11

Bonjour à tous,
Désolé pour le titre pas très explicite, mais je ne savais pas comment résumer brièvement ma demande ^^

Donc je suis actuellement dans la création d'un jeu de management d'une équipe de basket, et je me penche sur comment gérer la caisse (économie).

Voila ce que j'aimerais gérer: différents revenus (billeteries, sponsors) et dépenses (salaires, entretien..) que j'aurais besoin d'afficher séparément (dans un tableau).

Cela nous fait donc un ensemble qu'une fois additionné nous donne l'argent total en notre possession.

Mais j'aimerais pouvoir tirer le bilan sur la semaine derniere et la semaine en cours.

Donc il me faudrait logiquement 2 ensembles.

Le plus simple serait il donc de créer une table économie avec un champ id_equipe mais surtout un champ par type de revenus ou dépenses et doubler chaque champ afin d'en avoir un pour la semaine en cours et l'autre pour la précédente ?

VOici ce qu'il pourrait y avoir sur ma page économie
Cette semaine
Recettes --------------------- Dépenses
Billetterie 0 ---------------- Entretien 13 000
Sponsors 77 917 ------- Salaires des joueurs 9 255
Financiers 0 ------------- Salaires du personnel 25500
Temporaires 147 730 ------- Temporaires 646 750



Total des recettes 225 647 ----------- Total des dépenses 704 505
Résultat prévisionnel -478 858


La semaine dernière

MEME CHOSE ICI
Merci de m'éclairer, je sais que ma question n'est pas simple mais si vous pouviez conmmencer peut etre par me donner des conseils d'ensemble ? Si vous avez des questions n'hésitez pas ;)

ViPHP
ViPHP | 2144 Messages

30 oct. 2007, 19:19

Je proposerai trois tables:

Une table équipe: nom, idEquipe,...
Une table TypeEconomie: idTypeEconomie
Une table Economie : idEquipe, idTypeEconomie, montant (positif si une recette, négatif si une dépense, semaine (sous forme d'une numéro de semaine ou de la date du premier jour de la semaine, par exemple)

Eléphant du PHP | 206 Messages

31 oct. 2007, 00:08

Qu'entend tu par TypeEconomie?

Merci de ta réponse :)

Eléphant du PHP | 206 Messages

01 nov. 2007, 12:57

Donc si j'ai bien compris, la table TypeEconomie reghrouperait les critères de dépenses et de revenus (billeterie, salaire,sponsors...)

Tandis que la table economie aurait un champ montant qui est le montant d'un des critères ci dessus (en fonction de id=dTypeEconomie ) et un champ semaine.

Ce système la va nous faire une dizaine d'entrée par équipe et par semaine..

A plus grande échelle, ce n'est pas ingérable ?

Eléphant du PHP | 206 Messages

01 nov. 2007, 18:54

Désolé de reposter, mais j'ai essayé et voici mes 2 tables

Code : Tout sélectionner

-- -- Structure de la table `typeeconomie` -- CREATE TABLE `typeeconomie` ( `id_type_economie` int(11) NOT NULL, `nom_type_economie` varchar(255) collate latin1_german2_ci NOT NULL, PRIMARY KEY (`id_type_economie`), KEY `id_type_economie` (`id_type_economie`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci; -- -- Contenu de la table `typeeconomie` -- INSERT INTO `typeeconomie` VALUES (1, 'entretien'); INSERT INTO `typeeconomie` VALUES (2, 'salaire_joueurs'); INSERT INTO `typeeconomie` VALUES (3, 'salaire_employes'); INSERT INTO `typeeconomie` VALUES (4, 'transfert'); INSERT INTO `typeeconomie` VALUES (5, 'publicite'); INSERT INTO `typeeconomie` VALUES (6, 'billeterie'); INSERT INTO `typeeconomie` VALUES (7, 'sponsors'); INSERT INTO `typeeconomie` VALUES (8, 'club_supporter'); INSERT INTO `typeeconomie` VALUES (9, 'subvention'); INSERT INTO `typeeconomie` VALUES (10, 'transfert');

Code : Tout sélectionner

-- -- Structure de la table `economie` -- CREATE TABLE `economie` ( `id_equipe` int(11) NOT NULL, `id_type_economie` int(11) NOT NULL, `montant` int(11) NOT NULL, `semaine` int(11) NOT NULL, KEY `id_equipe` (`id_equipe`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci; -- -- Contenu de la table `economie` --
Etait ce à cela que tu pensais ?

Car ça me parait bizarre.

Eléphant du PHP | 206 Messages

03 nov. 2007, 19:54

Je me permet de upper :oops:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 nov. 2007, 20:22

Etait ce à cela que tu pensais ?
Oui il pensait à peu près à ça (avec éventuellement un peu d'optimisation des types de champs).

Un id auto-incrémenté en clé primaire dans chaque table
Réduire les types INT en TINYINT ou MEDIUMINT
...

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 206 Messages

03 nov. 2007, 20:30

Mais dans ce cas la
Premièrement cela fait donc 10 champ par équipe et par semaine. Cela ne posera pas de problème par la suite ?

De plus je ne vois comment stockés l'argent total qu'a la personne en sa possession?
Car certes on va prendre tous les montants de la table economie ou la semaine = semaine actuelle et id_equipe = notre equipe.

Mais il faut rajouter à cela l'argent qu'il avait de la semaine dernière .. etc etc

Merci d'avoir répondu :)

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

03 nov. 2007, 21:03

Mais dans ce cas la
Premièrement cela fait donc 10 champ par équipe et par semaine. Cela ne posera pas de problème par la suite ?
Seul moyen d'en avoir moins est de ne stocker qu'un seul montant :lol:
Non aucun souci... Si ce sont des données dont tu as besoin il est normal de les stocker de manière à pouvoir les réutiliser de manière simple.
De plus je ne vois comment stockés l'argent total qu'a la personne en sa possession?

On ne stocke pas de champ calculé en base... tu disposes de toutes les données pour les deux semaines tu peux donc effectuer les totaux pour les 2 semaines.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 206 Messages

04 nov. 2007, 00:18

oui mais je n'ai le total (de ce qu'il a en poche) aucune fois.
je connais juste chaque semaine ce qu'il gagne et perd de sa cagnotte.

Ce qui veut dire que si le joueur commence a 150 000€ a la semaine 1 il 150 000€ + ou - tous les montants

et donc imaginons a la semaine 16 il a 150 000€ +ou- tous les montants de toutes semaines précédentes...

Ne devrais je pas plutot chaque semaine mettre dans un champ l'argent total en caisse?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

04 nov. 2007, 01:06

Tu peux ajouter un champ à la table "typeeconomie" de type ENUM ('DEPENSE','RECETTE') pour déterminer si le type d'économie est un gain ou dépense ainsi tu pourras déterminer son argent total disponsible.

Un de tes types d'économies doit être l'argent disponible, ici 150 000€ de base, qui sera un champ calculé au bout d'une semaine.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 206 Messages

05 nov. 2007, 21:11

C'est ce que j'ai fait :)

Sinon un problème subsiste voici ma requete (qui ne marche pas) car je coince j'aimerais que une la dernière clause du WHERE soit semaine = la plus grande de ma table (c'est un INT)
				mysql_query('UPDATE economie SET montant = montant +'.$montant.',  WHERE id_equipe='.$_SESSION['id_equipe'].' && id_type_economie = 6 && semaine = (SELECT max(semaine) FROM economie)') or die (mysql_error()); 
Merci d'avance

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 nov. 2007, 21:58

Un INT pour y enregistrer 2 possibilités de valeurs et tu as peur que ce qui est proposé soit trop "lourd" :roll:

1. Une virgule de trop avant WHERE
2. AND et non &&

Pour la semaine ça va dépendre de la manière que tu enregistres la différence entre 2 semaines.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 206 Messages

05 nov. 2007, 22:17

Avant tout merci de tes réponses
Un INT pour y enregistrer 2 possibilités de valeurs et tu as peur que ce qui est proposé soit trop "lourd" :roll:
Pas compris :) (sinon ça sera en fait un petit INT mdr )
1. Une virgule de trop avant WHERE
2. AND et non &&
&& et AND ne sont ils pas la même chose ?
Pour la semaine ça va dépendre de la manière que tu enregistres la différence entre 2 semaines.
semaine 1 semaine 2 etc :) :D

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 nov. 2007, 22:31

Pas compris :) (sinon ça sera en fait un petit INT mdr )
ou un éléphant ? casserolle ? :)
Enfaite je pensais plus à un type ENUM ('DEPENSE','RECETTE') (comme déjà dit)
&& et AND ne sont ils pas la même chose ?
On va dire que les deux fonctionnent mais par convention je préfère AND
semaine 1 semaine 2 etc :) :D
En attente...

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute