Marlboro Goodluck
Marlboro Goodluck

Reputation: 299

php if statement html option value

Suppose you have the following html select statement

<select>
<option value="Newest">Newest</option>
<option value="Best Sellers">Best Sellers</option>
<option value="Alphabetical">Alphabetical</option>
</select>

Now I want to run a php if elseif statement that says,

if (option value = newest) {
// Run this
}
elseif ( option value = best sellers ) {
// Run this
}

etc. But I don't know what to put inside the if elseif statement. In other words instead of 'option value = newest' (which I know is incorrect), what can I put there so that if newest is selected it will execute the if statement, or if best sellers is selected it will execute the elseif statement?

Upvotes: 5

Views: 76783

Answers (4)

Unamata Sanatarai
Unamata Sanatarai

Reputation: 6637

I think the read-friendly version would be:

switch($option){
    case 'Newest':
        runNewestFunction();
    break;
    case 'Best Sellers':
        runBestSellersFunction();
    break;
    case 'Alphabetical':
        runAlphabeticalFunction();
    break;
    default:
        runValidationRequest();
}

also, please add the name attribute <select name="option">

Upvotes: 0

Keval Domadia
Keval Domadia

Reputation: 4763

Give name to your select.

<select name="selectedValue">
<option value="Newest">Newest</option>
<option value="Best Sellers">Best Sellers</option>
<option value="Alphabetical">Alphabetical</option>
</select>

in your PHP, you will do:

$_POST['selectedValue'];

if I were you, I would prefer a switch-case incase, there are more than 2 conditions.

Example:

switch($_POST['selectedValue']){
case 'Newest':
    // do Something for Newest
break;
case 'Best Sellers':
    // do Something for Best seller
break;
case 'Alphabetical':
    // do Something for Alphabetical
break;
default:
    // Something went wrong or form has been tampered.
}

Upvotes: 12

darkheir
darkheir

Reputation: 8950

First put a name on your select:

<select name="demo">
<option value="Newest">Newest</option>
<option value="Best Sellers">Best Sellers</option>
<option value="Alphabetical">Alphabetical</option>
</select>

Then

if ($_POST['demo'] === 'Newest') {
// Run this
}
elseif ( $_POST['demo'] === 'Best Sellers' ) {
// Run this
}

or

switch($_POST['demo']){
    case 'Newest' : 
        //some code;
        break;
    case 'Best Sellers':
        //some code;
        break;
    default:
        //some code if the post doesn't match anything
}

Upvotes: 6

Oswald
Oswald

Reputation: 31657

The <select> should have a name attribute, e.g <select name="sortorder">. You could then say

if ($_REQUEST['sortorder'] == 'Newest') {
  // TODO sortorder 'Newest' was selected.
}

If you know whether the form data is comming in via HTTP GET or HTTP POST, you could use $_GET['sortorder'] or $_POST['sortorder'] respectively.

Upvotes: 0

Related Questions