Nieuwe kolom, maar hoe?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis

Dennis

23/06/2008 22:04:00
Quote Anchor link
Goedendag allemaal,
Sinds kort ben ik bezig met het maken van een kleine online game. Nu wou ik zonet een scriptje maken zodat je als admin zijnde zelf wapens kan toevoegen.
Ik heb een tabel in me database gezet met alle wapens erin.(table wapens)
Nu heb ik ook een table waarin alle gebruikers staan(table user).
Ik wil nu dat er voor elke gebruiker een rij wordt aangemaakt(als ze zich registreren, en dat er dan per gebruiker staat aangegeven hoeveel van elk wapen hij bezit.(denk aan de oude criminals:P)(Dit gaat overigens nog gewoon goed hoor...:P)

Nu wil ik dus een script maken dat ik een nieuw wapen kan toevoegen, dit is makkelijk te plaatsen in de table wapens met INSERT INTO, maar ik weet alleen niet hoe ik nu voor iedere al geregistreerde gebruiker dat extra veld kan toevoegen en voor alle komende gebruikers, er moet dus in de table user een nieuwe kolom bijkomen.
Als het zou kunnen wil ik dan ook gelijk bij iedere al geregistreerde gebruiker dat nieuwe veld de waarde 0 meegeven.

Heeft iemand een idee hoe ik die kolom in de table user kan toevoegen + die waarde 0?

Ik hoop op een reactie, want ik ben echt radeloos :(

Groetjes,
Dennuzzz
Gewijzigd op 01/01/1970 01:00:00 door Dennis
 
PHP hulp

PHP hulp

29/03/2024 06:01:15
 
Frank -

Frank -

23/06/2008 22:12:00
Quote Anchor link
Waarom heb je bij een nieuw wapen een nieuwe kolom nodig? Wanneer dat het geval is, dan zit er iets goed fout in jouw datamodel. Of maak je ook een nieuwe kolom aan wanneer er een nieuwe user moet worden opgeslagen? Lijkt me niet.
 
Riemer

Riemer

23/06/2008 22:12:00
Quote Anchor link
Dus als ik het goed begrijp kan een speler meerdere geweren hebben? en aangezien meerdere spelers één type geweer kan hebben is er dan dus sprake van een meer op meer relatie.

Het is dus beter om hiervoor een aparte tabel te pakken die hier een geweer representeerd. Deze verwijst met foreign keys naar een speler, en een geweer type. Verder kun je dingen zoals staat nog bij doen, wees creatief.

Misschien is het ook handig om wat te lezen over normaliseren van databases, er is geloof ik op het phphulp website een mooie tutorial voor.

Edit:

Linkie: Normaliseren
Gewijzigd op 01/01/1970 01:00:00 door Riemer
 
Dennis

Dennis

23/06/2008 22:22:00
Quote Anchor link
pgFrank schreef op 23.06.2008 22:12:
Waarom heb je bij een nieuw wapen een nieuwe kolom nodig? Wanneer dat het geval is, dan zit er iets goed fout in jouw datamodel. Of maak je ook een nieuwe kolom aan wanneer er een nieuwe user moet worden opgeslagen? Lijkt me niet.


Ja een nieuwe kolom in de table user

Het zit zo, een speler heeft nu keuze uit 10 wapens. Die voor elke van zijn ventjes gekocht mag worden.
Er staat nu 10 record voor iedere gebruiker met daarin de hoeveelheid al gekochte wapens van elke soort.
Maar als ik dus een nieuw wapen erbij wil dan moet er dus per gebruiker een extra record komen.
 
Dennis

Dennis

23/06/2008 22:25:00
Quote Anchor link
Riemer schreef op 23.06.2008 22:12:
Dus als ik het goed begrijp kan een speler meerdere geweren hebben? en aangezien meerdere spelers één type geweer kan hebben is er dan dus sprake van een meer op meer relatie.

Het is dus beter om hiervoor een aparte tabel te pakken die hier een geweer representeerd. Deze verwijst met foreign keys naar een speler, en een geweer type. Verder kun je dingen zoals staat nog bij doen, wees creatief.

Misschien is het ook handig om wat te lezen over normaliseren van databases, er is geloof ik op het phphulp website een mooie tutorial voor.

Edit:

Linkie: Normaliseren


1 gebruiker kan meerdere kliks krijgen, voor elke klik kan er van ieder wapen 1 extra worden gekocht.
10 kliks dan mag er van ieder wapen 10 keer een exemplaar worden verkocht. Krijg je een klik erbij, dan mag je als speler zijnde van elk wapen 11 exemplaren kopen.
 
Frank -

Frank -

23/06/2008 22:29:00
Quote Anchor link
Dennis schreef op 23.06.2008 22:22:
Ja een nieuwe kolom in de table user
En dat is dus precies wat je niet nodig hebt... Een nieuw wapen, dat is een nieuw record in de tabel met wapens. Daar heb je nooit en te nimmer een nieuwe kolom voor nodig in welke tabel dan ook. Een wapen staat in de tabel wapens, of deze nu A of B heet, dat doet niet ter zake. Een wapen is een wapen en alle gegevens van dezelfde soort staan in dezelfde kolom. Dus de naam van het wapen staat in de kolom "naam" etc. etc. etc.

Ga normaliseren en voorkom grotere problemen.
 
Dennis

Dennis

23/06/2008 22:30:00
Quote Anchor link
Okidoki :)
Ik ga er nu mee beginnen.
Bedankt.
 
Dennis

Dennis

23/06/2008 22:42:00
Quote Anchor link
pgFrank schreef op 23.06.2008 22:29:
Dennis schreef op 23.06.2008 22:22:
Ja een nieuwe kolom in de table user
En dat is dus precies wat je niet nodig hebt... Een nieuw wapen, dat is een nieuw record in de tabel met wapens. Daar heb je nooit en te nimmer een nieuwe kolom voor nodig in welke tabel dan ook.


Maar Frank er moet toch per user worden opgeslagen hoeveel van elk wapen de user heeft. In de table wapens staan alleen de wapens die een user kan kopen.
 
Dennis

Dennis

23/06/2008 22:51:00
Quote Anchor link
PS ik heb nu denk ik de oplossing.
Vriend van me kwam online en zei dat ik ALTER TABLE `user` ADD `wapen_naam` INT( 5 ) NOT NULL DEFAULT '0';

Moet gebruiken, maar toch bedankt voor die link over die normalisatie.
Ik heb er in ieder geval iets van geleerd :)
 
