login  Naam:   Wachtwoord: 
Registreer je!
 Forum

2e recht wordt niet weergegeven

Offline lau - 24/08/2007 17:42
Avatar van lauHTML interesse Ik heb in onderstaande code een dubbele rechtencheck = 8. Ze moeten allebei worden weergegeven, maar dat doet ie dus niet. Hij geeft enkel laatste (dat is prijslijst) weer.
  1. <?php
  2. $privileges = array(
  3. 2 => array('label' => 'Groep', 'url' => '?p=behgroep'),
  4. 4 => array('label' => 'Categorie', 'url' => '?p=behcategorie'),
  5. 8 => array('label' => 'Product', 'url' => '?p=behproduct'),
  6. 8 => array('label' => 'Prijslijst', 'url' => '?p=behprijslijst'),
  7. 16 => array('label' => 'Gebruiker', 'url' => '?p=behgebruiker'),
  8. 32 => array('label' => 'Instellingen', 'url' => '?p=behinstellingen'),
  9. 64 => array('label' => 'Informatie', 'url' => '?p=behinfo')
  10. );
  11. foreach ($privileges as $id => $item) {
  12. if ($_SESSION['srechten'] & $id) {
  13. printf('<a href="%s">%s</a> | ',
  14. $item['url'],
  15. $item['label']
  16. );
  17. }
  18. }
  19. ?>

Ik krijg het volgende visualisatie:
Groep | Categorie | Prijslijst | Gebruiker | Instellingen | Informatie |
Terwijl ik dit wil:
Groep | Categorie | Product | Prijslijst | Gebruiker | Instellingen | Informatie |

Hoe krijg ik dat voor elkaar. Product en prijslijst hebben dezelfde rechten, is dus recht 8.

5 antwoorden

Gesponsorde links
Offline Milannetjuhh - 24/08/2007 17:55 (laatste wijziging 24/08/2007 17:57)
Avatar van Milannetjuhh Nieuw lid In het stuk als je checkt of het privilege 8 heeft ook checken of ie die het nummer heeft van product.

//edit
en dan dus wel het nummer van het product veranderen (of andersom)
Offline lau - 24/08/2007 17:59
Avatar van lau HTML interesse Maar beide, zowel product als prijslijst hebben privilege 8. Zodra een gebruiker recht 8 heeft mag hij product EN prijslijst bewerken. Ik wil dat ze allebei worden weergegeven.
Offline BramBo - 24/08/2007 18:08
Avatar van BramBo JS gevorderde Een array kan niet 2x de zelfde index hebben. een opbouw van een array's indices lopen altijd vanaf 0..N.

Dus je dient van de array met index 8 een dimensie te maken. of je moet je gehele array herstructureren.
Offline Grayen - 24/08/2007 18:13 (laatste wijziging 24/08/2007 18:15)
Avatar van Grayen PHP ver gevorderde Edit: BramBo was me voor.

Als je bij deze manier van het noteren van een array twee dezelfde key waarden opgeeft, dan blijft alleen de laatste waarde van dezelfde key opgeslagen (in dit geval prijslijst). Als je meerdere waardes aan privelege waarde wilt koppelen, moet je dus niet de privelege waarde in de key noteren. Ik zou het als volgt aanpakken:

  1. $privileges = array
  2. (
  3. (
  4. 'label' => 'Groep', 'url' => '?p=behgroep'
  5. )),
  6. (
  7. 'label' => 'Categorie', 'url' => '?p=behcategorie'
  8. )),
  9. (
  10. 'label' => 'Product', 'url' => '?p=behproduct'
  11. )),
  12. (
  13. 'label' => 'Prijslijst', 'url' => '?p=behprijslijst'
  14. )),
  15. (
  16. 'label' => 'Gebruiker', 'url' => '?p=behgebruiker'
  17. )),
  18. (
  19. 'label' => 'Instellingen', 'url' => '?p=behinstellingen'
  20. )),
  21. (
  22. 'label' => 'Informatie', 'url' => '?p=behinfo'
  23. ))
  24. );
  25. foreach ($privileges as $privilege) {
  26. list($id, $item) = $privilege;
  27. if ($_SESSION['srechten'] & $id) {
  28. printf('<a href="%s">%s</a> | ', $item['url'], $item['label']);
  29. }
  30. }


Ook zat er een fout in de array met label en url, bij bijna allemaal had je ", " staan in plaats van " => " je gebruikte die waarde immers als key waarde .
Offline lau - 24/08/2007 19:09
Avatar van lau HTML interesse Welk stukje bedoel je dat ik ", " had gebruikt ipv " => " ?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.22s