Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
32 / 29 / 12
Регистрация: 04.03.2013
Сообщений: 896

Ограничить вывод анонсов из БД

07.01.2023, 14:54. Показов 967. Ответов 9

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Простите, если пишу не сюда.

Есть отдельный файл, в котором я делаю запросы и подключение к базе:
PHP
1
2
3
4
$result = $db->query('SELECT site, nazvanie, opisanie '
. 'FROM news '
. 'ORDER BY data DESC '
. 'LIMIT 6 '); //количество выводимых превью новостей
Создал страницу, где выводится 6 анонсов из базы.

Теперь создаю вторую страницу, где необходимо вывести 3 анонса из той же базы:
PHP
1
2
3
4
5
6
7
8
9
10
<?php foreach ($newsList as $newsItem):?>
    <article class="card"><img src="images/light.png" alt="thumbnail" class="thumbnail">
        <div class="cat-links"><a href="#">Статьи</a></div>
        <div class="preview" id="box1">
        <h2 class = "anon"><a href="#"><?= $newsItem['nazvanie'];?></a></h2>
            <p><?= $newsItem['opisanie'];?></p>
            <a href="<?= $newsItem['site'];?>" id="rm">Продолжение</a>
</div>
</article>
<?php endforeach;?>
Понятно, что выведет 6 анонсов. А как ограничить вывод анонсов в моем случае до 3 шт?

Буду благодарен советам!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.01.2023, 14:54
Ответы с готовыми решениями:

Вывод картинок анонсов инфоблоков в слайдере
Не отображается owl слайдер на bitrix сайте. См....

Вывод анонсов статей в отдельном блоке с рабочими ссылками
Здравствуйте! У меня в отдельном блоке выводятся анонсы новых заметок &lt;?php query_posts('cat=5&amp;showposts=1'); while (have_posts())...

Как добавить вывод фото, кроме анонсов статей ?
Использую стандартный тему (Neve) для личного блога на wordpress. Хочу вывести первую фото из каждой статьи. Подскажите как это...

9
 Аватар для Gotcha
30 / 26 / 7
Регистрация: 13.07.2013
Сообщений: 116
07.01.2023, 15:57
Вероятно, посредством функции array_slice()

Пример: $output = array_slice($input, 0, 3);
0
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,882
07.01.2023, 19:14
Цитата Сообщение от iiwanc Посмотреть сообщение
Понятно, что выведет 6 анонсов. А как ограничить вывод анонсов в моем случае до 3 шт?
Можно прямо в функции модели добавить параметр perpage. Модель - это набор функций или методов объекта (класса) для выполнения всех необходимых операций над отдельными объектами определенного типа (новостные статьи) и системой объектов, например коллекцией однотипных объектов (наборы/списки новостных статей). Пример вызовов для пагинации списка: Генерация страниц (или как то так)

Список из N первых объектов - это фактически первая страница списка с perpage=N. Если требуется только определенная страница списка, например первая, без ссылок на другие страницы списка, функция pagecount не нужна. Используйте только list, заменив имя, например, на page (по ссылке объяснил, почему). В итоге может быть такой вызов:
PHP
1
2
$pp = 3;
$result = news\page(1, $pp, ['date' => 'DESC']); // date - дата по-английски, а data - это данные
Добавлено через 8 минут
В MySQL, конечно, можно использовать с LIMIT только одно значение, но если вы обобщите функцию на выбор произвольной страницы, будет неплохо (LIMIT 0, 3). 0 - это стартовое смещение. Можете его не по номеру страницы вычислять, а непосредственно в функцию модели передавать: news\page(0, $pp, ...) - немного более универсальный, но и более сложный вариант, т.к. придется часто преобразовывать номер страницы в смещение вне функции модели.

В общем-то можно и специальную функцию модели написать для получения последних статей, например на показанном ранее демонстрационном сайте для atom.xml используется такая функция (пространство имен, т.е. namespace, для простоты понимания не стал использовать, но лучше использовать):
PHP
1
2
3
4
function recentposts($limit = 10)
{
    return query("SELECT * FROM `site_categories` WHERE `category`>0 ORDER BY `date` DESC LIMIT $limit");
}
$limit - то же самое, что и $pp. Назвал так, потому что функция не принимает в качестве параметра ни номер страницы, ни смещение.
0
32 / 29 / 12
Регистрация: 04.03.2013
Сообщений: 896
11.01.2023, 18:59  [ТС]
Пробую на тестовой базе, локальный сервер.
Пишу:
PHP
1
2
3
4
5
6
<?php
foreach (array_slice($newsItem, 0, 3, true) as $key => $value) {
    echo "{$key} => {$value} ";
    print_r($newsItem);
}
?>
Получаю результат вида:
Code
1
ssylka => ggg Array ( [ssylka] => ggg [0] => ggg [title] => Название статьи [1] => Название статьи [data] => 2022-11-18 20:53:04 [2] => 2022-11-18 20:53:04 [short_content] => Тело статьи [3] => Тело статьи ) 0 => ggg Array ( [ssylka] => ggg [0] => ggg [title] => Название статьи [1] => Название статьи [data] => 2022-11-18 20:53:04 [2] => 2022-11-18 20:53:04 [short_content] => Тело статьи [3] => Тело статьи ) title => Название статьи Array ( [ssylka] => ggg [0] => ggg [title] => Название статьи [1] => Название статьи [data] => 2022-11-18 20:53:04 [2] => 2022-11-18 20:53:04 [short_content] => Тело статьи [3] => Тело статьи )
Как привести в нормальный вид?
Из всего этого мне нужны только: [title] и [short_content]

