简体   繁体   中英

PHP Switch Statement Not Working

I have a switch statement and its not changing the variable for whatever reason. I define it by default as one, and $getpage will just echo out as 1, not 1,10. I don't know what I'm doing wrong. Someone help please.

if (!isset($_SESSION['username'])) {
    echo '<meta http-equiv="refresh" content="0; url=memberarea.php">';
}
else {
    if (!isset($_GET['sex']) &&
       !isset($_GET['age']) &&
       !isset($_GET['page'])) {
        $_GET['age'] = "x";
        $_GET['sex'] = "x";
        $_GET['page'] = 1;
        $getage = mysqli_real_escape_string($connect, $_GET['age']);
        $getsex = mysqli_real_escape_string($connect, $_GET['sex']);
        $getpage = mysqli_real_escape_string($connect, $_GET['page']);
    }
    else {
        if ($_GET['age'] != "12-15" ||
            $_GET['age'] != "16-18" ||
            $_GET['age'] != "19-25" ||
            $_GET['age'] != "26-35" ||
            $_GET['age'] != "36+") {
            $_GET['age'] = "x";
            $getage = mysqli_real_escape_string($connect, $_GET['age']);
        }
        else {
            $getage = mysqli_real_escape_string($connect, $_GET['age']);
        }

        if ($_GET['sex'] != "male" ||
           $_GET['sex'] != "female" ||
           $_GET['sex'] != "x") {
            $_GET['sex'] = "x";
            $getsex = mysqli_real_escape_string($connect, $_GET['sex']);
        }
        else {
            $getsex = mysqli_real_escape_string($connect, $_GET['sex']);
        }

        if (ctype_digit($_GET['page']) === FALSE || $_GET['page'] > 10) {
            $_GET['page'] = 1;
            $getpage = mysqli_real_escape_string($connect, $_GET['page']);
        }
        else {
            $getpage = mysqli_real_escape_string($connect, $_GET['page']);
        }

        if ($getsex === "all") {
            $getsex = "*";
        }
        if ($getage === "all") {
            $getage = "*";
        }

        switch($getpage) {
            case 1:
                $getpage = "1,10";
                break;
            case 2:
                $getpage = "11,20";
                break;
            case 3:
                $getpage = "21,30";
                break;
            case 4:
                $getpage = "31,40";
                break;
            case 5:
                $getpage = "41,50";
                break;
            case 6:
                $getpage = "51,60";
                break;
            case 7:
                $getpage = "61,70";
                break;
            case 8:
                $getpage = "71,80";
                break;
            case 9:
                $getpage = "81,90";
                break;
            case 10:
                $getpage = "91,100";
                break;
        }
    }

You should be using a function for this (not a switch) since your output can be easily calculated from your input. You don't want to list every possible input and match it to a hard-coded output. This breaks as soon as you hit page 11. Instead, perform the calculations to arrive at each number via some simple math:

function get_range($page) {
    $cap = $page * 10;
    return $cap - 9 . "," . $cap;
}

echo get_range(7);
// prints "61,70"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM