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

Разбивка строки

04.11.2012, 16:07. Показов 2093. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Делаю скрипт похожих новостей, столкнулся с проблемой.
При создании новости у меня можно выбрать несколько категорий например: спорт"sport" политика"politik"
в базе они хранятся sport|politik когда начал делать скрипт похожих новостей по категорий появилась проблема, что выводит похожие новости именно если в базе хранится sport|politik а мне нужно чтобы выводило sport|politik sport politik то есть нужно избавиться как то от разделителя, помогите решить проблему, заранее спасибо. Исходник:
PHP
1
2
3
4
5
6
    $query = mysql_query("SELECT * FROM news WHERE `cat` = '$News->cat' "); 
while ($res = mysql_fetch_assoc($query))
{                    
echo $res['name'] ."<br/>";
echo "<b>".$res['cat']."</b><br/>";
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.11.2012, 16:07
Ответы с готовыми решениями:

Разбивка строки
Добавлено через 17 минут Есть запись в таблице - Power G25 Нужно получить такой вид записи - Power_G25 - т.е. земля между...

Разбивка строки
$str = &quot;Рикокозел&quot;; $find = &quot;козел&quot;; $start = strpos($str,$find).&quot;&lt;br&gt;&quot;; Вопрос как спереди и сзади слова козел включить два...

Разбивка ЧПУ строки
Мне нунжно разбить ЧПУ строку на несколько частей. Вот пример две строки. http:// mysite.ru/novosti/1/ http://...

26
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
04.11.2012, 16:13
А зачем атомарность нарушаешь (1NF)?
0
11 / 11 / 0
Регистрация: 07.07.2011
Сообщений: 418
04.11.2012, 16:18  [ТС]
Цитата Сообщение от Денис Н. Посмотреть сообщение
А зачем атомарность нарушаешь (1NF)?
Не понял вопроса.
0
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
04.11.2012, 16:22
Хранение всех категорий в одном поле нарушает атомарность. Есть веская причина того, зачем это было сделано?
0
11 / 11 / 0
Регистрация: 07.07.2011
Сообщений: 418
04.11.2012, 16:29  [ТС]
Мне посоветовали так сделать, при добавление новости, хранить категории через разделитель | т.к это используется не только для выведения похожих новостей.
0
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
04.11.2012, 16:29
да ну и что. Это неправильный совет
0
11 / 11 / 0
Регистрация: 07.07.2011
Сообщений: 418
04.11.2012, 16:32  [ТС]
Но чтобы всё переделать уйдёт очень много времени и придётся менять всю структуру сайта, по этому я пока придерживаюсь этому варианту.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
04.11.2012, 16:45
а если не переделать сейчас, а переделывать потом, рано или позно вы такого наворотите, что переделывтаь вообще смысла не будет, а придётся рпосто всё удалить и начать сначала

То что вы сдеали, влияет и на быстродействие и на расширяемость.
Вы уже столкнулись с тем что надо что то сделать, а теперь как то придётся изворачиваться и делать костылями. что замедлит работу сайта и увеличит нагрузку.

Как у вас выборка происходит по категории? Регуляркой что ли? А если у вас будет 10 000 новостей, и 20 категорий, и к вам зайдёт 1000 юзеров. Вы представляете какая будет нагрузка?)
Вообщем переделывать начните лучше сейчас
0
11 / 11 / 0
Регистрация: 07.07.2011
Сообщений: 418
04.11.2012, 17:03  [ТС]
Хорошо, как тогда посоветуете хранить категории?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
04.11.2012, 17:25
Связь многие ко многим.
Таблица новостей. Таблица категорий. И таблица связи.
В таблице новостей нет поля для категории.
В таблице связей всего 2 поля, это id новости и id категории.
Вместе онои образуют первичный ключ.
0
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
04.11.2012, 17:29
третью таблицу зачем тут?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
04.11.2012, 17:30
Цитата Сообщение от Денис Н. Посмотреть сообщение
третью таблицу зачем тут?
Ну приведите пример организации связи многие ко многим с 2мя таблицами Я с удовольствием посмотрю на него
1
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
04.11.2012, 17:31
а многие ко многим зачем? Новость может находиться в двух разных категориях?
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
04.11.2012, 17:34
А тема вообще о чём?) Вы сами сказали что в одном поле нельзя хранить две категории

Цитата Сообщение от Makson Посмотреть сообщение
При создании новости у меня можно выбрать несколько категорий например: спорт"sport" политика"politik"
0
11 / 11 / 0
Регистрация: 07.07.2011
Сообщений: 418
04.11.2012, 17:36  [ТС]
Это же будет очень большая таблица, например, 1 новость, 5 категорий, значит в таблице связи будет 5 записей, верно всё понял? если будет очень большая таблица это же будет грузить сервер.
0
 Аватар для fa2m
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
04.11.2012, 17:38
Makson, DrobyshevAlex пишет всё верно - желательно переделать, но если очень в облом, то можно использовать:
PHP
1
$query = mysql_query("SELECT * FROM news WHERE `cat` LIKE '%$News->cat%' ");
0
11 / 11 / 0
Регистрация: 07.07.2011
Сообщений: 418
04.11.2012, 17:39  [ТС]
Выше почитал посты, я так и не понял можно ли в 1 поле хранить sport|politik или нельзя?
0
 Аватар для Денис Н.
463 / 463 / 23
Регистрация: 17.08.2011
Сообщений: 1,488
04.11.2012, 17:41
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
А тема вообще о чём?) Вы сами сказали что в одном поле нельзя хранить две категории
да, в принципе можно и многие ко многим забубенить сразу. Верно.

Добавлено через 54 секунды
Цитата Сообщение от Makson Посмотреть сообщение
Выше почитал посты, я так и не понял можно ли в 1 поле хранить sport|politik или нельзя?
физически, как видишь, можно, но делать так нельзя
0
 Аватар для fa2m
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
04.11.2012, 17:43
Цитата Сообщение от Денис Н. Посмотреть сообщение
физически, как видишь, можно, но делать так нельзя
Я бы заменил слово "нельзя" на "не самый правильный способ"
0
11 / 11 / 0
Регистрация: 07.07.2011
Сообщений: 418
04.11.2012, 17:44  [ТС]
Придётся всё же переделывать.
Начёт
PHP
1
$query = mysql_query("SELECT * FROM news WHERE `cat` LIKE '%$News->cat%' ");
Выводит например sport|plitik|kino, а вот просто sport, politik не выводит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.11.2012, 17:44
Помогаю со студенческими работами здесь

Разбивка строки на слова
Есть строка такова типа &quot;Главная главная страница&quot;. Нужно одной переменной присвоить первое слово, а второй остальние.

Разбивка строки на слова
Доброго времени суток. Как возможно разбить строк BF Goodrich 155/70/13 T 75 Touring на: BF Goodrich 155/70/13 T 75 Touring...

Разбивка строк
Есть такая задачка, как её реализовать в коде?! Function receives a long string with many words. * It should return the same...

Разбивка статей по категориям
Помогите сделать, чтобы статьи из одной категории отображались в одной колонке, а статьи из другой категории в другой колонке. То есть в...

Разбивка таблицы на 2 колонки
Имею код таблицы для вывода. Ни как не могу организовать выдачу в 2 колонки. public function TableHome() { $data =...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод Сайт называется reddit: The Thinkpad X220 Tablet is the best budget school laptop period. Это. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru