Почему не работает сортировка по алфавиту MySQL 5+, PHP?

Есть таблица со строками:



Информация о таблице:



Далее код PHP:

/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .php.geshi_code {font-family:monospace;} .php.geshi_code .imp {font-weight: bold; color: red;} .php.geshi_code .kw1 {color: #b1b100;} .php.geshi_code .kw2 {color: #000000; font-weight: bold;} .php.geshi_code .kw3 {color: #990000;} .php.geshi_code .co1 {color: #666666; font-style: italic;} .php.geshi_code .co2 {color: #666666; font-style: italic;} .php.geshi_code .co3 {color: #0000cc; font-style: italic;} .php.geshi_code .co4 {color: #009933; font-style: italic;} .php.geshi_code .coMULTI {color: #666666; font-style: italic;} .php.geshi_code .es0 {color: #000099; font-weight: bold;} .php.geshi_code .es1 {color: #000099; font-weight: bold;} .php.geshi_code .es2 {color: #660099; font-weight: bold;} .php.geshi_code .es3 {color: #660099; font-weight: bold;} .php.geshi_code .es4 {color: #006699; font-weight: bold;} .php.geshi_code .es5 {color: #006699; font-weight: bold; font-style: italic;} .php.geshi_code .es6 {color: #009933; font-weight: bold;} .php.geshi_code .es_h {color: #000099; font-weight: bold;} .php.geshi_code .br0 {color: #009900;} .php.geshi_code .sy0 {color: #339933;} .php.geshi_code .sy1 {color: #000000; font-weight: bold;} .php.geshi_code .st0 {color: #0000ff;} .php.geshi_code .st_h {color: #0000ff;} .php.geshi_code .nu0 {color: #cc66cc;} .php.geshi_code .nu8 {color: #208080;} .php.geshi_code .nu12 {color: #208080;} .php.geshi_code .nu19 {color:#800080;} .php.geshi_code .me1 {color: #004000;} .php.geshi_code .me2 {color: #004000;} .php.geshi_code .re0 {color: #000088;} .php.geshi_code span.xtra { display:block; }
$link = mysqli_connect(RConf::Host, RConf::User, RConf::Pass, RConf::Name);
    if (!$link) {
      printf("Error: %sn", mysqli_connect_error());
      exit();
    }
    if (!mysqli_set_charset($link, "utf8")) {
      $err[] = "Ошибка при загрузке набора символов utf8: ". mysqli_error($link);
    } else {
      $arow['char'] = "Текущий набор символов: ".mysqli_character_set_name($link);
    }

    if(isset($_POST['tag']) && $_POST['tag']){

      $query = "SELECT `id`, `name` FROM `tags` WHERE `tags`.`type` = ".$part_site." ORDER BY `tags`.`name` ASC";

      if ($res = mysqli_query($link, $query)) {

        while($row = mysqli_fetch_assoc($res)){
          $arow['tags'][$row['id']] = $row['name'];
        }
        mysqli_free_result($res);

      }

    }

Сама база и таблицы в кодировке Utf8_general_ci, почему то не сортирует

1 ответов


Полагаю, с базой все Ок. Просто вы складываете результат в ассоциативный массив $arow['tags'][$row['id']], который не содержит ничего для сохранения исходной сортировки.
Если хотите сохранить результат для дальнейшего использования, можно сделать так:

while($row = mysqli_fetch_assoc($res)){
    array_push($arow['tags'], $row);
}

UPD Для сохранения порядка строк я имею в виду что-то типа такого:
$pos = 0;
while($row = mysqli_fetch_assoc($res)){
    $pos++;
    $arow['tags'][$pos] = $row['name'];
}

проверь содержимое таблицы - у тебя 3 поля в описании id | type | name, а в содержимом - только 2