Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 16.02.2017
Сообщений: 30

Вывести по 4 статьи определённой категории на страницу

20.02.2017, 18:00. Показов 2510. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Леди и джентльмены! Опять же учебный блог. Нужно вывести статьи определенной категории по 4 на страницу. Категорию статьи получ. из массива $_GET как $_GET['categorie']. Или как элемент массива $cat['categorie_id'].

так не срабатывает
PHP
1
$articles = mysqli_query($connection, "SELECT * FROM `articles` WHERE `categories_id`=" .  (int)$_GET['categorie'] ORDER BY `id` DESC LIMIT 4,4 );
и так не срабатывает
PHP
1
$articles = mysqli_query($connection, "SELECT * FROM `articles` WHERE `categories_id`=" . (int)$cat['categorie_id'] ORDER BY `id` DESC LIMIT 4,4 );
хотя если задать категорию числом, то все норм.
PHP
1
$articles = mysqli_query($connection, "SELECT * FROM `articles` WHERE `categories_id`= 7 ORDER BY `id` DESC LIMIT 4,4" );
Такой же запрос с числом работает и в SQL . Но туда же не всунешь для проверки (int) $_GET['categorie'] !
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.02.2017, 18:00
Ответы с готовыми решениями:

На страницу нужно выодить категории и под ними выводить статьи этих категорий
Добрый вечер. У меня в базе есть 2 таблицы. Одна таблица с категриями, а дргуая таблица со статьями. На страницу нужно выодить категории и...

Блок ссылок "Другие статьи" в определенной категории, Joomla 1.5.26
Добрый день! Прошу помощи у знатоков и профи. Дело вот в чем: На сайте под Joomla 1.5.26 есть отдельная категория, где размещаются...

Как вывести статьи по категории на отдельной странице ?
вопрос состоит в том что нужно вывести статьи с определенной категорией на отдельной странице $page = $_GET; ...

18
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
20.02.2017, 18:06
Покажите структуру таблицы в БД.
0
1 / 1 / 0
Регистрация: 16.02.2017
Сообщений: 30
20.02.2017, 19:26  [ТС]
Это в phpMyAdmin/Как показать не знаю, но описать могу. Двухмерный массив такими вот столбцами:

id title image text categories_id pubdate views

ну и штук 15 заполнненых строк.




В SQL запрос работает:
MySQL
1
SELECT * FROM `articles` WHERE `categories_id`= 7 ORDER BY `id` DESC LIMIT 4,4
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
20.02.2017, 19:32
wcarver, у вас вообще должна появляться ошибка синтаксиса в первых двух случаях.
0
1 / 1 / 0
Регистрация: 16.02.2017
Сообщений: 30
20.02.2017, 19:35  [ТС]
Это в phpMyAdmin. Как показать не знаю, но описать могу. Двухмерный массив из статей c такими вот столбцами:

id title image text categories_id pubdate views
1 7
2 3
3 1
4 4
.
.
.
n 3

штук 15 заполнненых строк.


Можно вывести весь массив и потом поиграться с их печатью по 4, но интересно, можно ли это организовать прямо в запросе. Тем более что сдвиг там предусмотрен.




В SQL запрос работает:
MySQL
1
SELECT * FROM `articles` WHERE `categories_id`= 7 ORDER BY `id` DESC LIMIT 4,4
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
20.02.2017, 19:36
Цитата Сообщение от wcarver Посмотреть сообщение
PHP
1
$articles = mysqli_query($connection, "SELECT * FROM `articles` WHERE `categories_id`=" . (int)$_GET['categorie'] ORDER BY `id` DESC LIMIT 4,4 );
PHP
1
$articles = mysqli_query($connection, "SELECT * FROM `articles` WHERE `categories_id`=" . (int)$_GET['categorie'] . "ORDER BY `id` DESC LIMIT 4,4 ");
Цитата Сообщение от wcarver Посмотреть сообщение
PHP
1
$articles = mysqli_query($connection, "SELECT * FROM `articles` WHERE `categories_id`=" . (int)$_GET['categorie'] ORDER BY `id` DESC LIMIT 4,4 );
PHP
1
$articles = mysqli_query($connection, "SELECT * FROM `articles` WHERE `categories_id`=" . (int)$_GET['categorie'] . "ORDER BY `id` DESC LIMIT 4,4");
0
1 / 1 / 0
Регистрация: 16.02.2017
Сообщений: 30
20.02.2017, 19:45  [ТС]
Dear mr.Kerry_Jr!
Я об этом же! Я не могу исправить синтаксис, т.к. не знаю как. И найти как это сделать не смог.
Я так делал, но после строки запроса стоит mysqli_num_rows. И как я понял, в него не приходит значение

