From: MuFei on 21 May 2010 15:24 Hi, I'm still new to PHP and everyday I learn something new. Today I was trying to make some script using the switch statement but I have some issue that I don't know how to get around it. It's a simple test script that contain only one file, it has some questions that I want only one question appear per time then go to the next question when clicking on the submit button, I used switch for that, but when I get the first page, I got a notice which says: Notice: Undefined index: question in path\test.php on line 56 So I used if(isset($_GET[''])) but then the default value of the switch does not show up in the first page and I get the first page blank. 1- Is there anyway that I can use the default value of the switch without getting the note? Or 2- Is there anyway that I can use the default value of the switch with the if(isset()) and show the first page? Here is the content of the script that I hope you can help me with: (please note that it's not finished yet and it's so simple) (The if(isset()) is commented) ================================================ <?php // List of test questions and their answers in variables $question1 = '1- What is PHP?<br /> <input type="radio" name="q1a" value="a" /> A- Software <br /> <input type="radio" name="q1a" value="b" /> B- Hypertext Preprocessor, Scripting Server side programming language <br /> <input type="radio" name="q1a" value="c" /> C- Client side programming language <br /><br /> <input type="submit" name="sumbit" value="Question 2" />'; $answer1 = 'b'; $question2 = '2- What is PHP used for?<br /> <input type="radio" name="q2a" value="a" /> A- For web <br /> <input type="radio" name="q2a" value="b" /> B- For Computers <br /> <input type="radio" name="q2a" value="c" /> C- For Designing <br /><br /> <input type="submit" name="sumbit" value="Question 3" />'; $answer2 = 'a'; $question3 = '3- What is good about PHP?<br /> <input type="checkbox" name="q3a[a]" value="a" /> A- It\'s Designed and created for the web <br /> <input type="checkbox" name="q3a[b]" value="b" /> B- It\'s Free <br /> <input type="checkbox" name="q3a[c]" value="c" /> C- It supports different Databases <br /> <input type="checkbox" name="q3a[d]" value="d" /> D- It\'s not an Oriented Programming language <br /><br /> <input type="submit" name="sumbit" value="Question 4" />'; $answer3_1 = 'a'; $answer3_2 = 'b'; $answer3_3 = 'c'; $question4 = '4- What does PHP stands for?<br /> <input type="radio" name="q4a" value="a" /> A- Perl Hypertext Programming <br /> <input type="radio" name="q4a" value="b" /> B- Personal Home Page <br /><br /> <input type="submit" name="sumbit" value="Question 5" />'; $answer4 = 'b'; $question5 = '5- Who created PHP?<br /> <input type="radio" name="q5a" value="a" /> A- Andi Gutmans <br /> <input type="radio" name="q5a" value="b" /> B- Zeev Suraski <br /> <input type="radio" name="q5a" value="c" /> C- Rasmus Lerdorf <br /><br /> <input type="submit" name="sumbit" value="Results" />'; $answer5 = 'c'; ?> <html> <head> <title> <?php if(isset($_GET['question'])) { echo "Question " . $_GET['question']; } else { echo 'Instroctions'; } ?> </title> </head> <body> <?php //if(isset($_GET['question'])) { switch($_GET['question']) { case '1': echo '<form action="test.php?question=2" method="post">' . $question1 .'</form>'; break; case '2': echo '<form action="test.php?question=3" method="post">' . $question2 .'</form>'; break; case '3': echo '<form action="test.php?question=4" method="post">' . $question3 .'</form>'; break; case '4': echo '<form action="test.php?question=5" method="post">' . $question4 .'</form>'; break; case '5': echo '<form action="test.php?question=Results" method="post">' . $question5 .'</form>'; break; case 'Results': echo 'You results are: <br /><br /><a href="test.php">Go to the home page and do the test again!</a>'; break; default: echo 'Welcome to PHP simple test, Please click on Start button to begin you test. <br /> <a href="test.php?question=1">Click Here to Begin!</a>'; break; } //} ?> </body> </html> ================================================ Thanks for your help guys! ^^ MuFei
From: Adam Richardson on 21 May 2010 16:18 On Fri, May 21, 2010 at 3:24 PM, MuFei <mufei4u(a)gmail.com> wrote: > Hi, > I'm still new to PHP and everyday I learn something new. > Today I was trying to make some script using the switch statement but > I have some issue that I don't know how to get around it. > It's a simple test script that contain only one file, it has some > questions that I want only one question appear per time then go to the > next question when clicking on the submit button, I used switch for > that, but when I get the first page, I got a notice which says: > Notice: Undefined index: question in path\test.php on line 56 > So I used if(isset($_GET[''])) but then the default value of the > switch does not show up in the first page and I get the first page > blank. > > 1- Is there anyway that I can use the default value of the switch > without getting the note? > Or > 2- Is there anyway that I can use the default value of the switch with > the if(isset()) and show the first page? > > Here is the content of the script that I hope you can help me with: > (please note that it's not finished yet and it's so simple) > (The if(isset()) is commented) > > ================================================ > > <?php > // List of test questions and their answers in variables > $question1 = '1- What is PHP?<br /> > <input type="radio" > name="q1a" value="a" /> A- Software <br /> > <input type="radio" > name="q1a" value="b" /> B- Hypertext > Preprocessor, Scripting Server side programming language <br /> > <input type="radio" > name="q1a" value="c" /> C- Client side > programming language <br /><br /> > <input type="submit" > name="sumbit" value="Question 2" />'; > $answer1 = 'b'; > > $question2 = '2- What is PHP used for?<br /> > <input type="radio" > name="q2a" value="a" /> A- For web <br /> > <input type="radio" > name="q2a" value="b" /> B- For Computers <br /> > <input type="radio" > name="q2a" value="c" /> C- For Designing <br /><br /> > <input type="submit" > name="sumbit" value="Question 3" />'; > $answer2 = 'a'; > > $question3 = '3- What is good about PHP?<br /> > <input type="checkbox" > name="q3a[a]" value="a" /> A- It\'s > Designed and created for the web <br /> > <input type="checkbox" > name="q3a[b]" value="b" /> B- It\'s Free <br /> > <input type="checkbox" > name="q3a[c]" value="c" /> C- It supports > different Databases <br /> > <input type="checkbox" > name="q3a[d]" value="d" /> D- It\'s not > an Oriented Programming language <br /><br /> > <input type="submit" > name="sumbit" value="Question 4" />'; > $answer3_1 = 'a'; > $answer3_2 = 'b'; > $answer3_3 = 'c'; > > $question4 = '4- What does PHP stands for?<br /> > <input type="radio" > name="q4a" value="a" /> A- Perl Hypertext > Programming <br /> > <input type="radio" > name="q4a" value="b" /> B- Personal Home > Page <br /><br /> > <input type="submit" > name="sumbit" value="Question 5" />'; > $answer4 = 'b'; > > $question5 = '5- Who created PHP?<br /> > <input type="radio" > name="q5a" value="a" /> A- Andi Gutmans <br /> > <input type="radio" > name="q5a" value="b" /> B- Zeev Suraski <br /> > <input type="radio" > name="q5a" value="c" /> C- Rasmus Lerdorf <br /><br /> > <input type="submit" > name="sumbit" value="Results" />'; > $answer5 = 'c'; > ?> > > <html> > <head> > <title> > <?php > if(isset($_GET['question'])) { > echo "Question " . > $_GET['question']; > } else { > echo 'Instroctions'; > } > ?> > </title> > </head> > <body> > <?php > //if(isset($_GET['question'])) { > switch($_GET['question']) { > case '1': > echo '<form > action="test.php?question=2" method="post">' . > $question1 .'</form>'; > break; > > case '2': > echo '<form > action="test.php?question=3" method="post">' . > $question2 .'</form>'; > break; > > case '3': > echo '<form > action="test.php?question=4" method="post">' . > $question3 .'</form>'; > break; > > case '4': > echo '<form > action="test.php?question=5" method="post">' . > $question4 .'</form>'; > break; > > case '5': > echo '<form > action="test.php?question=Results" method="post">' . > $question5 .'</form>'; > break; > > case 'Results': > echo 'You results are: <br > /><br /><a href="test.php">Go to the > home page and do the test again!</a>'; > break; > > default: > echo 'Welcome to PHP simple > test, Please click on Start button > to begin you test. <br /> > <a > href="test.php?question=1">Click Here to Begin!</a>'; > break; > } > //} > ?> > </body> > </html> > > ================================================ > > > Thanks for your help guys! ^^ > > MuFei > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > You could do any one of the following: // set the GET if(!isset($_GET['question'])) { $_GET['question'] = 'default';} // OR, take the default out of the switch and put it in an else statement if(isset($_GET['question'])) { switch($_GET['question']) { case '1': echo '<form action="test.php?question=2" method="post">' . $question1 .'</form>'; break; case '2': echo '<form action="test.php?question=3" method="post">' . $question2 .'</form>'; break; case '3': echo '<form action="test.php?question=4" method="post">' . $question3 .'</form>'; break; case '4': echo '<form action="test.php?question=5" method="post">' . $question4 .'</form>'; break; case '5': echo '<form action="test.php?question=Results" method="post">' . $question5 .'</form>'; break; case 'Results': echo 'You results are: <br /><br /><a href="test.php">Go to the home page and do the test again!</a>'; break; default: echo 'We received an invalid option'; break; } } else { default: echo 'Welcome to PHP simple test, Please click on Start button to begin you test. <br /> <a href="test.php?question=1">Click Here to Begin!</a>'; } OR, disable E_NOTICE level warnings (the corresponding array value for an undefined index will be null): http://php.net/manual/en/errorfunc.configuration.php Adam -- Nephtali: PHP web framework that functions beautifully http://nephtaliproject.com
From: Ashley Sheridan on 21 May 2010 16:20 On Fri, 2010-05-21 at 16:18 -0400, Adam Richardson wrote: > On Fri, May 21, 2010 at 3:24 PM, MuFei <mufei4u(a)gmail.com> wrote: > > > Hi, > > I'm still new to PHP and everyday I learn something new. > > Today I was trying to make some script using the switch statement but > > I have some issue that I don't know how to get around it. > > It's a simple test script that contain only one file, it has some > > questions that I want only one question appear per time then go to the > > next question when clicking on the submit button, I used switch for > > that, but when I get the first page, I got a notice which says: > > Notice: Undefined index: question in path\test.php on line 56 > > So I used if(isset($_GET[''])) but then the default value of the > > switch does not show up in the first page and I get the first page > > blank. > > > > 1- Is there anyway that I can use the default value of the switch > > without getting the note? > > Or > > 2- Is there anyway that I can use the default value of the switch with > > the if(isset()) and show the first page? > > > > Here is the content of the script that I hope you can help me with: > > (please note that it's not finished yet and it's so simple) > > (The if(isset()) is commented) > > > > ================================================ > > > > <?php > > // List of test questions and their answers in variables > > $question1 = '1- What is PHP?<br /> > > <input type="radio" > > name="q1a" value="a" /> A- Software <br /> > > <input type="radio" > > name="q1a" value="b" /> B- Hypertext > > Preprocessor, Scripting Server side programming language <br /> > > <input type="radio" > > name="q1a" value="c" /> C- Client side > > programming language <br /><br /> > > <input type="submit" > > name="sumbit" value="Question 2" />'; > > $answer1 = 'b'; > > > > $question2 = '2- What is PHP used for?<br /> > > <input type="radio" > > name="q2a" value="a" /> A- For web <br /> > > <input type="radio" > > name="q2a" value="b" /> B- For Computers <br /> > > <input type="radio" > > name="q2a" value="c" /> C- For Designing <br /><br /> > > <input type="submit" > > name="sumbit" value="Question 3" />'; > > $answer2 = 'a'; > > > > $question3 = '3- What is good about PHP?<br /> > > <input type="checkbox" > > name="q3a[a]" value="a" /> A- It\'s > > Designed and created for the web <br /> > > <input type="checkbox" > > name="q3a[b]" value="b" /> B- It\'s Free <br /> > > <input type="checkbox" > > name="q3a[c]" value="c" /> C- It supports > > different Databases <br /> > > <input type="checkbox" > > name="q3a[d]" value="d" /> D- It\'s not > > an Oriented Programming language <br /><br /> > > <input type="submit" > > name="sumbit" value="Question 4" />'; > > $answer3_1 = 'a'; > > $answer3_2 = 'b'; > > $answer3_3 = 'c'; > > > > $question4 = '4- What does PHP stands for?<br /> > > <input type="radio" > > name="q4a" value="a" /> A- Perl Hypertext > > Programming <br /> > > <input type="radio" > > name="q4a" value="b" /> B- Personal Home > > Page <br /><br /> > > <input type="submit" > > name="sumbit" value="Question 5" />'; > > $answer4 = 'b'; > > > > $question5 = '5- Who created PHP?<br /> > > <input type="radio" > > name="q5a" value="a" /> A- Andi Gutmans <br /> > > <input type="radio" > > name="q5a" value="b" /> B- Zeev Suraski <br /> > > <input type="radio" > > name="q5a" value="c" /> C- Rasmus Lerdorf <br /><br /> > > <input type="submit" > > name="sumbit" value="Results" />'; > > $answer5 = 'c'; > > ?> > > > > <html> > > <head> > > <title> > > <?php > > if(isset($_GET['question'])) { > > echo "Question " . > > $_GET['question']; > > } else { > > echo 'Instroctions'; > > } > > ?> > > </title> > > </head> > > <body> > > <?php > > //if(isset($_GET['question'])) { > > switch($_GET['question']) { > > case '1': > > echo '<form > > action="test.php?question=2" method="post">' . > > $question1 .'</form>'; > > break; > > > > case '2': > > echo '<form > > action="test.php?question=3" method="post">' . > > $question2 .'</form>'; > > break; > > > > case '3': > > echo '<form > > action="test.php?question=4" method="post">' . > > $question3 .'</form>'; > > break; > > > > case '4': > > echo '<form > > action="test.php?question=5" method="post">' . > > $question4 .'</form>'; > > break; > > > > case '5': > > echo '<form > > action="test.php?question=Results" method="post">' . > > $question5 .'</form>'; > > break; > > > > case 'Results': > > echo 'You results are: <br > > /><br /><a href="test.php">Go to the > > home page and do the test again!</a>'; > > break; > > > > default: > > echo 'Welcome to PHP simple > > test, Please click on Start button > > to begin you test. <br /> > > <a > > href="test.php?question=1">Click Here to Begin!</a>'; > > break; > > } > > //} > > ?> > > </body> > > </html> > > > > ================================================ > > > > > > Thanks for your help guys! ^^ > > > > MuFei > > > > -- > > PHP General Mailing List (http://www.php.net/) > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > You could do any one of the following: > > // set the GET > if(!isset($_GET['question'])) { $_GET['question'] = 'default';} > > > > > > > > // OR, take the default out of the switch and put it in an else statement > if(isset($_GET['question'])) { > switch($_GET['question']) { > case '1': > echo '<form > action="test.php?question=2" method="post">' . > $question1 .'</form>'; > break; > > case '2': > echo '<form > action="test.php?question=3" method="post">' . > $question2 .'</form>'; > break; > > case '3': > echo '<form > action="test.php?question=4" method="post">' . > $question3 .'</form>'; > break; > > case '4': > echo '<form > action="test.php?question=5" method="post">' . > $question4 .'</form>'; > break; > > case '5': > echo '<form > action="test.php?question=Results" method="post">' . > $question5 .'</form>'; > break; > > case 'Results': > echo 'You results are: <br > /><br /><a href="test.php">Go to the > home page and do the test again!</a>'; > break; > > default: > echo 'We received an invalid > option'; > break; > } > } else { > default: > echo 'Welcome to PHP simple > test, Please click on Start button > to begin you test. <br /> > <a > href="test.php?question=1">Click Here to Begin!</a>'; > } > > > > OR, disable E_NOTICE level warnings (the corresponding array value for an > undefined index will be null): > http://php.net/manual/en/errorfunc.configuration.php > > Adam > I tend to do something like this: $question = (isset($_GET['question']))?$_GET['question']:'some default value here'; And then use the value of $question in the switch. On security: this is perfectly safe as long as you don't use the default: part of the switch statement to output the value of $question in an unsafe way. If you do need to use the value in some other way in default: then consider using some method to secure it first. If it's going into the database, use mysql_real_escape_string() on it. If it's being displayed, something like htmlspecialchars() should suffice. You won't need to do that for the pre-defined cases, as they are pre-defined, so you are already expecting those values. Thanks, Ash http://www.ashleysheridan.co.uk
From: MuFei on 21 May 2010 16:50 Thanks, Adam The first option (setting the GET) works great. I already know about taking the default out of the switch and putting it in an else statement, but I want to work with the default inside the switch. And of course I wanted to do it without turning off E_NOTICE warnings Thanks again for your help :) On Fri, May 21, 2010 at 11:18 PM, Adam Richardson <simpleshot(a)gmail.com> wrote: > On Fri, May 21, 2010 at 3:24 PM, MuFei <mufei4u(a)gmail.com> wrote: >> >> Hi, >> I'm still new to PHP and everyday I learn something new. >> Today I was trying to make some script using the switch statement but >> I have some issue that I don't know how to get around it. >> It's a simple test script that contain only one file, it has some >> questions that I want only one question appear per time then go to the >> next question when clicking on the submit button, I used switch for >> that, but when I get the first page, I got a notice which says: >> Notice: Undefined index: question in path\test.php on line 56 >> So I used if(isset($_GET[''])) but then the default value of the >> switch does not show up in the first page and I get the first page >> blank. >> >> 1- Is there anyway that I can use the default value of the switch >> without getting the note? >> Or >> 2- Is there anyway that I can use the default value of the switch with >> the if(isset()) and show the first page? >> >> Here is the content of the script that I hope you can help me with: >> (please note that it's not finished yet and it's so simple) >> (The if(isset()) is commented) >> >> ================================================ >> >> <?php >> // List of test questions and their answers in variables >> $question1 = '1- What is PHP?<br /> >> <input type="radio" >> name="q1a" value="a" /> A- Software <br /> >> <input type="radio" >> name="q1a" value="b" /> B- Hypertext >> Preprocessor, Scripting Server side programming language <br /> >> <input type="radio" >> name="q1a" value="c" /> C- Client side >> programming language <br /><br /> >> <input type="submit" >> name="sumbit" value="Question 2" />'; >> $answer1 = 'b'; >> >> $question2 = '2- What is PHP used for?<br /> >> <input type="radio" >> name="q2a" value="a" /> A- For web <br /> >> <input type="radio" >> name="q2a" value="b" /> B- For Computers <br /> >> <input type="radio" >> name="q2a" value="c" /> C- For Designing <br /><br /> >> <input type="submit" >> name="sumbit" value="Question 3" />'; >> $answer2 = 'a'; >> >> $question3 = '3- What is good about PHP?<br /> >> <input type="checkbox" >> name="q3a[a]" value="a" /> A- It\'s >> Designed and created for the web <br /> >> <input type="checkbox" >> name="q3a[b]" value="b" /> B- It\'s Free <br /> >> <input type="checkbox" >> name="q3a[c]" value="c" /> C- It supports >> different Databases <br /> >> <input type="checkbox" >> name="q3a[d]" value="d" /> D- It\'s not >> an Oriented Programming language <br /><br /> >> <input type="submit" >> name="sumbit" value="Question 4" />'; >> $answer3_1 = 'a'; >> $answer3_2 = 'b'; >> $answer3_3 = 'c'; >> >> $question4 = '4- What does PHP stands for?<br /> >> <input type="radio" >> name="q4a" value="a" /> A- Perl Hypertext >> Programming <br /> >> <input type="radio" >> name="q4a" value="b" /> B- Personal Home >> Page <br /><br /> >> <input type="submit" >> name="sumbit" value="Question 5" />'; >> $answer4 = 'b'; >> >> $question5 = '5- Who created PHP?<br /> >> <input type="radio" >> name="q5a" value="a" /> A- Andi Gutmans <br /> >> <input type="radio" >> name="q5a" value="b" /> B- Zeev Suraski <br /> >> <input type="radio" >> name="q5a" value="c" /> C- Rasmus Lerdorf <br /><br /> >> <input type="submit" >> name="sumbit" value="Results" />'; >> $answer5 = 'c'; >> ?> >> >> <html> >> <head> >> <title> >> <?php >> if(isset($_GET['question'])) { >> echo "Question " . >> $_GET['question']; >> } else { >> echo 'Instroctions'; >> } >> ?> >> </title> >> </head> >> <body> >> <?php >> //if(isset($_GET['question'])) { >> switch($_GET['question']) { >> case '1': >> echo '<form >> action="test.php?question=2" method="post">' . >> $question1 .'</form>'; >> break; >> >> case '2': >> echo '<form >> action="test.php?question=3" method="post">' . >> $question2 .'</form>'; >> break; >> >> case '3': >> echo '<form >> action="test.php?question=4" method="post">' . >> $question3 .'</form>'; >> break; >> >> case '4': >> echo '<form >> action="test.php?question=5" method="post">' . >> $question4 .'</form>'; >> break; >> >> case '5': >> echo '<form >> action="test.php?question=Results" method="post">' . >> $question5 .'</form>'; >> break; >> >> case 'Results': >> echo 'You results are: <br >> /><br /><a href="test.php">Go to the >> home page and do the test again!</a>'; >> break; >> >> default: >> echo 'Welcome to PHP simple >> test, Please click on Start button >> to begin you test. <br /> >> <a >> href="test.php?question=1">Click Here to Begin!</a>'; >> break; >> } >> //} >> ?> >> </body> >> </html> >> >> ================================================ >> >> >> Thanks for your help guys! ^^ >> >> MuFei >> >> -- >> PHP General Mailing List (http://www.php.net/) >> To unsubscribe, visit: http://www.php.net/unsub.php >> > > You could do any one of the following: > // set the GET > if(!isset($_GET['question'])) { $_GET['question'] = 'default';} > > > > > > > // OR, take the default out of the switch and put it in an else statement > if(isset($_GET['question'])) { > switch($_GET['question']) { > case '1': > echo '<form > action="test.php?question=2" method="post">' . > $question1 .'</form>'; > break; > > case '2': > echo '<form > action="test.php?question=3" method="post">' . > $question2 .'</form>'; > break; > > case '3': > echo '<form > action="test.php?question=4" method="post">' . > $question3 .'</form>'; > break; > > case '4': > echo '<form > action="test.php?question=5" method="post">' . > $question4 .'</form>'; > break; > > case '5': > echo '<form > action="test.php?question=Results" method="post">' . > $question5 .'</form>'; > break; > > case 'Results': > echo 'You results are: <br > /><br /><a href="test.php">Go to the > home page and do the test again!</a>'; > break; > > default: > echo 'We received an invalid > option'; > break; > } > } else { > default: > echo 'Welcome to PHP simple > test, Please click on Start button > to begin you test. <br /> > <a > href="test.php?question=1">Click Here to Begin!</a>'; > } > > > OR, disable E_NOTICE level warnings (the corresponding array value for an > undefined index will be null): > http://php.net/manual/en/errorfunc.configuration.php > Adam > -- > Nephtali: PHP web framework that functions beautifully > http://nephtaliproject.com >
From: MuFei on 21 May 2010 17:02
Hi Ashley, Your way works also great, But I have some question thought: When I only use the first half of the code you suggested: $question = (isset($_GET['question'])); then use the $question in the switch it works as I want it. If I use the whole code( $question = (isset($_GET['question']))?$_GET['question']:'some default value here';), the results also are the same. My question is: What is the code from the "?"sign to the end for? Are you pointing to use that in the url? And the value that I'll put it there is to be used in the url? or you mean something else? I'm asking this because as I said before it works with the first half of the code just as it works with the full code. Sorry, but I'm a little bit confused as there are still a lot of things which I don't know about yet ^^ Thanks again, Ashley On Fri, May 21, 2010 at 11:20 PM, Ashley Sheridan <ash(a)ashleysheridan.co.uk> wrote: > > On Fri, 2010-05-21 at 16:18 -0400, Adam Richardson wrote: > > On Fri, May 21, 2010 at 3:24 PM, MuFei <mufei4u(a)gmail.com> wrote: > > > Hi, > > I'm still new to PHP and everyday I learn something new. > > Today I was trying to make some script using the switch statement but > > I have some issue that I don't know how to get around it. > > It's a simple test script that contain only one file, it has some > > questions that I want only one question appear per time then go to the > > next question when clicking on the submit button, I used switch for > > that, but when I get the first page, I got a notice which says: > > Notice: Undefined index: question in path\test.php on line 56 > > So I used if(isset($_GET[''])) but then the default value of the > > switch does not show up in the first page and I get the first page > > blank. > > > > 1- Is there anyway that I can use the default value of the switch > > without getting the note? > > Or > > 2- Is there anyway that I can use the default value of the switch with > > the if(isset()) and show the first page? > > > > Here is the content of the script that I hope you can help me with: > > (please note that it's not finished yet and it's so simple) > > (The if(isset()) is commented) > > > > ================================================ > > > > <?php > > // List of test questions and their answers in variables > > $question1 = '1- What is PHP?<br /> > > <input type="radio" > > name="q1a" value="a" /> A- Software <br /> > > <input type="radio" > > name="q1a" value="b" /> B- Hypertext > > Preprocessor, Scripting Server side programming language <br /> > > <input type="radio" > > name="q1a" value="c" /> C- Client side > > programming language <br /><br /> > > <input type="submit" > > name="sumbit" value="Question 2" />'; > > $answer1 = 'b'; > > > > $question2 = '2- What is PHP used for?<br /> > > <input type="radio" > > name="q2a" value="a" /> A- For web <br /> > > <input type="radio" > > name="q2a" value="b" /> B- For Computers <br /> > > <input type="radio" > > name="q2a" value="c" /> C- For Designing <br /><br /> > > <input type="submit" > > name="sumbit" value="Question 3" />'; > > $answer2 = 'a'; > > > > $question3 = '3- What is good about PHP?<br /> > > <input type="checkbox" > > name="q3a[a]" value="a" /> A- It\'s > > Designed and created for the web <br /> > > <input type="checkbox" > > name="q3a[b]" value="b" /> B- It\'s Free <br /> > > <input type="checkbox" > > name="q3a[c]" value="c" /> C- It supports > > different Databases <br /> > > <input type="checkbox" > > name="q3a[d]" value="d" /> D- It\'s not > > an Oriented Programming language <br /><br /> > > <input type="submit" > > name="sumbit" value="Question 4" />'; > > $answer3_1 = 'a'; > > $answer3_2 = 'b'; > > $answer3_3 = 'c'; > > > > $question4 = '4- What does PHP stands for?<br /> > > <input type="radio" > > name="q4a" value="a" /> A- Perl Hypertext > > Programming <br /> > > <input type="radio" > > name="q4a" value="b" /> B- Personal Home > > Page <br /><br /> > > <input type="submit" > > name="sumbit" value="Question 5" />'; > > $answer4 = 'b'; > > > > $question5 = '5- Who created PHP?<br /> > > <input type="radio" > > name="q5a" value="a" /> A- Andi Gutmans <br /> > > <input type="radio" > > name="q5a" value="b" /> B- Zeev Suraski <br /> > > <input type="radio" > > name="q5a" value="c" /> C- Rasmus Lerdorf <br /><br /> > > <input type="submit" > > name="sumbit" value="Results" />'; > > $answer5 = 'c'; > > ?> > > > > <html> > > <head> > > <title> > > <?php > > if(isset($_GET['question'])) { > > echo "Question " . > > $_GET['question']; > > } else { > > echo 'Instroctions'; > > } > > ?> > > </title> > > </head> > > <body> > > <?php > > //if(isset($_GET['question'])) { > > switch($_GET['question']) { > > case '1': > > echo '<form > > action="test.php?question=2" method="post">' . > > $question1 .'</form>'; > > break; > > > > case '2': > > echo '<form > > action="test.php?question=3" method="post">' . > > $question2 .'</form>'; > > break; > > > > case '3': > > echo '<form > > action="test.php?question=4" method="post">' . > > $question3 .'</form>'; > > break; > > > > case '4': > > echo '<form > > action="test.php?question=5" method="post">' . > > $question4 .'</form>'; > > break; > > > > case '5': > > echo '<form > > action="test.php?question=Results" method="post">' . > > $question5 .'</form>'; > > break; > > > > case 'Results': > > echo 'You results are: <br > > /><br /><a href="test.php">Go to the > > home page and do the test again!</a>'; > > break; > > > > default: > > echo 'Welcome to PHP simple > > test, Please click on Start button > > to begin you test. <br /> > > <a > > href="test.php?question=1">Click Here to Begin!</a>'; > > break; > > } > > //} > > ?> > > </body> > > </html> > > > > ================================================ > > > > > > Thanks for your help guys! ^^ > > > > MuFei > > > > -- > > PHP General Mailing List (http://www.php.net/) > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > > You could do any one of the following: > > // set the GET > if(!isset($_GET['question'])) { $_GET['question'] = 'default';} > > > > > > > > // OR, take the default out of the switch and put it in an else statement > if(isset($_GET['question'])) { > switch($_GET['question']) { > case '1': > echo '<form > action="test.php?question=2" method="post">' . > $question1 .'</form>'; > break; > > case '2': > echo '<form > action="test.php?question=3" method="post">' . > $question2 .'</form>'; > break; > > case '3': > echo '<form > action="test.php?question=4" method="post">' . > $question3 .'</form>'; > break; > > case '4': > echo '<form > action="test.php?question=5" method="post">' . > $question4 .'</form>'; > break; > > case '5': > echo '<form > action="test.php?question=Results" method="post">' . > $question5 .'</form>'; > break; > > case 'Results': > echo 'You results are: <br > /><br /><a href="test.php">Go to the > home page and do the test again!</a>'; > break; > > default: > echo 'We received an invalid > option'; > break; > } > } else { > default: > echo 'Welcome to PHP simple > test, Please click on Start button > to begin you test. <br /> > <a > href="test.php?question=1">Click Here to Begin!</a>'; > } > > > > OR, disable E_NOTICE level warnings (the corresponding array value for an > undefined index will be null): > http://php.net/manual/en/errorfunc.configuration.php > > Adam > > > I tend to do something like this: > > $question = (isset($_GET['question']))?$_GET['question']:'some default value here'; > > And then use the value of $question in the switch. > > On security: this is perfectly safe as long as you don't use the default: part of the switch statement to output the value of $question in an unsafe way. If you do need to use the value in some other way in default: then consider using some method to secure it first. If it's going into the database, use mysql_real_escape_string() on it. If it's being displayed, something like htmlspecialchars() should suffice. You won't need to do that for the pre-defined cases, as they are pre-defined, so you are already expecting those values. > > Thanks, > Ash > http://www.ashleysheridan.co.uk > > |