Ha allemaal,

Ik ben lekker aan het stoeien met mijn rechten systeem.

Ik vind het zonde om elke keer als ik wil laten zien dat de gebruiker webmaster is of moderator alle if statements of cases af te gaan.

Daarom dacht ik slim te zijn deze niveaus in een array te zetten.

Kijkende naar de datum array zoals ik 'm gebruik voor de mooie data

dus

<?php
//nette datum weergeven
$weekdagnamen = array ('zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag');
$maandnamen = array (1 => 'januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli', 'augustus', 'september', 'oktober', 'november', 'december');
?>

ophalen met:

<?php
DATE_FORMAT(last_date, '%d-%c-%Y') AS user_datum,
DATE_FORMAT(last_date, '%H:%i:%s') AS user_tijd,
?>

dacht ik dit ook te kunnen doen met het niveau

array

<?php
//benaming van niveau weergeven
$nivnaam = array (1 => 'Gebruiker', 'Moderator', 'Webmaster');

?>

dus de query wordt

<?php

$sql = "SELECT nickname, niveau AS user_niveau";

?>

en dan weergeven als:

<?php
echo $row['niv_naam'];
?>

Alleen dit werkt niet. Ik denk vast te simpel over deze situatie. Wie kan me op weg helpen?

Alvast bedankt!

Cris
Waar zou $row['niv_naam'] vandaan moeten komen? Je vraag nickname en user_niveau op (zie query), daar kom ik niv_naam niet in tegen.

Tevens zie ik niet wat het verband zou moeten zijn tussen de array en de query. Het enige dat ik kan bedenken, is dat er nog ergens een stuk script is dat een verband legt.
Ik dacht dat die zou moeten corresponderen met de array... maar dat is dus blijkbaar niet zo...

Is het dan wel handig om het op deze manier te doen? Of is er een betere oplossing voor dit soort dingen? Steeds als die if statements of case regels zijn veel code en werk en zijn onoverzichtelijk uiteindelijk.

Ik zoek een korte universele oplossing! Wie o wie!

Groetjes!
Gebruik eens een CASE in de query:
<?php
$query = "
SELECT
nickname,
CASE
WHEN niveau = 1 THEN 'Gebruiker'
WHEN niveau = 2 THEN 'Moderator'
WHEN niveau = 3 THEN 'Webmaster'
ELSE 'onbekend'
END
AS nivnaam
FROM
tabelnaam
";
?>
Deze retourneert 'nivnaam', die je na het fetchen kunt opvragen met bv. $row['nivnaam'].

Niet getest!
Helaas Frank, dat wordt 'm niet


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CASE WHEN niveau = 0 THEN 'Gebruiker' WHEN niveau = 1 THEN 'Mode' at line 6


Ik ben even gaan zoeken naar query's die ook met een WHEN statement werken en die doen na elke WHEN weer een else. Dat moet ik dus ook maar eens proberen!

Tot zo!
Nee, dat wordt 'm niet. Bij alles wat ik probeer krijg ik een error in mijn sql syntax... Het werkt dus uberhaupt niet met WHEN...

Er is ook best weinig over te vinden op internet... Het wordt zeker ook niet zoveel gebruikt Frank?

Iemand een andere oplossing? hoe doen jullie dit meestal?
voor gebruiker e.d. moet return staan dacht ik:

WHEN niveau = 1 THEN return 'Gebruiker'

en END moet volgens mij END CASE worden
Hoe ziet jouw query er nu uit? Hier werkt een soortgelijke query namelijk uitstekend.

Edit:
@PHP Newbie: Het werkt hier uitstekend met alleen END.
Frank schreef op 24.08.2006 23:36
Hoe ziet jouw query er nu uit? Hier werkt een soortgelijke query namelijk uitstekend.

Edit:
@PHP Newbie: Het werkt hier uitstekend met alleen END.


Zoals je weer ben ik net begonnen, en dit is zoals ik dacht dat het moest ;-)

Nahjah, weer verkeerd gedacht, maar heb ik weer wat geleerd ^_^
PHP Newbie schreef op 24.08.2006 23:39
[quote=Frank schreef op 24.08.2006 23:36]Hoe ziet jouw query er nu uit? Hier werkt een soortgelijke query namelijk uitstekend.

Edit:
@PHP Newbie: Het werkt hier uitstekend met alleen END.


Zoals je weer ben ik net begonnen, en dit is zoals ik dacht dat het moest ;-)

Nahjah, weer verkeerd gedacht, maar heb ik weer wat geleerd ^_^[/quote]

@Newbie volgens mij heb je gelijk hoor zie de link in mijn reply

Reageren