可以在没有jquery的情况下索引组合框吗?

时间:2015-11-09 19:33:56

标签: php mysql combobox

我有一个带有mysql数据的简单组合框如下:

   | ID  |  sub_category  |  category  |
   +-----+----------------+------------|
   |  1  |       1        |  number    |
   +-----|----------------| -----------|
   |  2  |       2        |  number    |
   +-----|----------------| -----------|
   |  3  |       3        |  number    |
   +-----|----------------| -----------|
   |  4  |       A        |  letter    |
   +-----|----------------| -----------|
   |  5  |       B        |  letter    |
   +-----|----------------| -----------|
   |  6  |       @        |special char|
   +-----|----------------| -----------|

有没有办法在带有索引的组合框中列出它?像:

      Number
      1
  2
  3
  Letter
  A
  B
  Special Char
  &

仅使用Mysql和PHP。

2 个答案:

答案 0 :(得分:1)

Yes,只需编写PHP + MySQL代码即可生成此HTML。

对于您的SQL,您可能需要添加某种排序/优先级列,因为排序category asc or desc将无法获得您在示例中显示的顺序。

 <select multiple style="height:300px; width:150px;">
  <optgroup label="Number">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
  </optgroup>
  <optgroup label="Letter">
    <option value="4">A</option>
    <option value="5">B</option>
  </optgroup>
  <optgroup label="Special Char">
    <option value="6">&</option>
  </optgroup>
</select>

答案 1 :(得分:0)

假设你的MySQL连接被称为$mysqli,那么

$query = "SELECT sub_category, category FROM your_table";
$results = $mysqli->query($query);
$numbers = array();
$letters = array();
$specialChars = array();
while ($row = $results->fetch_assoc()) {
    switch ($row['category']) {
        case 'number':
        $numbers[] = $row['sub_category'];
        break;
        case 'letter':
        $letters[] = $row['sub_category'];
        break;
        case 'special char':
        $specialChars[] = $row['sub_category'];
        break;
    }
}
echo "Number\n";
foreach ($numbers as $number) {
    echo $number."\n";
}
echo "Letter\n";
foreach ($letters as $letter) {
    echo $letter."\n";
}
echo "Special Char\n";
foreach ($specialChars as $specialChar) {
    echo $specialChar."\n";
}

包括您需要的任何HTML格式。