Home > Net >  PHP set dropdown value after page refresh
PHP set dropdown value after page refresh

Time:04-05

I'm having trouble setting the value of the dropdown after the form input refreshes the page. I can get the value but no matter what I try I'm unable to set the dropdown after the page refreshes. I've tried a number of different ideas I've found online too. I've tried both JavaScript and PHP solutions and all I can do is get the value but not set it. This is the code I have so far, which returns the drop down ID, I just need to know how to use it. I appreciate any help, thanks!

<?php
    $pdo = new PDO('mysql:host=localhost; dbname=db', 'root', 'password')'
    $sql = "SELECT divid, division FROM divisions ORDER BY division ASC";
    $stmt = $pdo->prepare($sql);
    $stmt->execute();
    $divs = $stmt->fetchAll();
?>

<form method="post">

<select id="divi" name="divisions">
    <?php foreach($divs as $div): ?>
    <option value="<?= $div['divid'];?>"><?= $div['division']; ?></option>
    <?php endforeach; ?>
</select>

<input type="submit" name="submit" value="Submit">
</form>

<?php
    if(isset($_POST['submit'])){
        if(!empty($_POST['divisions'])){
            $selected = $_POST['divisions'];
            echo 'Selected: " . $selected;
        } else {
            echo 'Select division.';
        }
    }
?>

CodePudding user response:

It's not very clear to me what you really want, however it looks like you want to select default:

<select id="divi" name="divisions">
    <?php foreach($divs as $div): ?>
        <option <?php echo ("mycondition ex: 'id == 1'") ? "selected" : NULL ?> value="<?= $div['divid'];?>"><?= $div['division']; ?></option>
    <?php endforeach; ?>
</select>

CodePudding user response:

You are simply missing any code that sets 'selected="selected"' in the HTML for the select field.

Also, your code is very hard to read so I've cleaned up the loop a little bit.

<form method="post">

<?php
echo '<select id="divid" name="divid">';
foreach ($divs as $div) {
    $selected = '';
    if (isset ($_POST['divid']) && ($_POST['divid'] == $div['divid'])) {
        $selected = 'selected="selected"';
    }
    echo '<option value="' . $div['divid'] . '" ' . $selected . '>' . $div['division'] . '</option>';
}
echo '</select>';
  • Related