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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2015, 19:29   #1
arta42
 
Регистрация: 19.07.2015
Сообщений: 5
По умолчанию Подскажите пожалуйста как провести сортировку данных после выборки?

Подскажите пожалуйста как провести сортировку данных после выборки из таблицы?вот таблица которая проводит сортировку и выборку по возрасту http://dizarius.com/arta/word5.php но,после выборки сортирует опять всю таблицу а не выбранные данные,как сделать чтобы проводилось две сортировки одна при открытии таблицы а другая после выборки пользователей по возрасту?подскажите пожалуйста как решить этот вопрос,вот скрипт который отвечает за указанную таблицу
PHP код:

<form>
От<input type=text name=v1>
До<input type=text name=v2>
<br><br>
<input type=submit name=age value ="Подобрать">
</form>
<?php 
$con 
mysql_connect("localhost","........","........");
if (!
$con)
   {
   die(
'Could not connect: ' mysql_error());
   }
mysql_select_db("........"$con);
$sql mysql_query("SET CHARACTER SET cp1251_koi8");
$result mysql_query("SELECT * FROM users ORDER BY Fam,name");
mysql_query($order);
echo 
$myrow_comcont['title'];
echo 
$myrow_comcont['com'];
echo 
"<table border='1'>";
 
$key_array = array('Fam','Name','Otch','age','cvet');
$sort_array = array('asc','desc');
 
if (isset(
$_GET['key']))
{
    
$key=$_GET['key'];
    
$sort=$_GET['sort'];
}
else
{
    
$key='Fam';
    
$sort='desc';
}
 
if(
in_array($key$key_array) && in_array($sort$sort_array))
{
    
$query "SELECT * FROM users ORDER BY $key $sort ";
    
$result mysql_query($query);
}
else exit(
"неверный формат запроса!");  
 
if(
$sort=='asc')
{
   
$sort='desc';
   
$vid_sort=$sort_up;
}
else
{
   
$sort='asc';
   
$vid_sort=$sort_down;   
}
if (isset(
$_GET['age'])) {
        if (empty(
$_GET['v1']))  {echo 'Пустой запрос!';
            
$result mysql_query('select * from users ORDER BY');}
         else { 
$result mysql_query('select * from users WHERE age BETWEEN '.$_GET['v1'].' AND '.$_GET['v2']) or die(mysql_error());
    }
}
print 
"<table border = 1 align = center>";
print 
"<tr>
<th width='50'><a href=\"word5.php?key=Fam&sort=
$sort\">Fam</a></th>
<th width='50'><a href=\"word5.php?key=Name&sort=
$sort\">Name</a></th>
<th width='50'><a href=\"word5.php?key=Otch&sort=
$sort\">Otch</a></th>
<th width='50'><a href=\"word5.php?key=age&sort=
$sort\">age</a></th>
<th width='50'><a href=\"word5.php?key=cvet&sort=
$sort\">cvet</a></th>
</th></tr>"
;
// Отформатировать и вывести каждую строку таблицы
while ($row mysql_fetch_array($result))
{
    print 
"<tr>";
    print 
'<td>'.$row['Fam'].'</td><td>'.$row['Name'].'</td><td>'.$row['Otch'].'</td><td>'.$row['age'].'</td><td>'.substr($row['cvet'],0,30).'</td></td>';
    print 
"</tr>";
}
// Завершить таблицу
print "</table>";
arta42 вне форума Ответить с цитированием
Старый 10.08.2015, 20:13   #2
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Сортировка работает после фильтрация WHERE и до фильтрация тоже. А вам надо после
Код:
select * 
         from users WHERE age BETWEEN ........................
         order by ваши_поля  ASC или DESC
xxbesoxx вне форума Ответить с цитированием
Старый 10.08.2015, 20:17   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Да по-моему ТС интересует не сортировка в запросе а что-то другое...
У него вроде в запросе ORDER выставлен, а вот чего не так я чет не пойму...
Хотя ты прав, что в запросе WHERE age BETWEEN сортировки не хватает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.08.2015, 20:23   #4
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Я так понял что он хочет здесь сортировка
Код:
if (isset($_GET['age'])) {
        if (empty($_GET['v1']))  {echo 'Пустой запрос!';
            $result = mysql_query('select * from users ORDER BY');}
         else { $result = mysql_query('select * from users WHERE age BETWEEN '.$_GET['v1'].' AND '.$_GET['v2']) or die(mysql_error());
    }
Он сортирует до фильтр И не после ... Может ошибаюсь
xxbesoxx вне форума Ответить с цитированием
Старый 11.08.2015, 12:46   #5
arta42
 
Регистрация: 19.07.2015
Сообщений: 5
По умолчанию

Что мне нужно я сейчас объясню,пройдя по ссылке http://dizarius.com/arta/word5.php вы видите таблицу с добавленными пользователями,нажав на любое название ячейки проводится сортировка,провести выбор пользователя по указанному возрасту выведется несколько пользователей подпадающие под указанный возраст и когда произошла выборка этих пользователей я нажимаю опять на любую из ячеек для сортировки и мне опять сортирует всю таблицу а нужно чтобы после выборки сортировало лишь выбранных пользователей,как мне это можно реализовать и можно-ли вообще это сделать указанном мной коде?
arta42 вне форума Ответить с цитированием
Старый 11.08.2015, 16:32   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

arta42, всё возможно

попробуйте ПРИМЕРНО так:
Код:
<form> 
От<input type=text name=v1> 
До<input type=text name=v2> 
<br><br> 
<input type=submit name=age value ="Подобрать"> 
</form> 
<?php  
$con = mysql_connect("localhost","........","........"); 
if (!$con) 
   { 
   die('Could not connect: ' . mysql_error()); 
   } 
mysql_select_db("........", $con); 
$sql = mysql_query("SET CHARACTER SET cp1251_koi8"); 
$result = mysql_query("SELECT * FROM users ORDER BY Fam,name"); 
mysql_query($order); 
echo $myrow_comcont['title']; 
echo $myrow_comcont['com']; 
echo "<table border='1'>"; 
  
$key_array = array('Fam','Name','Otch','age','cvet'); 
$sort_array = array('asc','desc'); 
  
if (isset($_GET['key'])) 
{ 
    $key=$_GET['key']; 
    $sort=$_GET['sort']; 
} 
else 
{ 
    $key='Fam'; 
    $sort='desc'; 
} 

$query = "SELECT * FROM users ";

if (isset($_GET['age']) && isset($_GET['v1']) && isset($_GET['v2'])) { 
        if (empty($_GET['v1']))  {
            echo 'Пустой запрос!'; 
          } 
         else { 
          $query .= ' WHERE age BETWEEN '.$_GET['v1'].' AND '.$_GET['v2'].' ';
          print "<table border = 1 align = center>"; 
          print "<tr> 
          <th width='50'><a href=\"word5.php?key=Fam&sort=$sort&age=1&v1=".$_GET['v1']."&v2=".$_GET['v2']."\">Fam</a></th> 
          <th width='50'><a href=\"word5.php?key=Name&sort=$sort&age=1&v1=".$_GET['v1']."&v2=".$_GET['v2']."\">Name</a></th> 
          <th width='50'><a href=\"word5.php?key=Otch&sort=$sort&age=1&v1=".$_GET['v1']."&v2=".$_GET['v2']."\">Otch</a></th> 
          <th width='50'><a href=\"word5.php?key=age&sort=$sort&age=1&v1=".$_GET['v1']."&v2=".$_GET['v2']."\">age</a></th> 
          <th width='50'><a href=\"word5.php?key=cvet&sort=$sort&age=1&v1=".$_GET['v1']."&v2=".$_GET['v2']."\">cvet</a></th> 
          </th></tr>"; 
        } 
} 
else {
print "<table border = 1 align = center>"; 
print "<tr> 
<th width='50'><a href=\"word5.php?key=Fam&sort=$sort\">Fam</a></th> 
<th width='50'><a href=\"word5.php?key=Name&sort=$sort\">Name</a></th> 
<th width='50'><a href=\"word5.php?key=Otch&sort=$sort\">Otch</a></th> 
<th width='50'><a href=\"word5.php?key=age&sort=$sort\">age</a></th> 
<th width='50'><a href=\"word5.php?key=cvet&sort=$sort\">cvet</a></th> 
</th></tr>"; 
}

if(in_array($key, $key_array) && in_array($sort, $sort_array)) 
{ 
    $query .= " ORDER BY $key $sort "; 
} 
  
if($sort=='asc') 
{ 
   $sort='desc'; 
   $vid_sort=$sort_up; 
} 
else 
{ 
   $sort='asc'; 
   $vid_sort=$sort_down;    
} 


$result = mysql_query($query) or die(mysql_error());
// Отформатировать и вывести каждую строку таблицы 
while ($row = mysql_fetch_array($result)) 
{ 
    print "<tr>"; 
    print '<td>'.$row['Fam'].'</td><td>'.$row['Name'].'</td><td>'.$row['Otch'].'</td><td>'.$row['age'].'</td><td>'.substr($row['cvet'],0,30).'</td></td>'; 
    print "</tr>"; 
} 
// Завершить таблицу 
print "</table>";
p.s. разумеется, Я НЕ ПРОВЕРЯЛ!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.08.2015, 16:51   #7
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
название ячейки проводится сортировка,
Через Delphi это можно . Но только при нажатие заголовке Grid
Код:
procedure TForm1.DBGrid1TitleClick(Column: TColumn); //сортировка в DBGrid
 Var 
   Col:string;
begin
  if Adoquery.FieldByName(Column.FieldName).Tag=0 then
   begin
    Col := ' ASC';
    Adoquery.FieldByName(Column.FieldName).Tag := 1;
   end
  else
   begin
    Col := ' DESC';
    Adoquery.FieldByName(Column.FieldName).Tag := 0;
   end;
 Adoquery.Sort:=Column.FieldName + Col;
end;
Через PHP не знаю как Можете попросить "Модератору" перенести это тема разделе PHP Я думаю вам тот разделе помогут
xxbesoxx вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите алгоритм выборки bunukar Помощь студентам 2 08.11.2014 21:57
FB2.5 как написать ХП выборки разных данных? DeveloPerchik БД в Delphi 2 01.08.2012 09:51
Как осуществить реализацию выборки и переносом данных в ворд nikhop Microsoft Office Excel 4 01.12.2010 15:46
Помогите, пожалуйста, провести исследование! efrushka Свободное общение 6 20.05.2009 21:32
DBGrid: Как сделать собственную сортировку данных? AnTe БД в Delphi 17 26.02.2009 17:38