skip to Main Content

I have a form with a drop-down box. The user selects an option from the dropdown box and hits submit. On submit, a new page opens up with a new form. The option that was selected is not being transferred to the next page. My form code is:

<form method="post" action="hero_modify_form.php">
    <div>
        <label>Select a hero to add or modify:  </label>
        <select name="heroname" type="input">
            <option></option>
<?php foreach ($data as $row): ?>
            <option>
            <?php echo $row['Hero_Name'] ?>
            </option>
<?php endforeach ?>
        </select>
    </div>
    <div>
        <button type="submit" name="heroname">Submit</button>
    </div>
</form>

The next page loads and displays some test variables at the top, but the variable from the POST is empty. My code on the page is

<?php
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
include('header.php');
$username = $_SESSION['username'];
echo $_POST['heroname'];
echo $username;
$test1 = "test 1, before the if statement";
echo $test1;

I get no errors on the page. The username variable and the test1 variable echo normally. The heroname variable doesn’t. I need help figuring out why the selection from the form is not transferring to the next page. Thanks in advance.

3

Answers


  1. Chosen as BEST ANSWER

    First, I removed the value attribute from select. Second, I added a value attribute to option. Third, I changed the name for the button to match the IF statement on the next page. The heroname is now being passed to the next page. I have a whole new set of errors now about undefied index, which I will research first, and if needed, post a new question. Thank you all for the help!!


    1. You have forgotten the value attribute from the <option> elements. Whatever is in the value attribute is what is returned to the server script.

    2. You have a type="input" attribute on the <select> element, that does not belong there.

    3. You have called the button <button type="submit" name="heroname"> which is also what you called the dropdown <select name="heroname"> you cannot use the same name more than once. So change the button name to something else like <button type="submit" name="submithero"> for example

    
    <form method="post" action="hero_modify_form.php">
        <div>
            <label>Select a hero to add or modify:  </label>
            <select name="heroname">
                <option></option>
    <?php foreach ($data as $row): ?>
                <option value="<?php echo $row['Hero_Name'] ?>">
                <?php echo $row['Hero_Name'] ?>
                </option>
    <?php endforeach ?>
            </select>
        </div>
        <div>
            <button type="submit" name="submithero">Submit</button>
        </div>
    </form>
    
    Login or Signup to reply.
  2. the button does not need a name attribute

    <form method="post" action="hero_modify_form.php">
            
                <div>
                    <label>Select a hero to add or modify:  </label>
                    <select name="heroname">
                        <option></option>
                        <?php foreach ($data as $row): ?>
                            <option value="<?php echo $row['Hero_Name'] ?>">
                                <?php echo $row['Hero_Name'] ?>
                            </option>
                        <?php endforeach ?>
                    </select>
                </div>
                <div>
                    <button type="submit">Submit</button>
                </div>
            </form>
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search