PHP
1
2
$articles = mysqli_query($connection, "SELECT * FROM `articles` WHERE `categories_id`=" . (int)$_GET['categorie'] . "ORDER BY `id` DESC LIMIT 4,4");
$a = mysqli_num_rows($articles);
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in D:\WEB\OpenServer\domains\mylocalsite.ru \articles in this category.php on line 153
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
20.02.2017, 19:56
PHP
1
2
$articles = mysqli_query($connection, "SELECT * FROM `articles` WHERE `categories_id`=" . (int)$_GET['categorie'] . "ORDER BY `id` DESC LIMIT 4,4") or die(mysqli_error($connection); 
$a = mysqli_num_rows($articles);
0
1 / 1 / 0
Регистрация: 16.02.2017
Сообщений: 30
20.02.2017, 20:25  [ТС]
Я скопировал и:
PHP
1
$articles = mysqli_query($connection, "SELECT * FROM `articles` WHERE `categories_id`=" . (int)$_GET['categorie'] . "ORDER BY `id` DESC LIMIT 4,4") or die(mysqli_error($connection);
Parse error: syntax error, unexpected ';' in D:\WEB\OpenServer\domains\mylocalsite.ru \articles in this category.php on line 150

Соединение есть. Вот такой запрос работает


PHP
1
$articles = mysqli_query($connection, "SELECT * FROM `articles` WHERE `categories_id`= 7 ORDER BY `id` DESC LIMIT 4,4" );
Когда я задаю цифрой категорию. И вывод корректный. Якаясь-та печальная история...

Добавлено через 11 минут
Еще раз сорри!
В предыдущем моем ответе ошибка. В конце не поставил ) Но поставив ее позже получил следующее:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BY `id` DESC LIMIT 4,4' at line 1

шо переводчик интерпретирует так
У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с 'BY `id` лимит по убыванию 4,4' в строке 1
 Комментарий модератора 
Используйте тэги подсветки синтаксиса
[PHP]Ваш код[/PHP]
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
20.02.2017, 20:27
Перед ORDER пробел воткните.

Добавлено через 1 минуту
Про пагинацию писал тут.
0
1 / 1 / 0
Регистрация: 16.02.2017
Сообщений: 30
20.02.2017, 21:26  [ТС]
Леди и джентльмены!
Спасибо всем, кто ответил, но пока....
Файл с постраничным выводом статей по 4 на страницу у меня есть и он работает. Хотел сделать файл с таким же выводом но статей по категориям. Переход из меню например. При таком раскладе из таблицы `articles` БД нужно вывести только статьи заданной категории`categories_id`= Число , соотв. этой категории можно получить с пом. $_GET['categorie']. Я не смог найти правильный синтаксис для запроса:

PHP
1
$articles = mysqli_query($connection, "SELECT * FROM `articles` WHERE `categories_id`=" . (int)$_GET['categorie'] . "ORDER BY `id` DESC LIMIT 4,4");
с этим и обратился. miketomlin - пробел там есть. И в "Про пагинацию писал тут." такого запроса нет. Так шо снова "help me!" "help me!" "Alarm!" "Alarm!"

 Комментарий модератора 
Игнорирование замечаний модераторов добром не кончится.
Будьте любезны использовать теги оформления кода для подсветки синтаксиса кода, это в ваших же интересах.
Памятка «Как работать в редакторе сообщений»
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
20.02.2017, 22:59
Цитата Сообщение от wcarver Посмотреть сообщение
пробел там есть
там нет.
PHP
1
$articles = mysqli_query($connection, "SELECT * FROM `articles` WHERE `categories_id`=" . (int)$_GET['categorie'] . " ORDER BY `id` DESC LIMIT 4,4");
как говорится - 10 отличий
0
1 / 1 / 0
Регистрация: 16.02.2017
Сообщений: 30
20.02.2017, 23:41  [ТС]
Dear Модератор Kerry_Jr.
Я Вас рассмешу. Я поставил [ PHP ] и [ /PHP ] у себя в коде и ничего не изменилось. Вы ж делайте скидку. Это же раздел для чайников! Памятку я завтра почитаю.

И dear miketomlin.
Спасибо и за ответ и за терпение. Скудова ж я знал де ставить той пробел. Я думал, что речь идет о пробеле после точки. Напоминаю о чайниках. Проблема пропала. Скорее всего именно Ваш ответ я здесь и искал. Опять же респект и уважуха!!! )))
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
21.02.2017, 00:18
Что касается «такого запроса нет», для пагинации не суть, какой будет запрос. Просто нужно знать, что для этого обычно используются два разных запроса с практически идентичным «телом». Только в одном вы получаете одно единственное значение на основе COUNT(*), опуская конструкцию LIMIT (сортировка тоже тут обычно не нужна). А в др. выбираете нужные (либо все: *) поля и записи в нужном порядке и диапазоне. Т.е. имя таблицы и ваше условие WHERE `cat_id`=... в обоих запросах будут идентичными.

