This is a discussion on Validate variables w/out empty within the PHP Language forums, part of the PHP Programming Forums category; I have a working couple of pages (form submits 2 variables to the second page using GET). page1 has two ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
I have a working couple of pages (form submits 2 variables to the second
page using GET). page1 has two dropdowns (generated from MySQL db). page2 retrieves info from the database accordingly, depending on the passed variables. Works fine. I need to ensure that the user has actually selected both variables on page1 from each of the drop down options on page1. empty() seems unable to do this because the default drop down options are "Select one", "Select the other". so on page2, if the user has NOT made any choices: echo "Values passed to GET method:<br />\n"; reset ($_GET); while (list ($key, $val) = each ($_GET)) { echo "$key => $val<br />\n"; } gives me: Select one Select the other I can not see how to use empty() or isset() to resolve this, so... Any ideas how to ensure the user has selected something from both options (without javascript)? I couldn't find anything in the manual but assume I'm looking in all the wrong places for this. Thank you. |
|
|||
|
pgt wrote:
> I have a working couple of pages (form submits 2 variables to the second > page using GET). > > page1 has two dropdowns (generated from MySQL db). > > page2 retrieves info from the database accordingly, depending on the passed > variables. Works fine. > > > I need to ensure that the user has actually selected both variables on page1 > from each of the drop down options on page1. > > empty() seems unable to do this because the default drop down options are > "Select one", "Select the other". > > so on page2, if the user has NOT made any choices: > > echo "Values passed to GET method:<br />\n"; > reset ($_GET); > while (list ($key, $val) = each ($_GET)) { > echo "$key => $val<br />\n"; > } > > gives me: > Select one > Select the other > > > I can not see how to use empty() or isset() to resolve this, so... > > Any ideas how to ensure the user has selected something from both options > (without javascript)? > > I couldn't find anything in the manual but assume I'm looking in all the > wrong places for this. > > Thank you. > > > > > > Some code would help... -- ================== Remove the "x" from my email address Jerry Stuckle JDS Computer Training Corp. jstucklex@attglobal.net ================== |
|
|||
|
On Wed, 31 Oct 2007 23:01:45 +0100, pgt <pgtnot@gmail.not> wrote:
> I have a working couple of pages (form submits 2 variables to the second > page using GET). > > page1 has two dropdowns (generated from MySQL db). > > page2 retrieves info from the database accordingly, depending on the > passed > variables. Works fine. > > > I need to ensure that the user has actually selected both variables on > page1 > from each of the drop down options on page1. > > empty() seems unable to do this because the default drop down options are > "Select one", "Select the other". > > so on page2, if the user has NOT made any choices: > > echo "Values passed to GET method:<br />\n"; > reset ($_GET); > while (list ($key, $val) = each ($_GET)) { > echo "$key => $val<br />\n"; > } > > gives me: > Select one > Select the other > > > I can not see how to use empty() or isset() to resolve this, so... > > Any ideas how to ensure the user has selected something from both options > (without javascript)? > > I couldn't find anything in the manual but assume I'm looking in all the > wrong places for this. Give the option a value 0 (well, it's more transparant/reliably checked then for the string 'Select one', and check if(!isset($_GET['option1']) || $_GET['option1'] = 0) echo 'Please select an option.'; Or you could 'whitelist' options. So you have an array of possible options, and check: $array = array(...); if(!isset($_GET['option1']) || !in_array($_GET['option1'],$array)) echo 'Please select.'; -- Rik Wasmus |
|
|||
|
"Rik Wasmus" <luiheidsgoeroe@hotmail.com> wrote in message news:op.t0203pi85bnjuv@metallium.lan... On Wed, 31 Oct 2007 23:01:45 +0100, pgt <pgtnot@gmail.not> wrote: > I have a working couple of pages (form submits 2 variables to the second > page using GET). > > page1 has two dropdowns (generated from MySQL db). > > page2 retrieves info from the database accordingly, depending on the > passed > variables. Works fine. > > > I need to ensure that the user has actually selected both variables on > page1 > from each of the drop down options on page1. > > empty() seems unable to do this because the default drop down options are > "Select one", "Select the other". > > so on page2, if the user has NOT made any choices: > > echo "Values passed to GET method:<br />\n"; > reset ($_GET); > while (list ($key, $val) = each ($_GET)) { > echo "$key => $val<br />\n"; > } > > gives me: > Select one > Select the other > > > I can not see how to use empty() or isset() to resolve this, so... > > Any ideas how to ensure the user has selected something from both options > (without javascript)? > > I couldn't find anything in the manual but assume I'm looking in all the > wrong places for this. Give the option a value 0 (well, it's more transparant/reliably checked then for the string 'Select one', and check if(!isset($_GET['option1']) || $_GET['option1'] = 0) echo 'Please select an option.'; Still missing something here then: page1 <select name="this"> <option value="0">Select one</option> </select> <select name="that"> <option value="0">Select the other</option> </select> page2 if (!isset($_GET['var1']) || $_GET['var1'] = "0") { echo 'Go back and select the first choice.'; } if (!isset($_GET['var2']) || $_GET['var2'] = "0") { echo 'Go back and select your second choice.'; } What am I missing with this please? Thanks for any help. |
|
|||
|
pgt wrote:
> "Rik Wasmus" <luiheidsgoeroe@hotmail.com> wrote in message > news:op.t0203pi85bnjuv@metallium.lan... > On Wed, 31 Oct 2007 23:01:45 +0100, pgt <pgtnot@gmail.not> wrote: > >> I have a working couple of pages (form submits 2 variables to the second >> page using GET). >> >> page1 has two dropdowns (generated from MySQL db). >> >> page2 retrieves info from the database accordingly, depending on the >> passed >> variables. Works fine. >> >> >> I need to ensure that the user has actually selected both variables on >> page1 >> from each of the drop down options on page1. >> >> empty() seems unable to do this because the default drop down options are >> "Select one", "Select the other". >> >> so on page2, if the user has NOT made any choices: >> >> echo "Values passed to GET method:<br />\n"; >> reset ($_GET); >> while (list ($key, $val) = each ($_GET)) { >> echo "$key => $val<br />\n"; >> } >> >> gives me: >> Select one >> Select the other >> >> >> I can not see how to use empty() or isset() to resolve this, so... >> >> Any ideas how to ensure the user has selected something from both options >> (without javascript)? >> >> I couldn't find anything in the manual but assume I'm looking in all the >> wrong places for this. > > > Give the option a value 0 (well, it's more transparant/reliably checked > then for the string 'Select one', and check if(!isset($_GET['option1']) || > $_GET['option1'] = 0) echo 'Please select an option.'; > > > > > Still missing something here then: > > page1 > <select name="this"> > <option value="0">Select one</option> > </select> > <select name="that"> > <option value="0">Select the other</option> > </select> > > > page2 > if (!isset($_GET['var1']) || $_GET['var1'] = "0") > { echo 'Go back and select the first choice.'; } > > if (!isset($_GET['var2']) || $_GET['var2'] = "0") > { echo 'Go back and select your second choice.'; } > > > What am I missing with this please? > > Thanks for any help. > > if (!isset($_GET['var1']) || $_GET['var1'] == "0") { echo 'Go back and select the first choice.'; } if (!isset($_GET['var2']) || $_GET['var2'] == "0") { echo 'Go back and select your second choice.'; } -- ================== Remove the "x" from my email address Jerry Stuckle JDS Computer Training Corp. jstucklex@attglobal.net ================== |
|
|||
|
pgt wrote:
> "Rik Wasmus" <luiheidsgoeroe@hotmail.com> wrote in message > news:op.t0203pi85bnjuv@metallium.lan... > On Wed, 31 Oct 2007 23:01:45 +0100, pgt <pgtnot@gmail.not> wrote: > >> I have a working couple of pages (form submits 2 variables to the second >> page using GET). >> >> page1 has two dropdowns (generated from MySQL db). >> >> page2 retrieves info from the database accordingly, depending on the >> passed >> variables. Works fine. >> >> >> I need to ensure that the user has actually selected both variables on >> page1 >> from each of the drop down options on page1. >> >> empty() seems unable to do this because the default drop down options are >> "Select one", "Select the other". >> >> so on page2, if the user has NOT made any choices: >> >> echo "Values passed to GET method:<br />\n"; >> reset ($_GET); >> while (list ($key, $val) = each ($_GET)) { >> echo "$key => $val<br />\n"; >> } >> >> gives me: >> Select one >> Select the other >> >> >> I can not see how to use empty() or isset() to resolve this, so... >> >> Any ideas how to ensure the user has selected something from both options >> (without javascript)? >> >> I couldn't find anything in the manual but assume I'm looking in all the >> wrong places for this. > > > Give the option a value 0 (well, it's more transparant/reliably checked > then for the string 'Select one', and check if(!isset($_GET['option1']) || > $_GET['option1'] = 0) echo 'Please select an option.'; > > > > > Still missing something here then: > > page1 > <select name="this"> > <option value="0">Select one</option> > </select> > <select name="that"> > <option value="0">Select the other</option> > </select> > > > page2 > if (!isset($_GET['var1']) || $_GET['var1'] = "0") > { echo 'Go back and select the first choice.'; } > > if (!isset($_GET['var2']) || $_GET['var2'] = "0") > { echo 'Go back and select your second choice.'; } > > > What am I missing with this please? > > Thanks for any help. > > if (!isset($_GET['this']) || $_GET['this'] = "0") { echo 'Go back and select the first choice.'; } if (!isset($_GET['that']) || $_GET['that'] = "0") { echo 'Go back and select your second choice.'; } Norm |
|
|||
|
Norman Peelman wrote:
> pgt wrote: >> "Rik Wasmus" <luiheidsgoeroe@hotmail.com> wrote in message >> news:op.t0203pi85bnjuv@metallium.lan... >> On Wed, 31 Oct 2007 23:01:45 +0100, pgt <pgtnot@gmail.not> wrote: >> >>> I have a working couple of pages (form submits 2 variables to the second >>> page using GET). >>> >>> page1 has two dropdowns (generated from MySQL db). >>> >>> page2 retrieves info from the database accordingly, depending on the >>> passed >>> variables. Works fine. >>> >>> >>> I need to ensure that the user has actually selected both variables >>> on page1 >>> from each of the drop down options on page1. >>> >>> empty() seems unable to do this because the default drop down options >>> are >>> "Select one", "Select the other". >>> >>> so on page2, if the user has NOT made any choices: >>> >>> echo "Values passed to GET method:<br />\n"; >>> reset ($_GET); >>> while (list ($key, $val) = each ($_GET)) { >>> echo "$key => $val<br />\n"; >>> } >>> >>> gives me: >>> Select one >>> Select the other >>> >>> >>> I can not see how to use empty() or isset() to resolve this, so... >>> >>> Any ideas how to ensure the user has selected something from both >>> options >>> (without javascript)? >>> >>> I couldn't find anything in the manual but assume I'm looking in all the >>> wrong places for this. >> >> >> Give the option a value 0 (well, it's more transparant/reliably checked >> then for the string 'Select one', and check >> if(!isset($_GET['option1']) || >> $_GET['option1'] = 0) echo 'Please select an option.'; >> >> >> >> >> Still missing something here then: >> >> page1 >> <select name="this"> >> <option value="0">Select one</option> >> </select> >> <select name="that"> >> <option value="0">Select the other</option> >> </select> >> >> >> page2 >> if (!isset($_GET['var1']) || $_GET['var1'] = "0") >> { echo 'Go back and select the first choice.'; } >> >> if (!isset($_GET['var2']) || $_GET['var2'] = "0") >> { echo 'Go back and select your second choice.'; } >> >> >> What am I missing with this please? >> >> Thanks for any help. >> >> > if (!isset($_GET['this']) || $_GET['this'] == "0") { echo 'Go back and select the first choice.'; } if (!isset($_GET['that']) || $_GET['that'] == "0") { echo 'Go back and select your second choice.'; } '==' fixed... Norm |
|
|||
|
"Jerry Stuckle" <jstucklex@attglobal.net> wrote in message news:YZ-dndstE9gcrLTanZ2dnUVZ_qXinZ2d@comcast.com... > pgt wrote: >> "Rik Wasmus" <luiheidsgoeroe@hotmail.com> wrote in message >> news:op.t0203pi85bnjuv@metallium.lan... >> On Wed, 31 Oct 2007 23:01:45 +0100, pgt <pgtnot@gmail.not> wrote: >> >>> I have a working couple of pages (form submits 2 variables to the second >>> page using GET). >>> >>> page1 has two dropdowns (generated from MySQL db). >>> >>> page2 retrieves info from the database accordingly, depending on the >>> passed >>> variables. Works fine. >>> >>> >>> I need to ensure that the user has actually selected both variables on >>> page1 >>> from each of the drop down options on page1. >>> >>> empty() seems unable to do this because the default drop down options >>> are >>> "Select one", "Select the other". >>> >>> so on page2, if the user has NOT made any choices: >>> >>> echo "Values passed to GET method:<br />\n"; >>> reset ($_GET); >>> while (list ($key, $val) = each ($_GET)) { >>> echo "$key => $val<br />\n"; >>> } >>> >>> gives me: >>> Select one >>> Select the other >>> >>> >>> I can not see how to use empty() or isset() to resolve this, so... >>> >>> Any ideas how to ensure the user has selected something from both >>> options >>> (without javascript)? >>> >>> I couldn't find anything in the manual but assume I'm looking in all the >>> wrong places for this. >> >> >> Give the option a value 0 (well, it's more transparant/reliably checked >> then for the string 'Select one', and check if(!isset($_GET['option1']) >> || >> $_GET['option1'] = 0) echo 'Please select an option.'; >> >> >> >> >> Still missing something here then: >> >> page1 >> <select name="this"> >> <option value="0">Select one</option> >> </select> >> <select name="that"> >> <option value="0">Select the other</option> >> </select> >> >> >> page2 >> if (!isset($_GET['var1']) || $_GET['var1'] = "0") >> { echo 'Go back and select the first choice.'; } >> >> if (!isset($_GET['var2']) || $_GET['var2'] = "0") >> { echo 'Go back and select your second choice.'; } >> >> >> What am I missing with this please? >> >> Thanks for any help. >> >> > if (!isset($_GET['var1']) || $_GET['var1'] == "0") > { echo 'Go back and select the first choice.'; } > > if (!isset($_GET['var2']) || $_GET['var2'] == "0") > { echo 'Go back and select your second choice.'; } > Arrh - Comparison operator :-) Thanks very much all. It's appreciated. |
|
|||
|
pgt wrote:
> "Jerry Stuckle" <jstucklex@attglobal.net> wrote in message > news:YZ-dndstE9gcrLTanZ2dnUVZ_qXinZ2d@comcast.com... >> pgt wrote: >>> "Rik Wasmus" <luiheidsgoeroe@hotmail.com> wrote in message >>> news:op.t0203pi85bnjuv@metallium.lan... >>> On Wed, 31 Oct 2007 23:01:45 +0100, pgt <pgtnot@gmail.not> wrote: >>> >>>> I have a working couple of pages (form submits 2 variables to the second >>>> page using GET). >>>> >>>> page1 has two dropdowns (generated from MySQL db). >>>> >>>> page2 retrieves info from the database accordingly, depending on the >>>> passed >>>> variables. Works fine. >>>> >>>> >>>> I need to ensure that the user has actually selected both variables on >>>> page1 >>>> from each of the drop down options on page1. >>>> >>>> empty() seems unable to do this because the default drop down options >>>> are >>>> "Select one", "Select the other". >>>> >>>> so on page2, if the user has NOT made any choices: >>>> >>>> echo "Values passed to GET method:<br />\n"; >>>> reset ($_GET); >>>> while (list ($key, $val) = each ($_GET)) { >>>> echo "$key => $val<br />\n"; >>>> } >>>> >>>> gives me: >>>> Select one >>>> Select the other >>>> >>>> >>>> I can not see how to use empty() or isset() to resolve this, so... >>>> >>>> Any ideas how to ensure the user has selected something from both >>>> options >>>> (without javascript)? >>>> >>>> I couldn't find anything in the manual but assume I'm looking in all the >>>> wrong places for this. >>> >>> Give the option a value 0 (well, it's more transparant/reliably checked >>> then for the string 'Select one', and check if(!isset($_GET['option1']) >>> || >>> $_GET['option1'] = 0) echo 'Please select an option.'; >>> >>> >>> >>> >>> Still missing something here then: >>> >>> page1 >>> <select name="this"> >>> <option value="0">Select one</option> >>> </select> >>> <select name="that"> >>> <option value="0">Select the other</option> >>> </select> >>> >>> >>> page2 >>> if (!isset($_GET['var1']) || $_GET['var1'] = "0") >>> { echo 'Go back and select the first choice.'; } >>> >>> if (!isset($_GET['var2']) || $_GET['var2'] = "0") >>> { echo 'Go back and select your second choice.'; } >>> >>> >>> What am I missing with this please? >>> >>> Thanks for any help. >>> >>> >> if (!isset($_GET['var1']) || $_GET['var1'] == "0") >> { echo 'Go back and select the first choice.'; } >> >> if (!isset($_GET['var2']) || $_GET['var2'] == "0") >> { echo 'Go back and select your second choice.'; } >> > > > Arrh - Comparison operator :-) > Thanks very much all. > > It's appreciated. > > > > > Don't know how many times I've done this over the past 20+ years - probably average at least once a week :-) -- ================== Remove the "x" from my email address Jerry Stuckle JDS Computer Training Corp. jstucklex@attglobal.net ================== |