Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сортировка по названию 
:(
    Опции темы
tiras
Дата 20.10.2011, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



Добрый день!
Подскажите пож-та возможно ли сделать сортировку в базе по названию
есть база:  
структура базы
т.е на выходе д.б если я хочу выбрать Bratz, то показывает только эти записи в начале, а затем остальные 
что я не так делаю, сортировка не происходит(есть конечно записи и на английском языке и на русском, если просто по полю Proizvoditel сортировать, то сортировка происходит )



Код

$sort="pos";
                            if($_POST["sort"]=="1")$sort="price desc";
                            elseif($_POST["sort"]=="2")$sort="price asc";
                            elseif($_POST["sort"]=="3")$sort="vozrast asc";
                            elseif($_POST["sort"]=="4")$sort="proizvoditel asc";
                            elseif($_POST["sort"]=="<?=$data[$i]['proizvoditel']?>")$sort="proizvoditel asc";





Код

function get_catalog_data($razdel,$where,$sort){
    $arr = array();
    $result = mysql_query("select * from catalog where razdel='".$razdel."'  and ".$where." order by binary ".$sort);
    while($tmp = mysql_fetch_array($result)){
    $tmp["link"]="/pages/".$tmp["razdel"]."/".parseCatalogName($tmp["name"])."_id".$tmp["id"]."/";
      $arr[] = $tmp;
    }
    return $arr;
 }





Код

По производителю:
<form action="" method="post">

         <select name="sort">
         <?for($i=0;$i<count($data[$i]);$i++){?>
<option value="<?=$data[$i]["proizvoditel"]?>" <?if($_POST["sort"]=='<?=$data[$i]["proizvoditel"]?>')echo"selected";?> ><?=$data[$i]["proizvoditel"]?><br>

<?}?> 




PM MAIL   Вверх
ElGuapo
Дата 21.10.2011, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 1.7.2006

Репутация: нет
Всего: 3



Правильно ли я понял, что при выборе производителя нужно выдать сначала записи по этому производителю, а потом уже все остальные записи, удовлетворяющие условию? 

Тогда ORDER должен быть таким: 

Код

ORDER BY proizvoditel='Bratz' DESC, proizvoditel ASC

PM MAIL   Вверх
tiras
Дата 27.10.2011, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



Цитата(ElGuapo @ 21.10.2011,  02:05)
Правильно ли я понял, что при выборе производителя нужно выдать сначала записи по этому производителю, а потом уже все остальные записи, удовлетворяющие условию? 

Тогда ORDER должен быть таким: 

Код

ORDER BY proizvoditel='Bratz' DESC, proizvoditel ASC

да правильно, так конечно сортировка проходит, если указать конкретную запись в коде, но если указываю

Код

$result = mysql_query("select * from catalog where razdel='".$razdel."'  and ".$where." order by proizvoditel='".$proizvoditel."'  ".$sort);



к сожалению сортировка не происходит

PM MAIL   Вверх
bars80080
Дата 27.10.2011, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



Цитата(tiras @  27.10.2011,  11:12 Найти цитируемый пост)
$result = mysql_query("select * from catalog where razdel='".$razdel."'  and ".$where." order by proizvoditel='".$proizvoditel."'  ".$sort);

а что это? мы же без понятия, что у вас скрыто в $razdel, $where, $proizvoditel и особенно в $sort

приведите реальный запрос, который идёт в mysql


PM MAIL WWW   Вверх
tiras
Дата 27.10.2011, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



форма :

Код

<form action="" method="post">
<table>
<tr>
    <td valign="top">
     <select name="sort">
     
    
    <?for($i=0;$i<count($data[$i]);$i++){?>
<option value="<?=$data[$i]["proizvoditel"]?>" <?if($_POST["sort"]=="<?=$data[$i]['proizvoditel']?>")echo"selected";?> ><?=$data[$i]["proizvoditel"]?><br>

    
    <?}?> 
    </select>
     &nbsp;&nbsp;
     <input type="submit" name="submit" value="Отфильтровать" />    



Код

$text = get_text_data($current_id);
                            $sort="pos";
                            
                            if($_POST["sort"]=="1")$sort="proizvoditel asc";
                            $where="razdel='".$current_id."' ";
                           
                            $data = get_catalog_data($current_id,$where,$sort);
                            ob_start();
                            require "catalog.php";



и сама обработка

Код

function get_catalog_data($razdel,$where,$sort){
    $arr = array();
    
   $result = mysql_query("select * from catalog where razdel='".$razdel."'  and ".$where." order by proizvoditel='".$proizvoditel."' DESC, ".$sort);
    
$tmp = mysql_fetch_array($result);
    
    while($tmp = mysql_fetch_array($result)){
    $tmp["link"]="/pages/".$tmp["razdel"]."/".parseCatalogName($tmp["name"])."_id".$tmp["id"]."/";
      $arr[] = $tmp;
    }
    return $arr;
 }


Это сообщение отредактировал(а) tiras - 27.10.2011, 21:58
PM MAIL   Вверх
bars80080
Дата 27.10.2011, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



да причём здесь обработка. мы понятия не имеем, что у вас сидит в переменных. каков реальный запрос?

вместо
    
   $result = mysql_query("select * from catalog where razdel='".$razdel."'  and ".$where." order by proizvoditel='".$proizvoditel."' DESC, ".$sort);

напишите

    
Код

   $sql = "select * from catalog where razdel='".$razdel."'  and ".$where." order by proizvoditel='".$proizvoditel."' DESC, ".$sort;

var_dump($sql);

$result = mysql_query($sql);



PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0617 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.