Reputation: 407
i'm looking vor a nice way to set the value of an html dynamic with php based on data from a database. Currently it looks like this:
<select class="form-control" name="displayNavigation" id="displayNavigation">
@if(isset($site['displayNavigation']) and $site['displayNavigation'] == 1)
<option value="1" selected>Yes</option>
<option value="0">No</option>
@elseif(isset($site['displayNavigation']) and $site['displayNavigation'] == 0)
<option value="1">Yes</option>
<option value="0" selected>No</option>
@else
<option value="1">Yes</option>
<option value="0">No</option>
@endif
</select>
I think that is not the right way to set the value for a select list with more then 10 options.
Is there another way to do this?
Upvotes: 2
Views: 165
Reputation: 4767
You can simply use the @if
condition inside the <option>
and set selected
attribute
<select class="form-control" name="displayNavigation" id="displayNavigation">
<option value="1" @if($site['displayNavigation'] == 1) selected @endif>Yes</option>
<option value="0" @if($site['displayNavigation'] == 0) selected @endif>No</option>
@endif
</select>
Upvotes: 2
Reputation: 7609
A PHP 7 answer using null coalescing operator ??
:
<select class="form-control" name="displayNavigation" id="displayNavigation">
<option value="1" <?php echo ($site['displayNavigation'] ?? 2) == 1 ? 'selected' : ''; ?>>Yes</option>
<option value="0" <?php echo ($site['displayNavigation'] ?? 2) == 0 ? 'selected' : ''; ?>>No</option>
</select>
If you are under PHP 7 just do the same using isset()
:
<select class="form-control" name="displayNavigation" id="displayNavigation">
<option value="1" <?php echo isset($site['displayNavigation']) && $site['displayNavigation'] == 1 ? 'selected' : ''; ?>>Yes</option>
<option value="0" <?php echo isset($site['displayNavigation']) && $site['displayNavigation'] == 0 ? 'selected' : ''; ?>>No</option>
</select>
Upvotes: 2
Reputation: 539
Give a try with below code if it helps for you
<select class="form-control" name="displayNavigation" id="displayNavigation">
<option value="1" @if(isset($site['displayNavigation']) and $site['displayNavigation'] == 1) selected @endif>Yes</option>
<option value="0" @if(isset($site['displayNavigation']) and $site['displayNavigation'] == 0) selected @endif>No</option>
</select>
Upvotes: 2
Reputation: 257
Your if-else statement needs to be modified . This code will solve your problem .
<select class="form-control" name="displayNavigation" id="displayNavigation">
<option value="1" <?php if(isset($site['displayNavigation']) and $site['displayNavigation'] == 1){?>selected<?php } ?>>Yes</option>
<option value="0" <?php if(isset($site['displayNavigation']) and $site['displayNavigation'] == 0){?>selected<?php } ?>>No</option>
</select>
Upvotes: 1