account systeem met meerdere tabellen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Lul hannes

lul hannes

26/03/2013 22:50:56
Quote Anchor link
Ik ben uit hobby een beetje aan het programmeren in php, nu heb ik daarbij een inlog systeem wat mooi funcioneert.
Nu zou ik echter graag willen weten hoe ik een systeem op kan zetten in mysql, wat een beetje lijkt op wiebetaalwat.nl
Hierbij krijg je als je inlogd alle lijsten te zien waarop je deelneemt, welke je vervolgens kunt openen.

wat ik kan bedenken is dit:
een table met de users (wat ik nu heb), vervolgens een kolom waarop in array vorm alle tabelen lijsten staan, deze uitlezen met php en daarmee een nieuwe sql statement maken.
Is er een betere mannier?
 
PHP hulp

PHP hulp

26/04/2024 08:06:59
 
- Ariën  -
Beheerder

- Ariën -

26/03/2013 23:02:20
Quote Anchor link
En dan kom je op het punt dat array's niet in een database gaan.

Als je data met elkaar wilt koppelen, kijk dan vooral eens naar 'database normalisatie'. Er gaat dan een wereld voor je open.
 
Lul hannes

lul hannes

26/03/2013 23:15:20
Quote Anchor link
ik bedoel de array opslaan als een mysqlstring "array(2,3)",

wat ik nu heb bedacht is inderdaad iets met normalisatie maar naar mijn idee toch te groot, voorbeeld:
3+ tabellen

A. de userlist
user, naam ,enz
1 , bob ,...
2 , hans ,...

B. de koppellijst
lijst, naam,
lijst1, bob,
lijst1, hans,
lijst2 bob,

C. de lijsten zelf

en deze vervolgens via een veel te lastige (uitdaging!), sql statemtent opvragen.
wat je hiermee krijgt is dat voor elke lijst en user koppeling een nieuwe rij aangemaakt moet worden, kan dit beter?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/03/2013 23:51:32
Quote Anchor link
A. dat gaat goed.

maar dan:
je hebt in deze situatie vier tabellen nodig
1. users-> met de velden: user_id, name, etc.
2. lists-> met de velden: list_id, user_id, listname
3. listrules-> met de velden: rule_id, list_id, user_id, listname, description, date, price
4. ruleusers-> met de velden: rule_id, user_id. (dit is een koppeltabel)

de vet onderstreepte zijn primary keys met auto increment
Gewijzigd op 27/03/2013 00:04:46 door Frank Nietbelangrijk
 
Bernhard Flokstra

Bernhard Flokstra

27/03/2013 10:06:06
Quote Anchor link
@frank: Als ruleusers een koppeltabel is tussen de tabellen users en listrules dan zie ik niet in waarom in listrules de kolom user_id moet voor komen. Deze staat immers ook al in de koppeltabel.

Als je dan koppeltabellen gebruikt, wees dan consequent en gebruik er ook een voor de tabellen listrules en lists
Gewijzigd op 27/03/2013 10:07:27 door Bernhard Flokstra
 
Lul hannes

lul hannes

27/03/2013 19:05:11
Quote Anchor link
ik zal nu directer formuleren wat ik wil, aangezien ik er nog steeds niet uit kom.

ik heb 2 standaard tabellen

1 met rijen met users [name, user_id, password]
1 met een kolom [date, list 1, list 2, list n], deze tabel bevat voor elke dag, een waarde voor 1 t/m n

vervolgens heb ik dit gemaakt:
een tabel waarbij 3 dingen worden genoteerd, [user_id,group,list n] oftewel hierin staat dat user:hans in group:kantoor de kolom: list n representeerd. (je kan maar een list n zijn /per groep)


nu zou ik graag met 1 sql statments de group: kantoor willen laten zien, waarbij [date, list 1 en list 4] wordt weergeven welke overkomen met hans en peter.

is er een goede tutorial hiervoor?

A
{id, naam, pass}
[ 1, hans, 1234]
[ 2, jan, 4321]
B
{ date, 1, 2, 3}
[14-01, kaas, boter, appel]
[15-01, worst, melk, brood]
c
{ group, naam, waarde}
[kantoor, hans, 1]
[ thuis, hans, 2]
[kantoor, jan, 3]

uitkomst c.group=kantoor
{ date, hans, jan}
[14-01, kaas, appel]
[15-01, worst, brood]
Gewijzigd op 27/03/2013 19:16:00 door lul hannes
 
Erwin H

Erwin H

27/03/2013 19:16:31
Quote Anchor link
Ik begrijp er eerlijk gezegd weinig van.... maar wat je in elk geval NIET moet doen, is arrays als arrays opslaan in een database. Op die manier kan je helemaal niets meer met de data in sql en zal je altijd lopen te klooien als je gegevens op wilt halen.
Ook kolommen nummers gaan geven (1 t/m n) is niet aan te bevelen. Of je hebt continu halflege tabellen, of je krijgt later het probleem dat je een extra kolom nodig hebt en dus je database structuur moet gaan aanpassen.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/03/2013 19:18:12
Quote Anchor link
zoals erwin al zegt, geen kolommen list1 list2 etc gaan gebruiken. dat wordt dan een aparte tabel.
 
Lul hannes

lul hannes

27/03/2013 19:23:37
Quote Anchor link
Erwin H op 27/03/2013 19:16:31:
Ik begrijp er eerlijk gezegd weinig van.... maar wat je in elk geval NIET moet doen, is arrays als arrays opslaan in een database. Op die manier kan je helemaal niets meer met de data in sql en zal je altijd lopen te klooien als je gegevens op wilt halen.
Ook kolommen nummers gaan geven (1 t/m n) is niet aan te bevelen. Of je hebt continu halflege tabellen, of je krijgt later het probleem dat je een extra kolom nodig hebt en dus je database structuur moet gaan aanpassen.

betreft de array
ik begrijp inderdaad hoe dat nu moet

betreft de kolommmen nummer
het is de keuze om elke dag een nieuwe kolom toe te voegen of dat te doen met elke nieuwe user in een group
door elke dag een nieuwe rij te geven is het makkelijk om een aantal dagen te selecter en de user op te sommen
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/03/2013 19:24:53
Quote Anchor link
begin gewoon simpel. maak de eerste twee tabellen uit mijn eerste post en probeer door middel van een join deze twee tabellen te koppelen.

een aardige tutorial:
http://www.phptuts.nl/view/41/
 
Lul hannes

lul hannes

27/03/2013 19:29:05
Quote Anchor link
Frank Nietbelangrijk op 27/03/2013 19:24:53:
begin gewoon simpel. maak de eerste twee tabellen uit mijn eerste post en probeer door middel van een join deze twee tabellen te koppelen.

een aardige tutorial:
http://www.phptuts.nl/view/41/


dat "simpele" is wel gelukt het gaat om de stap om van de verkregen list id's de (nog niet) bijhorende kolom te laten zijn
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/03/2013 19:31:13
Quote Anchor link
@bernard: voor many to many relations heb je een koppeltabel nodig. voor one to many niet. Het heeft dus niets te maken met consequent zijn.
 
Erwin H

Erwin H

27/03/2013 19:32:41
Quote Anchor link
H de Rij op 27/03/2013 19:23:37:
betreft de kolommmen nummer
het is de keuze om elke dag een nieuwe kolom toe te voegen of dat te doen met elke nieuwe user in een group
door elke dag een nieuwe rij te geven is het makkelijk om een aantal dagen te selecter en de user op te sommen

Haal je nu rijen en kolommen door elkaar? Elke dag een nieuwe kolom toevoegen is natuurlijk echt uit den boze.

Ik denk werkelijk dat je nog eens heel goed naar je model moet gaan kijken, want ik heb nu het idee dat het niet klopt wat je aan het proberen bent.
Gewijzigd op 28/03/2013 12:44:54 door Erwin H
 
Frank Nietbelangrijk

Frank Nietbelangrijk

27/03/2013 19:38:58
Quote Anchor link
H de Rij op 27/03/2013 19:29:05:
dat "simpele" is wel gelukt het gaat om de stap om van de verkregen list id's de (nog niet) bijhorende kolom te laten zijn

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
select listname, name from lists left join users on users.user_id = lists.user_id


Toevoeging op 27/03/2013 19:41:04:

ook nu weer direct met erwin eens. kolommen maak je eenmalig. records (regels) worden dagelijks of nog vaker toegevoegd en of gewijzigd.
Gewijzigd op 27/03/2013 19:39:24 door Frank Nietbelangrijk
 
Lul hannes

lul hannes

27/03/2013 19:41:42
Quote Anchor link
Erwin H op 27/03/2013 19:32:41:
H de Rij op 27/03/2013 19:23:37:
betreft de kolommmen nummer
het is de keuze om elke dag een nieuwe kolom toe te voegen of dat te doen met elke nieuwe user in een group
door elke dag een nieuwe rij te geven is het makkelijk om een aantal dagen te selecter en de user op te sommen

Haal je nu rijen en kolommen door elkaar? Elke dag een nieuwe kolom toevoegen is natuurlijk echt uit den boze.

Ik denk werkelijk dat je nog eens heel goed naar je model moet gaan kijken, want ik heb nu het idee dat het klopt wat je niet aan het proberen bent.



ik zeg dat bij een nieuwe user een nieuwe kolom wordt gecreerd, en elke dag een nieuwe rij.


kijk maar gewoon even bij mijn voorbeeld, dit wil ik in de mysql database doen.




Toevoeging op 27/03/2013 19:51:34:

A
{id, naam, pass}
[ 1, hans, 1234]
[ 2, jan, 4321]
B
{ date, 1, 2, 3}
[14-01, kaas, boter, appel]
[15-01, worst, melk, brood]
c
{ group, naam, waarde}
[kantoor, hans, 1]
[ thuis, hans, 2]
[kantoor, jan, 3]

uitkomst c.group=kantoor
{ date, 1, 3}
[14-01, kaas, appel]
[15-01, worst, brood]

in 2 stappen (join met user weggelaten)
SELECT "waarde" from C WHERE group=kantoor
geeft [1,3]

Select "data",1,3 from B where 1
geeft vervolgens
[14-01, kaas, appel]
[15-01, worst, brood]
 
Erwin H

Erwin H

27/03/2013 20:23:52
Quote Anchor link
Dan blijf je echt verkeerd bezig. Kolommen maak je 1 keer aan, niet bij nieuwe gegevens. Zij het een nieuwe dag, zij het een nieuwe user, je kolommen moeten onveranderd blijven.
 
Lul hannes

lul hannes

28/03/2013 12:33:48
Quote Anchor link
heren en mogelijke dames,
ik probeer een mogelijk account systeem te maken, ik ben groen hierin maar help mij op weg.Tot nu toe heb ik nagenoeg alleen negatieve kritiek gekregen terwijl ik graag info en hulp wil.
Brand mij niet af zonder met alternatieven te komen.
 
Erwin H

Erwin H

28/03/2013 13:00:18
Quote Anchor link
Afbranden? Frank en ik proberen je alleen duidelijk te maken dat je op de verkeerde weg bent. Daarnaast heeft Frank al een enorme zet in de goede richting gegeven die je echter zo te zien niet oppakt. Dat is je goed recht natuurlijk, maar met afbranden heeft dat helemaal niets te maken.

Om het dan hopelijk nog wat duidelijker te maken.
Een database is geen spreadsheet. Je kan niet zonder meer kolommen als rijen gebruiken en andersom. Eigenlijk moet je een database zien als een verzameling entiteiten (in jouw geval gebruikers, lijsten en mogelijk nog iets waar ik de vinger niet op krijg). Elke enititeit heeft bepaalde eigenschappen (een gebruiker heeft een naam en een id bijvoorbeeld), dat zijn de kolommen in je tabellen. Voor elke entiteit heb je meerdere exemplaren (meerdere gebruikers Jan, Piet, Henk, etc), dat zijn de rijen in je tabellen. Vervolgens kun je relaties tussen de verschillende entiteiten gaan leggen wat op verschillende manieren kan.
1-op-1 relatie: Zo'n relatie leg je door in twee tabellen eenzelfde key te gebruiken, meestal gebeurt dit op id. Heb je bijvoorbeeld een user_id in de gebruikerstabel, dan kan je in een andere tabel diezelfde waarde voor de user_id gebruiken zodat duidelijk is bij welke user de gegevens horen.
1-op-veel relatie: In feite hetzelfde als 1-op-1, alleen heb je nu in de tweede tabel meerdere rijen die verwijzen naar dezelfde gebruiker. De waarde voor de user_id komt dus in meerdere rijen in de tweede tabel terug.
veel-op-veel relatie: In dit geval heb je vele links heen en weer. Bijvoorbeeld een gebruiker kan meerdere lijsten hebben, maar een lijst kan ook naar meerder gebruikers verwijzen. Voor dit type relatie heb je een koppeltabel nodig, omdat voor elke relatie tussen gebruiker en lijst je dit apart moet opslaan. Zo'n koppel tabel kent over het algemeen maar twee kolommen, user_id en list_id in dit geval. Elke rij in die tabel legt een relatie tussen een gebruiker en een lijst.

Als we dit gaan toepassen op jouw model (zo ver als ik het begrijp), dan zie ik dus een entiteit gebruiker, een entiteit lijst en iets wat je 'groepen' noemt. Wat hier echter het idee achter is ontgaat mij. Veel verder dan dit kan ik dus op dit moment niet gaan, omdat je probleemstelling mij niet duidelijk is.

Dus, wil je echte alternatieven zal je duidelijker moeten maken wat je nu wilt. Wat is nu een 'lijst', wat is een 'groep', wat is de relatie tussen de gebruikers, lijsten en groepen? Kan een gebruiker meerdere lijsten hebben? Of kan een lijst bestaan uit meerdere gebruikers?
 
Lul hannes

lul hannes

28/03/2013 13:07:30
Quote Anchor link
excuus, ik bedoel delete account verzoek.
Gewijzigd op 28/03/2013 13:16:08 door lul hannes
 
Erwin H

Erwin H

28/03/2013 13:10:14
Quote Anchor link
Nee, dat is een duidelijk uitleg. Al mijn moeite dus echt voor niets geweest? Dank je wel... Fijn dit soort mensen...
 



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.