Вот примеры реальных запросов, наглядно это демонстрирующие:
SQL
1
2
3
'SELECT COUNT(*) FROM `table` WHERE '.$condition
 
'SELECT '.$fields.' FROM '.$tables.' WHERE '.$condition.' ORDER BY `date` DESC LIMIT '.(($pn-1)*$pp).','.$pp
Причем $fields и $tables могли спокойно иметь значения * и `table` соответственно. Использование этих переменных в данном конкретном примере связано с возможностью присоединять доп. таблицы или просто расширять результ. таблицу доп. значениями.
0
1 / 1 / 0
Регистрация: 16.02.2017
Сообщений: 30
21.02.2017, 01:28  [ТС]
miketomlin!

Да. Я оба и использовал. Только первый сработал легко. А вот со вторым... Хто ж знал про той пробел! )))

PHP
1
 $total_count_q = mysqli_query($connection, "SELECT COUNT(`id`) AS `total_count` FROM `articles` WHERE `categories_id`=" . (int) $_GET['categorie'] );
PHP
1
 $articles = mysqli_query($connection, "SELECT * FROM `articles` WHERE `categories_id`=" . (int)$_GET['categorie'] . " ORDER BY `id` DESC LIMIT 4,4");
"где найти и как добыть
то чаво не может быть?" (Л.Филатов)
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
21.02.2017, 02:26
Так я уже не про пробел
0
1 / 1 / 0
Регистрация: 16.02.2017
Сообщений: 30
21.02.2017, 08:06  [ТС]
Dear miketomlin!
Не могли бы Вы посмотреть мой 1-й пост "Не могу ввести данные из формы в БД". Не могу ввести данные из формы в БД
Задача вроде бы решена, но остался еще 1 вопрос. После нажатия на submit исчезает полученное из массива $_GET значение $art['id']

PHP
1
 1 $article = mysqli_query($connection, "SELECT*FROM `articles` WHERE `id`= " . (int) $_GET['categorie']);
PHP
1
 2 $art = mysqli_fetch_assoc($article);
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
21.02.2017, 09:29
Правильно, надо же писать article.php?id=..., а не article.php?.... Можете просто написать action="#form".

И не понятно, зачем вам в таком случае понадобилось скрытое поле. Вы можете для запроса также брать id из адреса.

Кодируйте или экранируйте кавычки в записываемых в базу значениях. Кодируйте полученные от пользователя и выводимые в форму значения. При успешной вставке в базу делайте редирект на себя. Если у вас происходит безусловная вставка, то естественно нужен и безусловный редирект, а значит вывод значений в форму не нужен.

Добавлено через 8 минут
Цитата Сообщение от miketomlin Посмотреть сообщение
При успешной вставке в базу делайте редирект на себя.
Якорь нужно будет убрать из имени обработчика и вставить в конец адреса в заголовке Location.
0
1 / 1 / 0
Регистрация: 16.02.2017
Сообщений: 30
21.02.2017, 11:06  [ТС]
Dear miketomlin!

И еще раз Вы правы. Я просто делал блог по видео. И сделал ошибку. Точно, надо писать article.php?id=...Я это пропустил! Все работает и скрытый инпут теперь не нужен!

А: "
Кодируйте или экранируйте кавычки в записываемых в базу значениях. Кодируйте полученные от пользователя и выводимые в форму значения. При успешной вставке в базу делайте редирект на себя. Если у вас происходит безусловная вставка, то естественно нужен и безусловный редирект" . Это пока на иноземном языке.
И еще раз я Вам благодарен, а то я такого там накрутил...)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.02.2017, 11:06
Помогаю со студенческими работами здесь

Как вывести статьи по категории на отдельной странице ?
вопрос состоит в том что нужно вывести статьи с определенной категорией на отдельной странице $page = $_GET; ...

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

Как вывести статьи с определенной категорией на php на отдельной странице ?
-Таблица articles -id -title -text -pubdate -views -categorie_id -Таблица articles_categories -id

Как вывести на странице только подкатегории определённой категории (WP+woocommerce)
Здравствуйте дорогие форумчане! Я тока начал изучать woocommerce и не могу найти решение проблемы: нужно на странице(не в категории, а...

Акции Opencart. Как вывести товары со скидкой определенной категории?
Добрый день! Подскажите, есть ли модуль, который выводит товары со скидкой определенной категории. Например, как на сайте...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
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