html - Take the name attribute of an option element and put it into a php variable

412

So I have an HTML dropdown that is created in php.

echo '<select id="myselect" name="myselect">';

    while($row = mysql_fetch_array($query)) {
        echo '<option value="'.$row['categories'].'" id="'.$row['categories'].'">'.$row['categories'].'</option>';
    }

    echo '</select>';

What I want to do is take the selected option and turn it into a variable so I can pass it to another php page.

968

Answer

Solution:

echo '<select id="myselect" name="myselect">';
    echo '<option value="make_selection" id="make_selection" name="make_selection">Choose Your Category</option>';

    while($row = mysql_fetch_array($query)) {
        echo '<option value="'.$row['categories'].'" id="'.$row['categories'].'">'.$row['categories'].'</option>';
    }

    echo '</select>';

Above that:

if($_POST){
    $selection = $_POST['make_selection'];
    //do something with $selection
    //possibly redirect user using header('Location: page.php');
}
698

Answer

Solution:

Just for your own knowledge, this isn't how php works. Once this script is ran, it displays on the users browser, and you won't be able to do anything else without them submitting the form, or sending an ajax request.

377

Answer

Solution:

Your PHP runs on the server. The resulting HTML/JavaScript is viewed by the user in their browser on their client PC. You need to communicate between the two over HTTP (e.g. via Ajax/JavaScript or with a full round-trip to the server). Simply send a request when the dropdown's value changes.

An answer that's any more specific would require an equivalently specific question.

404

Answer

Solution:

If you want the selected option to be passed to the next PHP page, you have to also assign aname attribute on theoption.

echo '<select id="myselect" name="myselect">';
while($row = mysql_fetch_array($query)) {
    echo '<option name="option[]" value="'.$row['categories'].'" id="'.$row['categories'].'">'.$row['categories'].'</option>';
    $i++;
}

echo '</select>';

Then on the receiving page:

if(isset($_POST['option'])) {
    // process here
    print_r($_POST['option']);
}

The[] means PHP will see all of the options as values in an array, therefore they can be iterated over.

Also, I would suggest using MySQLi, it stands for MySQL Improved.

People are also looking for solutions to the problem: php - How would you combine this wordpress shortcode template code?

Source

Didn't find the answer?

Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.

Ask a Question

Write quick answer

Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.

Similar questions

Find the answer in similar questions on our website.