Drewdin
Drewdin

Reputation: 1762

Populating an HTML select list from a PHP array

I am trying to populate an HTML select list using an array of customer names. I am using the following code, but it does not seem to work. I have a function that query an SQL Server database and gets the names. I know that works fine as I am using it in other code, for some reason when I try to populate the select list it is coming up blank. Would it be better or more efficient to use a for loop? What is the best way to accomplish this?

<select name="customers">
    <?php
    $custNames = getCustomers();
    foreach($custNames as $customers){
        echo '<option value="' . $customers . '">' . $customers . '</option>';
    }
    ?>
</select>

Upvotes: 0

Views: 3967

Answers (2)

Marc B
Marc B

Reputation: 360872

Have you tried doing a print_r() or var_dump() of $custNames. There's nothing wrong with your foreach loop, so most likely the getCustomers() function is returning a non-array, or an empty array.

And of course, be very careful inserting text that way. A single double-quote in any of the customer names will hose your form:

<option value="John "The Unknown" Doe">John "The Unknown" Doe</option>

At least pass the value portion through htmlspecialchars() to make it a bit safer.

Upvotes: 3

Aether
Aether

Reputation: 364

A foreach loop is perfectly fine, provided that getCustomers() is returning an array (or more specifically, an object that implements the Traversable interface). You may wish to do a var_dump( $custNames ); to check that what you have is in fact an array, otherwise you'll probably want to change the getCustomers() function to return an array.

Upvotes: 0

Related Questions