[PHP / MySQ] Hoe modifiers opslaan

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Momenteel ben ik bezig met een webgame in PHP / SQL en Flash.

Nu heb je een aantal variable bijv:

Unit_Defense
Unit_Movement
Unit_Attack

Building_Defence
Building_Attack
Building_Construct Time

etc.. (zo zijn er +/- 80 Variable)

Nu zijn er een soort upgrades die deze variable dus kunnen aanpassen:

Bijv: Building_defence + 2;
Building_defence + 3;

Maar nu hoort dit dus bij een bepaald gebouw, en deze moet ook weer kunnen vervallen.

Dus ik kan niet zomaar opslaan de defence van het gebouw is +5, aangezien ik dan niet meer weet welke upgrades hij heeft en als de upgrade zou vervallen weet ik niet hoeveel eraf zou moeten.

oftwel nu is mijn vraag hoe zou ik zoiets kunnen opslaan in een database zodat ik met 1 query alle informatie over een bepaald gebouw/unit kan ophalen.

[ Voor 17% gewijzigd door Verwijderd op 14-09-2004 15:05 ]


Acties:
  • 0 Henk 'm!

  • Banpei
  • Registratie: Juli 2001
  • Laatst online: 25-10-2022

Banpei

Hachiroku on this touge?

Ik snap niet helemaal uit jouw verhaal hoe je zelf dacht dat alles met elkaar te maken heeft?

Misschien moet je eerst jezelf gaan afvragen wat voor entiteiten je allemaal hebt, bijvoorbeeld:
1. (Basis) Gebouw: verschillende gebouwtypen met eigen variabelen
2. GebouwX is van het type gebouw
3. GebouwX heeft een upgrade +x
4. GebouwX is beschadigd met -x

Dan kom je er bijvoorbeeld achter dat je in iedergeval 4 tabellen nodig hebt:
tbl_gebouw_basis
tbl_gebouw
tbl_gebouw_upgrade
tbl_gebouw_damage

Om dit in een query allemaal (waarschijnlijk maar 3 tabellen) op te halen kan je ze dus joinen en dan via php de getallen bij elkaar op te tellen.

AE86 gevonden! | So what I thought I'd do was, I'd pretend to be one of those deaf-mutes.


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Dus ik kan niet zomaar opslaan de defence van het gebouw is +5, aangezien ik dan niet meer weet welke upgrades hij heeft en als de upgrade zou vervallen weet ik niet hoeveel eraf zou moeten.
Je zou er een array van kunnen maken en dan altijd de laatste waarde uit de array gebruiken.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Je kan toch gewoon een tabelletje 'upgrades' erbij halen met "building_ID - user_ID - update_ID", waar je bijhoud welke upgrades een user voor welk gebouw heeft?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
frickY schreef op 14 september 2004 @ 15:47:
Je kan toch gewoon een tabelletje 'upgrades' erbij halen met "building_ID - user_ID - update_ID", waar je bijhoud welke upgrades een user voor welk gebouw heeft?
Hehe, dat ik daar zelf niet aan gedacht had: maak 2 tabellen extra:

tabel 1:
upgrade_id
upgrade_name
upgrade_modifier
upgrade_modifier_value

tabel 2:
userupgrade_id
userupgrade_upgradeid
userupgrade_userid
userupgrade_buildingid
userupgrade_unitid

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Verwijderd schreef op 14 september 2004 @ 15:58:
dat ik daar zelf niet aan gedacht had
:X

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
is er ook een mogelijkheid in mysql dat je niet de velden terug krijgt maar bijvoorbeeld de SOM van deze velden:

code:
1
2
3
4
5
6
7
8
SELECT 
    upgrade.upgrade_modifier_value    
FROM 
    `userupgrade`, `upgrade` 
WHERE
    (userupgrade.userupgrade_userid='1')  AND
    (userupgrade.userupgrade_upgradeid=upgrade.upgrade_id) AND
    (upgrade.upgrade_modifier='100')


Hier zou ik dus allemaal waardes terug krijgen van mysql, maar ik wil dus de waardes bij elkaar opgeteld terug krijgen

oftwel:

upgrade_modifier bij resultaat 1 = 10
upgrade_modifier bij resultaat 2 = 5
upgrade_modifier bij resultaat 3 = 6

dan wil ik niet al deze resultaten terugkrijgen maar gewoonweg het getal 21 (10+5+6)

Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
code:
1
SELECT SUM(column) FROM table GROUP BY column;

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
En zo kent MySQL nog veel meer wiskundige functies

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor jullie hulp, ik heb het nu voor mekaar gekregen.
Het enige wat ik niet kan vinden is het zelfde als SUM() alleen dan multiply

[ Voor 41% gewijzigd door Verwijderd op 15-09-2004 08:15 ]


Acties:
  • 0 Henk 'm!

  • ATS
  • Registratie: September 2001
  • Laatst online: 18-09 15:14

ATS

Ik denk niet dat er een multiply bestaat in SQL. Dit zijn de geldige aggregator functies die je kan gebruiken.

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant

Pagina: 1