Reputation: 1762
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
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
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