Jump to content

Undefined index cmd using switch case


YinYangKim

Recommended Posts

<html>

<head>
  <!--title>Hello</title-->
  <link rel="stylesheet" href="uvcs.css" type="text/css" />
</head>

<body>
  <div id=everything>
    <div id=header>
      This is the header
    </div>
    <div id=clear></div>
    <div id=navmenu>
      <div id=navmenu>
        <ul>
          <li>
            <a href="index.php?cmd=home">HOME</a>
          </li>
          <li>
            <!--submenu-->
            <a>VIEW</a>
            <ul>
              <li>
                <a href="index.php?cmd=student">STUDENT PROFILE</a>
              </li>
              <li>
                <a href="index.php?cmd=employee">EMPLOYEE</a>
                <!--subsubmenu-->
                <!--ul>
                  <li>
                    <a href=#>subsubmenu1</a>
                    <a href=#>subsubmenu2</a>
                  </li>
                </ul-->
              </li>
            </ul>
          </li>
          <li>
            <a href="index.php?cmd=courses">COURSES</a>
          </li>
          <li>
            <a href="index.php?cmd=aboutus">ABOUT UVCS</a>
          </li>
          <li>
            <a href="index.php?cmd=itsupport">IT SUPPORT</a>
          </li>
          <li>
            <a href="index.php?cmd=login">LOGIN</a>
          </li>
        </ul>
      </div>
    </div>
    <div id=clear></div>
    <div id=maincontent>
      <?php include("selector.php"); ?>
    </div>
    <div id=sidebar>
      side bar
    </div>
    <div id=clear></div>
    <div id=footer>
      Footer
    </div>
  </div>
</body>

</html>
<?php
  $cmd =$_GET['cmd'];
  switch($cmd)
  {
    case 'home': include_once "home.php";
    break;

    case 'student': include_once "student.php";
    break;

    case 'employee': include_once "employee.php";
    break;

    case 'courses': include_once "courses.php";
    break;

    case 'aboutus': include_once "aboutus.php";
    break;

    case 'itsupport': include_once "itsupport.php";
    break;

    case 'login': include_once "login.php";
    break;

    default: include_once "home.php";
    break;
  }
?>

These are my codes that supposedly would show home.php (which contains only the text "you are viewing home.php"), when you open the index.php. But for some reason I would get the line

 

Notice: Undefined index: cmd in C:\xampp\htdocs\UVCSPortal\selector.php on line 2

you are viewing home.php

 

I thought with these codes with would go directly to default case. But instead it reads the <?php include("selector.php"); ?> in index.php twice, I think.  I tried using isset, but couldn't understand it.

Link to comment
https://forums.phpfreaks.com/topic/286915-undefined-index-cmd-using-switch-case/
Share on other sites

 

Check $_GET['cmd'] exists using isset

$cmd = isset($_GET['cmd']) ? $_GET['cmd'] : 'home'; // if $_GET['cmd'] does not exist, set $cmd to home by default 

 

Hi, I did as you told and got home as output after <?php echo $cmd; ?>

 

I'm still wondering why it looks like my cmd gets checked twice. O_O

What?

Notice: Undefined index: cmd in C:\xampp\htdocs\UVCSPortal\selector.php on line 2

you are viewing home.php

 

This is the output when I open index.php. Those two lines. If I click on the link with cmd = home, the first line disappears. Following that logic, on the first load of index.php, it checks the content of cmd twice, printing the first line that way because cmd is null and the 2nd line because it already contains home.

The error is caused by this line:

 

$cmd =$_GET['cmd'];
The 'cmd' does not yet exist and you have done nothing to set a default.

 

This line:

 

default: include_once "home.php";
break;
Then causing the output "you are viewing home.php" because $cmd has fallen through all your switch statements and into the default clause.

The error is caused by this line:

 

$cmd =$_GET['cmd'];
The 'cmd' does not yet exist and you have done nothing to set a default.

 

This line:

 

default: include_once "home.php";
break;
Then causing the output "you are viewing home.php" because $cmd has fallen through all your switch statements and into the default clause.

 

 

got a fix for this?

Did you not see my post earlier? http://forums.phpfreaks.com/topic/286915-undefined-index-cmd-using-switch-case/?do=findComment&comment=1472306

 

If you don't want $cmd to have the default value of home, then change  'home'  in my code to  null

 

First off, I thought it was just used for checking. Second, didn't work. Sorry. :(

didn't work. or maybe i used it wrong. i placed it before <?php include("selector.php"); ?> in my index.php

My code is to replace this line   $cmd =$_GET['cmd'];  in selector.php, so the first three lines should read like this in selector.php

<?php
  $cmd = isset($_GET['cmd']) ? $_GET['cmd'] : 'home';
  switch($cmd)

 

My code is to replace this line   $cmd =$_GET['cmd'];  in selector.php, so the first three lines should read like this in selector.php

<?php
  $cmd = isset($_GET['cmd']) ? $_GET['cmd'] : 'home';
  switch($cmd)

It worked! Thanks a lot. Although I still don't get why this happened, considering I've used this code on other projects. Oh well.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.