[英]Building a select with optgroup from a SQL query
我有下表:
___Titles
| TIT_Id | TIT_en | TIT_Popularity |
| 1 | Sir | High |
| 2 | Madam | High |
| 2 | Emir | Low |
我該如何選擇?
<select>
<optgroup label="High">
<option value='1'>Sir</option>
<option value='2'>Madam</option>
</optgroup>
<optgroup label="Low">
<option value='3'>Emir</option>
</optgroup>
</select>
我試過了:
SELECT TIT_Id, TIT_en FROM ___Titles
GROUP BY TIT_Popularity
ORDER BY TIT_en ASC
謝謝。
這個怎么樣。 使用以下查詢來獲取結果:
SELECT * FROM ___Titles ORDER BY TIT_Popularity;
這實際上將根據您的結果將它們的TIT_Popularity
分組在一起。 然后,您可以像這樣遍歷它們:
echo "<select>\n";
$currentGroup = null;
foreach( $results as $result ) {
// start a new optgroup
if( $currentGroup == null || $result->TIT_Popularity != $currentGroup ) {
// end the previous group
if( $currentGroup != null ) {
echo "</optgroup\n>";
}
// start a new group
echo "<optgroup label='{$result->TIT_Popularity}'>\n";
$currentGroup = $result->TIT_Popularity;
}
echo "<option value='{$result->TIT_Id}'>{$result->TIT_en}</option>\n";
}
// end the last opt group
if( $currentGroup != null ) echo "</optgroup>\n";
echo "</select>\n";
或者,您可以只處理所選數據庫中的數組(因為查詢不在問題內),然后構建它們並在該新創建的數組上對其進行重新排序(前提是受歡迎程度高/低)。 考慮以下示例:
<?php
// dummy data, since no values are provided on the question
$values_from_db = array(
array('TIT_Id' => 3, 'TIT_en' => 'Emir', 'TIT_Popularity' => 'Low'),
array('TIT_Id' => 4, 'TIT_en' => 'Test', 'TIT_Popularity' => 'Low'),
array('TIT_Id' => 1, 'TIT_en' => 'Sir', 'TIT_Popularity' => 'High'),
array('TIT_Id' => 2, 'TIT_en' => 'Madam', 'TIT_Popularity' => 'High'),
);
$sorted_values = array();
foreach($values_from_db as $key => $value) {
$sorted_values[$value['TIT_Popularity']][] = array(
'TIT_Id' => $value['TIT_Id'],
'TIT_en' => $value['TIT_en'],
);
}
ksort($sorted_values);
?>
<select name="whatever">
<option selected disabled>Select Value</option>
<?php foreach($sorted_values as $key => $value): ?>
<optgroup label="<?php echo $key; ?>">
<?php foreach($value as $index => $element): ?>
<option value="<?php echo $element['TIT_Id']; ?>"><?php echo $element['TIT_en']; ?></option>
<?php endforeach; ?>
</optgroup>
<?php endforeach; ?>
</select>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.