I'm creating a album gallery and trying to pull the albums title from my database table and add the album titles to a select box.
The problem I'm having is it only grabs 1 title and not the rest.
Example select box of what is currently happening:
Example select box of what I need:
I need the value of the select box to contain the title of the Album because I plan on using it in another table. So the value cannot be an integer.
Here is my code:
<select name="album">
<?php
$db = DB::getInstance();
$album = "SELECT `album_id`,`album_date`,`album_title` FROM `albums` ORDER BY `album_date` DESC";
$query = $db->query($album);
foreach($query->results() as $alb){
?>
<option selected="selected" value="">Please Choose</option>
<option value="<?php echo escape($alb->album_title); ?>"><?php echo escape($alb->album_title); ?></option>
</select>
<?php } ?>
You need to create the loop correctly (assuming the query does yield some rows):
<?php
$db = DB::getInstance();
$album = "SELECT `album_id`,`album_date`,`album_title` FROM `albums` ORDER BY `album_date` DESC";
$query = $db->query($album);
?>
<select name="album">
<option selected="selected" value="" disabled>Please Choose</option>
<!-- just put the loop where it needs to be -->
<?php foreach($query->results() as $alb): ?>
<option value="<?php echo escape($alb->album_title); ?>"><?php echo escape($alb->album_title); ?></option>
<?php endforeach; ?>
</select>
The Please choose and the are INSIDE the foreach, so they are called multiple times.
Change it to this:
?>
<option selected="selected" value="">Please Choose</option>
<?php
foreach($query->results() as $alb){
?>
<option value="<?php echo escape($alb->album_title); ?>"><?php echo escape($alb->album_title); ?></option>
<?php } ?>
</select>