Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialumut ünal
431 Pointsswitch case problem?
what am i doing wrong?
<?php
//Available roles: admin, editor, author, subscriber
if (!isset($role)) {
$role = 'subscriber';
}
//change to switch statement
//if ($role != 'admin') {
//echo "You do not have access to this page. Please contact your administrator.";
switch ($role){
case "subscriber":
echo "You do not have access to this page. Please contact your administrator.";
break;
case "admin":
echo "As an admin, you can add, edit, or delete any post.";
break;
}
Julie Dowler
7,851 PointsI can't see anything wrong with it either.
Ben Payne
1,464 PointsI think your just missing the default statement.
<?php
switch ($role){
case "subscriber":
echo "You do not have access to this page. Please contact your administrator.";
break;
case "admin":
echo "As an admin, you can add, edit, or delete any post.";
break;
default:
// Implement default.
}
3 Answers
Mihkel Pajunen
8,017 PointsYour case-statement should not include any actions for "subscriber". The following solution is correct:
<?php
//Available roles: admin, editor, author, subscriber
if (!isset($role)) {
$role = 'subscriber';
}
//change to switch statement
switch ($role) {
case 'admin':
echo "As an admin, you can add, edit, or delete any post.";
break;
case 'editor':
echo "As an editor, you can add or edit any post, and delete your own posts.";
break;
case 'author':
echo "As an author, you can add, edit, or delete your own post.";
break;
default:
echo "You do not have access to this page. Please contact your administrator.";
}
umut ünal
431 Pointsthank you so much..
umut ünal
431 Pointsthanks for responding. actually it was a challenge question like this:
In the code provided, there are two if statements. The second if statement displays a message IF the user role is not equal to "admin". We want to display separate messages based on the role of the logged in user. First we're going to add a message for our admin and keep the current message as the default. Step 1: Change the second if statement to a switch statement, keeping the current message as the default. Step 2: Add a second check to the switch statement for the role of "admin" and display the following message: As an admin, you can add, edit, or delete any post.
given:
//Available roles: admin, editor, author, subscriber if (!isset($role)) { $role = 'subscriber'; }
//change to switch statement if ($role != 'admin') { echo "You do not have access to this page. Please contact your administrator.";
Maybe i did something wrong..
Julie Dowler
7,851 PointsTry this:
<?php
switch ($role){
case "admin":
echo "As an admin, you can add, edit, or delete any post.";
break;
default:
echo "You do not have access to this page. Please contact your administrator.";
break;
}
umut ünal
431 Pointsstill not working
umut ünal
431 Pointsthanks for replies.. Mihkel Pajunen answer solved the problem
Mihkel Pajunen
8,017 PointsMihkel Pajunen
8,017 PointsI don't think that there is anything wrong with your code example. It does exactly what it should do. Since the "$role" variable is not set to anything, your first if-statement assigns a value of "subscriber". The switch-statement then evaluates to "You do not have access to this page. Please contact your administrator.", just as it should. If you have problems running the code, it might stem from the fact that you left out the closing PHP tag "?>", but it should not be necessary if your PHP file only includes PHP code.