0

I am trying to generate a PHP variable that can be used to generate select options on a website.

The php is currently as follows:

$sql_names = pg_query($dbconn, "SELECT id, name external_name FROM names);
    if (!$sql_names) {
      echo "Er\n";
      exit;
    }

    while ($row = pg_fetch_array($sql_names)) foreach($row as $a => $b){ $name_options = '<option value="' . $row[0] . '">' . $row[1] . '</option>';}

This is then called later on as follows:

<select name="NAMES[]">
        <?php echo $name_options; ?>
</select>

However it only returns 1 option when there should be 6.

Any suggestions?

1 Answer 1

1

the problem is that you are not append the results in the $name_options variable. This way you are returning only the last row. Try this:

$sql_names = pg_query($dbconn, "SELECT id, name external_name FROM names);
if (!$sql_names) {
    echo "Er\n";
    exit;
}
$name_options = ""; 
while ($row = pg_fetch_array($sql_names)){ 
    $name_options .= '<option value="' . $row[0] . '">' . $row[1] . '</option>';
}
Sign up to request clarification or add additional context in comments.

2 Comments

This almost worked, but it ended up returning 5 of each row! Solution seems to be: $sql_names = pg_query($dbconn, "SELECT id, name external_name FROM names); if (!$sql_names) { echo "Er\n"; exit; } while ($row = pg_fetch_array($sql_names)) $name_options .= '<option value="' . $row[0] . '">' . $row[1] . '</option>'; Just needed to get rid of the foreach!
Yes, I see it. I edited the answer but I think you could do that. Regards.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.