X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Заметка в базе, относящаяся к разным категориям
Kuchuluk
Kuchuluk
Topic Starter сообщение 23.2.2012, 21:15; Ответить: Kuchuluk
Сообщение #1


здравствуйте!
В базе есть таблица, содержащая категории. В этой таблице только два поля: идентификатор категории и название этой категории. И таблица с заметками. Пользователь при обращении к категории получает, список заметок, относящихся к этой категориии. Поэтому в таблице с заметками содержит еще поле с номером категории, к которой она относится.
Проблема в том, что если одна заметка относится сразу к нескольким категориям, как это реализовать? Может кто сталкивался с этим и может подсказать.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 23.2.2012, 21:42; Ответить: matroskin8
Сообщение #2


Ну так а в чем проблема? Добавляете в таблицу несколько рядов под 1 статью:
id | article | category_id
1 | Статья 1 | 1
2 | Статья 1 | 3

Второй вариант в поле category_id идентификаторы категорий хранить в виде строки:
id | article | category_id
1 | Статья 1 | 1,3
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 23.2.2012, 22:10; Ответить: Kuchuluk
Сообщение #3


Второй вариант в поле category_id идентификаторы категорий хранить в виде строки:


А если их в строку хранить через запятую, они обработчиком будут читаться как разные числа?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 23.2.2012, 22:29; Ответить: matroskin8
Сообщение #4


Что есть обработчик?
Считали из БД ряд. В этом ряду имеем строку "1,3". Это одна цельная строка, для интерпретатора в ней нет никаких отдельных значений. Отдельные значения есть только для нас. Эту строку мы можем разбить на отдельные значения функцией explode():
$arr = explode(",", $row['category_id']);

В массиве $arr имеем на выходе идентификаторы категорий.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 23.2.2012, 23:12; Ответить: Kuchuluk
Сообщение #5


Что есть обработчик?
Считали из БД ряд. В этом ряду имеем строку "1,3". Это одна цельная строка, для интерпретатора в ней нет никаких отдельных значений. Отдельные значения есть только для нас. Эту строку мы можем разбить на отдельные значения функцией explode():
$arr = explode(",", $row['category_id']);

В массиве $arr имеем на выходе идентификаторы категорий.

аа, понял. спасибо!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 24.2.2012, 1:29; Ответить: matroskin8
Сообщение #6


Пожалуйста :blink:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 28.3.2012, 23:35; Ответить: Kuchuluk
Сообщение #7


Ну так а в чем проблема? Добавляете в таблицу несколько рядов под 1 статью:

А когда в одной таблице скопиться очень много рядов (например, несколько тысяч), это не будет сказываться на работе сайта? Виснуть не будет?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 29.3.2012, 0:40; Ответить: matroskin8
Сообщение #8


От нескольких тысяч не будет... и от нескольких десятков тысяч не будет... да и с сотнями тысяч все будет летать при 2-х условиях:
1) нормальный сервер;
2) нормализованная БД, т.е., проще говоря, БД с продуманной архитектурой и соблюдением нормальных форм.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kuchuluk
Kuchuluk
Topic Starter сообщение 2.4.2012, 18:35; Ответить: Kuchuluk
Сообщение #9


[member=matroskin8], так получается что при выводе последних заметок одна заметка будет повторяться по два раза. Это можно как-нибудь избежать?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
matroskin8
matroskin8
сообщение 2.4.2012, 19:13; Ответить: matroskin8
Сообщение #10


Элементарной группировкой получаем только уникальные статьи без повторов:
SELECT id, article FROM table GROUP BY article ORDER BY id DESC LIMIT 5;

В итоге 5 последних статей без дубликатов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Пакетное размещение статей по разным тематикам. Скидки!
35 kasey7 10648 26.3.2024, 15:47
автор: kasey7
Открытая тема (нет новых ответов) Нужно разносить телеграм каналы по разным аккаунтам?
9 Mixatraider 1815 20.3.2024, 18:34
автор: Rebex
Открытая тема (нет новых ответов) Большие базы Semrush кейвордов по разным тематикам! Много кейвордов с трафиком и без конкуренции! Volume, KD, CPC
20 Krok 6223 18.3.2024, 5:43
автор: Krok
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыБезанкорный прогон по базе 1600 000 сайтов из DMOZ
44 aleggator 13432 10.3.2024, 18:29
автор: kuprum
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыСтатейное продвижение ваших сайтов по качественной базе с тИЦ
тИЦ 10+
236 Intersect 257172 6.3.2024, 14:40
автор: ArchiDOM


 



RSS Текстовая версия Сейчас: 28.3.2024, 20:44
Дизайн