Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2011, 19:10   #1
yfnf3
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 16
Вопрос Сортировка данных

Здравствуйте всем!
Подскажите, как отсортировать данные из таблицы по "наименованию" ($forms_naim), если:


PHP код:
 <?
 $ath 
mysql_query("SELECT * FROM forms_glav ORDER BY id_form LIMIT 0 , 30");
  if(
$ath)
  {
     while(
$form mysql_fetch_array($ath))
     {
     
//Тут у меня id'шники в таблице хранятся и меня интересует поле $form_id. Далее он берёт уже САМИ названия из той таблицы, где хранятся "наименования" нужные, которые необходимо отсортировать, но перед эти идёт условие Where! Как сортировать при таком условии? 
 
         
$form_id=htmlspecialchars($form['id_form']);
         
$form_id_pred=htmlspecialchars($form['id_predpr']);
         
$form_obr_s=htmlspecialchars($form['srok_poluch']);
         
$form_obr_po=htmlspecialchars($form['srok_otpr']);
         
$form_id_otd=htmlspecialchars($form['id_otd']);
         
$form_id_name=htmlspecialchars($form['id_name']);
        
        
     
//вот оно:   
         
$ath2 mysql_query("SELECT * FROM forms WHERE id_form=".$form_id);
         if(
$ath2)
         {
             while(
$forms mysql_fetch_array($ath2))
             {
         
$forms_id=htmlspecialchars($forms['id_form']);
         
$forms_naim=htmlspecialchars($forms['naimenov']);
             }
 
?>
yfnf3 вне форума Ответить с цитированием
Старый 15.03.2011, 19:13   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

PHP код:
  $ath2 mysql_query("SELECT * FROM forms WHERE id_form=$form_id order by $forms_naim desc"); 
или asc вместо desc ...смотря как надо 
ADSoft вне форума Ответить с цитированием
Старый 15.03.2011, 20:42   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от yfnf3 Посмотреть сообщение
Подскажите, как отсортировать данные из таблицы по "наименованию" ($forms_naim), если:
.....
$forms_naim=htmlspecialchars($forms['naimenov']); - это просто значение, содержащееся в поле naimenov - а не имя столбца
Цитата:
Сообщение от ADSoft Посмотреть сообщение
$ath2 = mysql_query("SELECT * FROM forms WHERE id_form=$form_id order by $forms_naim desc");
Странно, учитывая возможности сортировки ORDER BY:
Цитата:
В выражениях ORDER BY и GROUP BY для ссылок на столбцы, выбранные для вывода информации, можно использовать либо имена столбцов, либо их псевдонимы, либо их позиции (местоположения). Нумерация позиций столбцов начинается с 1:

mysql> SELECT college, region, seed FROM tournament
ORDER BY region, seed;
mysql> SELECT college, region AS r, seed AS s FROM tournament
ORDER BY r, s;
mysql> SELECT college, region, seed FROM tournament
ORDER BY 2, 3;
По сабжу - вероятно, просто нужно отсортировать по полю naimenov:
Цитата:
$ath2 = mysql_query("SELECT * FROM forms WHERE id_form=".$form_id." ORDER BY naimenov ASC");
ASC - по возрастанию значений naimenov (можно не указывать - по умолчанию)
DESC - по убыванию значений naimenov
Andkorol вне форума Ответить с цитированием
Старый 16.03.2011, 13:51   #4
yfnf3
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 16
По умолчанию

Попробовал все варианты, которые вы мне посоветовали, ни один не работает!

PHP код:
$ath2 mysql_query("SELECT * FROM forms WHERE id_form=".$form_id." ORDER BY naimenov ASC"); 
Это конечно логично, но почему же не выводит??
yfnf3 вне форума Ответить с цитированием
Старый 16.03.2011, 17:33   #5
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

как всегда неполные исходные данные.... все писали - насколько понимали и догадывались
.... еще раз объясните ЧТО вам надо
ADSoft вне форума Ответить с цитированием
Старый 17.03.2011, 18:02   #6
yfnf3
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 16
По умолчанию

Да все правильно советовали! Это конечно логично и сам так же записывал! На остальных форумах тоже спрашивал, вот что ответили:

PHP код:
$ath2 mysql_query("SELECT * FROM forms WHERE id_form=".$form_id." ORDER BY ....."); 
Не пойму в чём дело! Всё работает, данные отображаются, но не по алфавиту, как надо, т.е. не по полю "naimenov"

Что делает код вы, думаю и сами поняли!
Сначала делается выборка данных из общей таблицы, т.е. "forms_glav" и записываются в значения переменных те, поля, которые нужны далее для работы!
Вот:
PHP код:
<?php
$ath 
mysql_query("SELECT * FROM forms_glav");
 if(
$ath)
 {
     while(
$form mysql_fetch_array($ath))
     {
     
         
$form_id=htmlspecialchars($form['id_form']);
         
$form_id_pred=htmlspecialchars($form['id_predpr']);
         
$form_obr_s=htmlspecialchars($form['srok_poluch']);
         
$form_obr_po=htmlspecialchars($form['srok_otpr']);
         
$form_id_otd=htmlspecialchars($form['id_otd']);
         
$form_id_name=htmlspecialchars($form['id_name']);
//////////////////////////////////////////////////////////////////////////////
?>
Далее делается выборка из той таблицы в которой как раз и необходимо сделать сортировку!
PHP код:
<?php
$ath2 
mysql_query("SELECT * FROM forms WHERE id_form=".$form_id." ORDER BY naimenov");
         if(
$ath2)
         {
             while(
$forms mysql_fetch_array($ath2))
             {
         
$forms_id=htmlspecialchars($forms['id_form']);
         
$forms_naim=htmlspecialchars($forms['naimenov']);
             }
////////////////////////////////////////////////////////////////////////////////////
?>
Может я конечно ошибаюсь, но возможно он просто не может выполнить сортировку так как не понимает поля "naimenov"? Или что?
Я не знаю... Код, вроде логичен и работает, но сортировать не желает!
yfnf3 вне форума Ответить с цитированием
Старый 17.03.2011, 19:50   #7
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

если в структуре БД есть данное поле - оно будет сортироваться по нему....
другой вопрос - может будет делать не так как вы задумали )))) .... какого типа поле, какого характера там данные... приведите пример? пару строк... что выдает после сортировки и почему вы думаете что это не так?
ADSoft вне форума Ответить с цитированием
Старый 17.03.2011, 21:05   #8
yfnf3
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 16
По умолчанию

Ффф.jpg

Вот

Последний раз редактировалось yfnf3; 17.03.2011 в 21:08.
yfnf3 вне форума Ответить с цитированием
Старый 17.03.2011, 21:43   #9
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Скорее всего это происходит из-за настроек кодировки в MySQL - русские символы сортируются не по алфавиту, а по соответствующим кодам для каждого символа.

Подобные проблемы и их решения описаны здесь:
линк 1
линк 2
линк 3
Andkorol вне форума Ответить с цитированием
Старый 17.03.2011, 22:41   #10
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

и вообще попробуйте указать направление сортирвки то asc или desc
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка данных SlavaSH БД в Delphi 17 14.09.2009 13:32
сортировка данных (пересчет возможных вариантов комбинаций, перенос данных в таблицу) Vitalik85 Microsoft Office Excel 4 12.08.2009 00:30
сортировка данных oleg_sh Microsoft Office Excel 7 30.07.2009 20:54
Сортировка данных celovec Общие вопросы Delphi 1 01.08.2007 14:19
Сортировка данных Таня84 БД в Delphi 7 20.02.2007 15:56