Буду благодарен советам.
0
32 / 29 / 12
Регистрация: 04.03.2013
Сообщений: 896
13.01.2023, 16:11  [ТС]
Gotcha, не подскажите?
0
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,882
13.01.2023, 18:40
iiwanc, не хотите вникать в основы, хотя бы к простой логике обратитесь. Зачем выбирать из базы данных 6 записей, если нужно вывести только 3?
0
32 / 29 / 12
Регистрация: 04.03.2013
Сообщений: 896
13.01.2023, 18:51  [ТС]
estic,
Цитата Сообщение от iiwanc Посмотреть сообщение
Создал страницу, где выводится 6 анонсов из базы.
Теперь создаю вторую страницу, где необходимо вывести 3 анонса из той же базы:
0
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,882
13.01.2023, 19:15
iiwanc, и что вы хотели этим цитированием сказать?

Даже если у страниц общий контроллер/экшен, можно найти признак, по которому вызывать функцию модели с разными значениями параметра. Вам все равно нужен такой признак, даже если вы будете заниматься "секвестированием" выборки.

Добавлено через 1 минуту
PHP
1
$result = recentposts($page['id'] == 2 ? 3 : 6);
0
4 / 2 / 1
Регистрация: 24.01.2017
Сообщений: 74
14.01.2023, 01:24
iiwanc, если у вас есть пагинация, вы можете сделать правильней с точки зрения оптимизации и адаптировать запросы в такой вид:
PHP
1
$file_res_files = mysqli_query($hidden_request, "".$file_sql." LIMIT ".$file_num_files_start.",".$file_num_files_stop."");
Таким образом вы вытащите из базы только то что нужно, а не всё сразу и потом в этой "куче" искать что нужно

P>S - LIMIT использует 1 параметр с какого номера выводить (в данном случаи $file_num_files_start) и второй параметр сколько выводить (в данном случаи $file_num_files_stop)

Добавлено через 15 минут
На выходе в моём примере будет примерно такой запрос:
PHP
1
$file_res_files = mysqli_query($hidden_request, "SELECT * FROM таблица_файлы WHERE проверка_файла_на_удалённость='0' ORDER BY столбец_даты desc LIMIT 0,10");
Где 0 - с какого выводить
Где 10 - сколько выводить после значения 0

P>S - Используется процедурный стиль, в ООП сами перевидите если нужно, там сложного не чего нет, я прост привык так)

Добавлено через 8 минут
или укажите в цикле на какой итерации прекратить цикл.
1
32 / 29 / 12
Регистрация: 04.03.2013
Сообщений: 896
15.01.2023, 14:15  [ТС]
Цитата Сообщение от estic Посмотреть сообщение
iiwanc, и что вы хотели этим цитированием сказать?
Простите, оперативно отвечать не могу. Заболел.
Хотел сказать, что мне на одной странице нужно выводить 6 анонсов статей, а на другой - 3 анонса
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.01.2023, 14:15
Помогаю со студенческими работами здесь

Вывод "анонсов" записей
Как сделать на главной странице блога, чтобы записи высвечивались не полными, а анонсом с кнопкой читать, подробнее или в такой духе.......

Ограничить вывод из mysql
Доброй ночи! Вот код while ($NoteText = mysqli_fetch_array($sqlNoteText)) { $sqlNoteImage=mysqli_query($link, &quot;select * from...

Ограничить вывод из БД количеством
Ребята, есть вот такой код в контроллере- public function messages($user) { $this-&gt;setData(); $dialog...

Ограничить вывод чисел
Код выводит последовательность чисел (фибоначи) Нужно сделать так, что бы вывод ограничивался числами начало и конец...

Как ограничить вывод чисел?
Есть своя наработка, но реализовать верно не получается. Нужно, чтобы при вводе из текстового файла принимались значения от 0 до 4. При...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru