Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как вывести последние 10 элементов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
grafillo
Отправлено: 17 Сентября, 2014 - 11:45:38
Post Id


Посетитель


Покинул форум
Сообщений всего: 280
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




Нужно чтобы по порядку выводило последние десять элементов
пишу такой запрос
CODE (SQL):
скопировать код в буфер обмена
  1. mysql_query("SELECT * from tb_private  WHERE  who_user = '$login'  ORDER BY id ASC LIMIT 10 ");

тогда он выводит первые десять элементов из полученного списка, а мне нужно последние, как написать такой запрос?
 
 Top
esterio
Отправлено: 17 Сентября, 2014 - 11:59:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




grafillo пишет:
ORDER BY id DESC
 
 Top
grafillo
Отправлено: 17 Сентября, 2014 - 14:02:41
Post Id


Посетитель


Покинул форум
Сообщений всего: 280
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




esterio пишет:
grafillo пишет:
ORDER BY id DESC

тогда он выводит результаты наоборот
 
 Top
Tyoma5891
Отправлено: 17 Сентября, 2014 - 14:07:16
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM tb_private  WHERE  who_user = '$login'  ORDER BY id DESC LIMIT 10
 
 Top
DelphinPRO
Отправлено: 17 Сентября, 2014 - 15:47:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




grafillo пишет:
тогда он выводит результаты наоборот

отсортируйте потом пыхом в обратную сторону, да и всё.
sort и иже с ней


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
grafillo
Отправлено: 17 Сентября, 2014 - 16:27:44
Post Id


Посетитель


Покинул форум
Сообщений всего: 280
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




DelphinPRO пишет:
grafillo пишет:
тогда он выводит результаты наоборот

отсортируйте потом пыхом в обратную сторону, да и всё.
sort и иже с ней


а как будет выглядеть код сортировки по числовой ячейке id?
 
 Top
DelphinPRO
Отправлено: 17 Сентября, 2014 - 17:56:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




как-то так:

PHP:
скопировать код в буфер обмена
  1. // Где-то берем параметры подключения к БД
  2. $config = Registry::getConfig();
  3.  
  4. $host = $config->db['host'];
  5. $user = $config->db['user'];
  6. $pass = $config->db['pass'];
  7. $name = $config->db['name'];
  8.  
  9. // Подключаемся и настраиваемся
  10. $pdo = new \PDO( "mysql:dbname=$name;host=$host", $user, $pass );
  11. $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
  12. $pdo->query("SET NAMES 'UTF8'");
  13.  
  14. // Дальше по вашему вопросу.
  15. $query = "SELECT *
  16.          FROM tb_private
  17.          WHERE who_user = :login
  18.          ORDER BY id DESC
  19.          LIMIT 10";
  20. $stmt = $pdo->prepare($query);
  21. $stmt->execute(array('login' => $login));
  22. $data = $stmt->fetchAll(\PDO::FETCH_ASSOC);
  23.  
  24. usort($data, function($a, $b){
  25.         if ($a['id'] == $b['id']) {
  26.                 return 0;
  27.         }
  28.         // Здесь можно поменять ">" на "<"
  29.         // для изменения направления сортировки
  30.         return ($a['id'] > $b['id']) ? -1 : 1;
  31. });
  32.  
  33. var_dump($data);

(Отредактировано автором: 17 Сентября, 2014 - 17:58:38)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
grafillo
Отправлено: 17 Сентября, 2014 - 20:07:58
Post Id


Посетитель


Покинул форум
Сообщений всего: 280
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




DelphinPRO пишет:
как-то так:

PHP:
скопировать код в буфер обмена
  1. // Где-то берем параметры подключения к БД
  2. $config = Registry::getConfig();
  3.  
  4. $host = $config->db['host'];
  5. $user = $config->db['user'];
  6. $pass = $config->db['pass'];
  7. $name = $config->db['name'];
  8.  
  9. // Подключаемся и настраиваемся
  10. $pdo = new \PDO( "mysql:dbname=$name;host=$host", $user, $pass );
  11. $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
  12. $pdo->query("SET NAMES 'UTF8'");
  13.  
  14. // Дальше по вашему вопросу.
  15. $query = "SELECT *
  16.          FROM tb_private
  17.          WHERE who_user = :login
  18.          ORDER BY id DESC
  19.          LIMIT 10";
  20. $stmt = $pdo->prepare($query);
  21. $stmt->execute(array('login' => $login));
  22. $data = $stmt->fetchAll(\PDO::FETCH_ASSOC);
  23.  
  24. usort($data, function($a, $b){
  25.         if ($a['id'] == $b['id']) {
  26.                 return 0;
  27.         }
  28.         // Здесь можно поменять ">" на "<"
  29.         // для изменения направления сортировки
  30.         return ($a['id'] > $b['id']) ? -1 : 1;
  31. });
  32.  
  33. var_dump($data);


нихренасе и это всего лишь для сортировки массива такой код? х)

CODE (SQL):
скопировать код в буфер обмена
  1. $stmt = $pdo->prepare($query);
  2. $stmt->execute(array('login' => $login));
  3. $data = $stmt->fetchAll(\PDO::FETCH_ASSOC);
  4.  
  5. usort($data, FUNCTION($a, $b){
  6.         IF ($a['id'] == $b['id']) {
  7.                 RETURN 0;
  8.         }
  9.         // Здесь можно поменять ">" на "<"
  10.         // для изменения направления сортировки
  11.         RETURN ($a['id'] > $b['id']) ? -1 : 1;

эта часть ваще не понятна(((

(Отредактировано автором: 17 Сентября, 2014 - 20:09:37)

 
 Top
DelphinPRO
Отправлено: 17 Сентября, 2014 - 20:28:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




grafillo пишет:
эта часть ваще не понятна(((

Выполняется запрос к БД, результат фетчится в массив данных, массив сортируется. Что здесь может быть непонятного?


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
ПТО
Отправлено: 17 Сентября, 2014 - 21:36:57
Post Id



Посетитель


Покинул форум
Сообщений всего: 395
Дата рег-ции: Янв. 2012  


Помог: 3 раз(а)




postgres->query("
WITH t (id, x, y, z) AS (SELECT * from tb_private WHERE who_user = '$login' ORDER BY id DESC LIMIT 10)
SELECT * FROM t ORDER BY id ASC;
");
 
 Top
Sail
Отправлено: 18 Сентября, 2014 - 08:03:45
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




И даже такой запросик прошёл:
CODE (SQL):
скопировать код в буфер обмена
  1. (SELECT * FROM `tablename` ORDER BY `id` DESC LIMIT 10) ORDER BY `id` ASC;

(Отредактировано автором: 18 Сентября, 2014 - 08:04:28)

 
 Top
grafillo
Отправлено: 18 Сентября, 2014 - 09:20:56
Post Id


Посетитель


Покинул форум
Сообщений всего: 280
Дата рег-ции: Апр. 2013  


Помог: 0 раз(а)




[quote=Sail]И даже такой запросик прошёл:
CODE (SQL):
скопировать код в буфер обмена
  1. (SELECT * FROM `tablename` ORDER BY `id` DESC LIMIT 10) ORDER BY `id` ASC;
[/quote]

тут явные проблемы с пунктуацией потомучто такой код вообще не работает
(Добавление)
[quote=DelphinPRO]
grafillo пишет:
$stmt = $pdo->prepare($query);
$stmt->execute(array('login' => $login));
$data = $stmt->fetchAll(\PDO::FETCH_ASSOC);

usort($data, FUNCTION($a, $b){
IF ($a['id'] == $b['id']) {
RETURN 0;
}
// Здесь можно поменять ">" на "<"
// для изменения направления сортировки
RETURN ($a['id'] > $b['id']) ? -1 : 1;

тут какаято ошибка в 3 строке со знаком \
 
 Top
Sail
Отправлено: 18 Сентября, 2014 - 09:38:56
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




grafillo пишет:
тут явные проблемы с пунктуацией потомучто такой код вообще не работает

Отчего-же? Вполне работает. Возможно, точка с запятой в конце - лишние Улыбка
Что, кстати, mysql пишет в оправдание отказа воспринять "такой код"? Улыбка
Впрочем, можно обернуть:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT * FROM (SELECT * FROM `tablename` ORDER BY `id` DESC LIMIT 10) sub1 ORDER BY `id` ASC

...
grafillo пишет:
тут какаято ошибка в 3 строке со знаком \

Если не используете Пространства имен, то этот знак можно убрать.

(Отредактировано автором: 18 Сентября, 2014 - 09:42:19)

 
 Top
RickMan
Отправлено: 18 Сентября, 2014 - 09:46:38
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




Вы выгоните?)
CODE (SQL):
скопировать код в буфер обмена
  1. (SELECT * FROM `tablename` ORDER BY `id` DESC LIMIT 10) ORDER BY `id` ASC;

Тоесть тут подохрительного не видите ничего? Откуда у вас там вхялся второй order но при этом нет select и указания from... Пробовали бы хотябы код который выкладываете на локальных таблицах...
 
 Top
Мелкий Супермодератор
Отправлено: 18 Сентября, 2014 - 09:50:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




RickMan пишет:
Тоесть тут подохрительного не видите ничего?

Нет. Абсолютно нормальный запрос.
Возможно, mysql only, это не помню.


-----
PostgreSQL DBA
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB