簡體   English   中英

使用optgroup從SQL查詢中建立選擇

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM