JeuWeb - Crée ton jeu par navigateur
[Résolu] Créer un magasin ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Créer un magasin ? (/showthread.php?tid=3034)

Pages : 1 2


[Résolu] Créer un magasin ? - Randal - 10-09-2008

Bonjour à vous.

Après des recherches sur internet et sur ce forum aussi, je n'ai pas
découvert de tutoriel qui aide à faire un système de magasin en php.

J'aimerais quelque chose de tout simple que je modifierai à ma sauce
par la suite. Donc une page html qui affiche tout les objets et si on
achète un objet sa enlève x pièces. Résultat, on perd x pièce mais
on gagne 1 objet. Et bien... Comment faire un système comme ça ?

J'espère que vous pourrez me répondre précisement, j'ai hâte ! :love:


RE: Créer un magasin ? - Sephi-Chan - 10-09-2008

Bonjour,

Je vais te présenter une solution. Voici la situation de départ.

Tu disposes d'une table Personnages (avec des champs id, nom et monnaie), d'une table Objets (avec des champs id et nom) et d'une table Vendeurs (avec des champs id et nom).

Tu disposes également de deux table de relation Objets_Personnages (avec des champs objet_id et personnage_id) et Objets_Vendeurs (avec des champs objet_id, vendeur_id, quantite et prix).


Pour afficher la marchandise d'un vendeur (dont tu connais l'ID, symbolisé par %d1 dans la requête), une simple requête suffit :

Code :
SELECT    O.id,
        O.nom,
        OV.quantite,
        OV.prix,
        V.nom
FROM    Vendeurs V
LEFT
JOIN    Objets_Vendeurs OV
ON    OV.vendeur_id = V.id
AND OV.quantite > 0
LEFT
JOIN    Objets O
ON    O.id = OV.objet_id
WHERE V.id = %d1;


Quand le joueur se rend sur cette page, il peut désigner un objet à acheter (l'objet est identifié par son ID). Note que ce système permet aux marchands de proposer les mêmes objets à des prix différents.

Il faut maintenant savoir si le personnage est assez riche (l'argent du joueur est représenté par %d1 dans la requête) pour s'offrir l'objet qu'il a demandé (dont l'ID est représenté par %d2 dans la requête) au prix demandé par le vendeur (dont l'ID est représenté par %d3 dans la requête).

Code :
SELECT    COUNT(*) AS objet_correspondant
FROM    Objets O
JOIN    Objets_Vendeurs OV
ON    OV.objet_id = O.id
AND OV.vendeur_id = %d3
AND OV.prix <= %d1
WHERE O.id = %d2

Si le champ objet_correspondant vaut 0, c'est que le joueur n'a pas assez d'argent (ou que le vendeur ou l'objet indiqué n'existe pas). S'il vaut 1, c'est que le joueur à assez d'argent.


Ensuite, le reste est très simple, il suffit de mettre à jour la somme d'argent du personnage, d'insérer une entrée dans la table Objets_Personnages et de mettre à jour une entrée dans Objets_Vendeurs.

Pour mettre à jour la somme d'argent du joueur (dont l'ID est représenté par %d1 dans la requête), on déduit de sa somme d'argent le prix (représenté par %d2 dans la requête) de l'objet.
Code :
UPDATE    Personnages
SET    monnaie = monnaie - %d2
WHERE id = %d1;

Pour donner l'objet (dont l'ID est représenté par %d1 dans la requête) au personnage (dont l'ID est représenté par %d2 dans la requête), voici la marche à suivre :
Code :
INSERT
INTO    Objets_Personnage (objet_id, personnage_id)
VALUES (%d1, %d2);

Pour mettre à jour le stock de l'objet (dont l'ID est représenté par %d1 dans la requête) du vendeur (dont l'ID est représenté par %d2 dans la requête) :
Code :
UPDATE    Objets_Vendeurs
SET    quantite = (quantite - 1)
WHERE    objet_id = %d1
AND    vendeur_id = %d2;

Voilà, j'espère que ça pourra t'aider. Si tu as des questions, n'hésite pas. Smile

Je précise qu'il y a moyen de simplifier le code, surtout si tu ne gères pas les stocks de tes marchands.


Sephi-Chan


RE: Créer un magasin ? - Randal - 10-09-2008

Oulala, je comprend strictement rien... Y a beaucoup de tables, je ne sais pas comment les
configurer et je ne comprend rien à ces bouts de code, je connais même pas le langage...

Je suis bien un débutant... Merci pour le temps que tu m'a consacré mais sa me fait un peu de
peine du fait que cela ne m'est d'aucune utilité sans connaissances si tu vois c'que je veux dire.


RE: Créer un magasin ? - Melimelo - 10-09-2008

le code c'est du sql, c'est ce qui te permet d'intéragir avec la Bdd (Base de donné), celle-ci est le lieu où sont stocké les informations concernant tes joueurs.

Cordialement Melimelo


RE: Créer un magasin ? - Randal - 10-09-2008

Ouais je sais bien ça mais je ne sais pas comment les mettre. Enfin si mais faut les configurer.
Le type, l'interclassement et tout le reste...


RE: Créer un magasin ? - Sephi-Chan - 10-09-2008

Effectivement, je suis dégoûté.

Il faut que tu apprennes PHP et SQL. Pour cela, je te conseille le Site du Zéro.


Sephi-Chan


RE: Créer un magasin ? - Randal - 10-09-2008

Bah oui on en revient toujours là... Comment on fait ça ? Va là-bas... Je préfere bidouiller qu'apprendre, mais
tout ce qui touche à la base de donnée, je n'y comprend pas grand chose. Après c'est mon problème hein.

Bon bah merci quand même...


RE: Créer un magasin ? - Melimelo - 10-09-2008

Plustot bidouiller qu'apprendre ... c'est vraiment la pire des choses que tu puisses faire à mon sens, car en bidouillant tu prends bcp de mauvais habitudes et tu est généralement incapable de revenir sur ton code.

De plus le jour ou tu décide d'apprendre et que t'a bidouillé toute ta vie ca va être gaie de changer les habitudes.

Cordialement Melimelo


RE: Créer un magasin ? - Randal - 10-09-2008

Bah je trouve pas, quand je bidouille, j'essaye de comprendre chaque fonction, à quoi elle sert et ce qu'elle a comme effet. Et je m'en suis toujours sorti. Enfin presque, la preuve ici vu que je n'ai rien sur quoi m'appuyer sans connaissances en sql... ='(


RE: Créer un magasin ? - Melimelo - 10-09-2008

Et tu crois que l'apprentissage c'est pas apprendre à quoi serve chaque fonction et qu'elles sont leurs utilité quand les utilise-t-on ?

Cordialement Melimelo