- SanThe -

- SanThe -

23/06/2008 22:54:00
Quote Anchor link
Niet Bumpen.
Bumpen::
Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de Afbeelding knop om je tekst aan te passen.

SanThe.
 
Mr.Moe

Mr.Moe

23/06/2008 23:00:00
Quote Anchor link
Dennis ik zou toch maar gaan voor die normalisatie van je database, anders kom je bij latere uitbreiding nog in de nesten te zitten. Het is misschien even werk, maar als je later nog iets wilt aanpassen, zie je door het bos de bomen niet meer.
 
Riemer

Riemer

24/06/2008 07:45:00
Quote Anchor link
Breng die vriend hier maar even naar toe, mag hij haarfijn uitleggen of dit wel een correct database model is.

Gebruik gewoon een apart tabel, dit geeft het meest flexibiliteit, de aantal wapens kun je simpel weg tellen door de records te tellen (vergeet niet, records = rijen in een tabel). Ik denk dus dat je 3 tabellen nodig hebt, 1 voor gebruiker 1 voor wapentype (plaatje, basis stats), en 1 voor de wapen zichzelf die van een gebruiker is en een bepaalde wapentype is.

Moet je zien, een extra kolom werkt natuurlijk. maar wat als je uit gaat breiden naar 100 wapen types? ik noem maar wat, dan krijgt elk gebruiker 100 kolommen alleen voor wapens, beetje krankzinnig te noemen niet? Een aparte tabel die een wapen representeert is stukken beter, geeft je verder ook veel meer flexibiliteit eigenlijk in beide uitbreiding mogelijkheden en mogelijkheden in gameplay (staat van wapen, extra bonussen per wapen ik noem maar wat).
Gewijzigd op 01/01/1970 01:00:00 door Riemer
 
