[PHP / MySQL] Bits probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

Topicstarter
Ik probeer op volgende wijze een menu uit te zetten voor mijn CMS (rechten)

Ik heb de volgende tabel in MySQL opgenomen en dacht dat het wel zou werken maar helaas :(

Afbeeldingslocatie: http://www.toxic-orange.com/general/voorbeeld.gif

Als ik nu de volgende query loslaat

SQL:
1
SELECT auth_mask FROM `cms_tbl_sub_navigatie` WHERE auth_mask & 128


Krijg ik de volgende nummers terug 128, 2028, 4056, 8112, 32448, 64896.

Ik ben bang dat ik de auth_mask tabel verkeerd heb opgebouwd maar heb gewoon 1 + 1 = 2 , 2 + 2=4, 8+8= 16 etc gedaan om aan mn getallen te komen :)

[ Voor 4% gewijzigd door BierPul op 19-01-2003 22:51 ]

Ja man


Acties:
  • 0 Henk 'm!

Verwijderd

1024 * 2 = 2048

...4096...8192...16384...32768...65536...etc

Acties:
  • 0 Henk 'm!

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

Topicstarter
Jep ik zag hem ook |:( 8)7

Tis ook te vroeg om te werken :+

[ Voor 57% gewijzigd door BierPul op 19-01-2003 22:55 ]

Ja man


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Als het antwoord er toch al is... Hoe werkt die & precies? Ik vind de mysql-documentatie hierover niet echt duidelijk... :(

Ow, nevermind... Ik vat 't al:

29 & 15:

16 8 4 2 1
11101= 29
01111= 15
_________AND
01101= 13

[ Voor 48% gewijzigd door Osiris op 19-01-2003 23:02 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Inderdaad. En als je een & operator met getal 2n loslaat op een ander getal, dan kun je zien of bit n ge-set is.

[ Voor 7% gewijzigd door Verwijderd op 19-01-2003 23:05 ]


Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Verwijderd schreef op 19 januari 2003 @ 23:05:
Inderdaad. En als je een & operator met getal 2n loslaat op een ander getal, dan kun je zien of bit n ge-set is.
Ja, idd, da's wel handig voor rechten enzo :) Bijvoorbeeld in een forum krijgt een user gewoon een Int aan rechten mee ofzo, toch?

Acties:
  • 0 Henk 'm!

Verwijderd

Ja, maar ik zou me toch serieus even afvragen of het niet slimmer is om die rechten in een aparte tabel te zetten, en met een koppeltabel rechten aan users/groups toe te kennen.

Dan kun je naar hartelust nieuwe rechten toevoegen, zonder dat je problemen krijgt met de grootte van een veld.
In het systeem van te topicstarter krijg je problemen als je bijvoorbeeld 40 verschillende rechten wilt hebben. Je veld moet dan getallen met het bereik 0 - 240 aankunnen.

Zo zou ik het denk ik doen:

group ( group_id, group_name )

privilege ( privilege_id, privilege_description )

group_x_privilege ( group_id, privilege_id )

[ Voor 21% gewijzigd door Verwijderd op 19-01-2003 23:16 ]

Pagina: 1