From: MuFei on
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
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
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
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
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
>
>