Dennis

Dennis

24/06/2008 07:51:00
Quote Anchor link
Riemer schreef op 24.06.2008 07:45:
Breng die vriend hier maar even naar toe, mag hij haarfijn uitleggen of dit wel een correct database model is.

Gebruik gewoon een apart tabel, dit geeft het meest flexibiliteit, de aantal wapens kun je simpel weg tellen door de records te tellen (vergeet niet, records = rijen in een tabel). Ik denk dus dat je 3 tabellen nodig hebt, 1 voor gebruiker 1 voor wapentype (plaatje, basis stats), en 1 voor de wapen zichzelf die van een gebruiker is en een bepaalde wapentype is.

Moet je zien, een extra kolom werkt natuurlijk. maar wat als je uit gaat breiden naar 100 wapen types? ik noem maar wat, dan krijgt elk gebruiker 100 kolommen alleen voor wapens, beetje krankzinnig te noemen niet? Een aparte tabel die een wapen representeert is stukken beter, geeft je verder ook veel meer flexibiliteit eigenlijk in beide uitbreiding mogelijkheden en mogelijkheden in gameplay (staat van wapen, extra bonussen per wapen ik noem maar wat).


ok jij stelt dus voor dat alle wapens in een nieuwe tabel komen, die dan gekoppeld staat met bijvoorbeeld het user_id aan iedere gebruiker?
Dus dan zullen er uiteindelijk evenveel records in de wapen_user tabel zitten als in de user tabel?

Daarnaast inderdaad zoals ik die al had een tabel wapen waarin de stats staan inderdaad ;)

Ok, ook goed. Die wijziging is niet zo moeilijk :)

PS: Doe niet zo naar over die vriend, hij probeerde mij alleen maar te helpen. Ik zat in nood :P
 
Riemer

Riemer

24/06/2008 08:02:00
Quote Anchor link
Quote:
ok jij stelt dus voor dat alle wapens in een nieuwe tabel komen, die dan gekoppeld staat met bijvoorbeeld het user_id aan iedere gebruiker?


Ik zal het even kort vertellen, ik dus voorstel is het gebruik van 3 tabellen:
- User tabel
- gunType tabel
- gun

de guns tabel verwijst dan beide met foreign keys (dus ID's van records in een ander tabel) naar een gebruiker en een gunType record.
Ik begrijp helaas wat weinig van je text, en kan er amper uithalen of je het begrijpt of niet (maar ik heb mijn kop koffie ook niet op) dus daarom vertel ik het nog maar een keer.

Quote:
Dus dan zullen er uiteindelijk evenveel records in de wapen_user tabel zitten als in de user tabel?


Als elk gebruiker maar 1 wapen heeft, wel ja. Moet je zien, elk record in tabel guns representeerd maar 1 wapen. Heeft een gebruiker meerdere guns, zijn er meer records in die tabel die verwijzen naar die gebruiker.

Edit: Zie dit overigens ook niet als een persoonlijke aanval. We willen graag helpen, maar hier (en veel andere forums met een hoge graad van expertise) komt er vaak ongevraagde advies bij.
Gewijzigd op 01/01/1970 01:00:00 door Riemer
 
Dennis

Dennis

24/06/2008 08:10:00
Quote Anchor link
Ja ik snap jouw nu wel.
Maar het zit een beetje anders in elkaar, want een gebruiker kan ook meerdere van dezelfde guns hebben ;)

Maar ik heb nu een oplossing. 3 tabellen. Klaar uit :D
1 voor users.
1 voor wapenstats.
1 voor hoeveelheid wapens per user ;)
 
Riemer

Riemer

24/06/2008 08:15:00
Quote Anchor link
Veel anders hoeft dat niet zijn dennis, je kan namelijk ook meerdere records/rijen hebben die allemaal naar dezelfde gunType en naar dezelfde gebruiker verwijzen
Gewijzigd op 01/01/1970 01:00:00 door Riemer
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.