Задача: При создании новости, дублировать ее во все остальные категории (допустим в остальные 9 из 10 категорий). План: 1. Нужно получить id всех категорий и исключить id категории создаваемой новости. запрос к бд, но можно ли прям в запросе получить остальные 9 id ? или работать потом с массивом? 2. составить 9 запросов со всеми нужными полями из создаваемой новости, меняя id категории увидел интересное решение Код (Text): CREATE TEMPORARY TABLE foo AS SELECT * FROM parts WHERE id = X; UPDATE foo SET id=NULL; INSERT INTO parts SELECT * FROM foo; DROP TABLE foo; какие тут могут быть подводные камни? как проще дублировать записи?
@justc если у них общая бд то действия такие же как при категориях... если бд разные то каждый скрипт сам решает чё добавлять.. но необходимость дублей я до сих пор не вижу
ну как бы, чтобы в каждой категории, каждая из которой относится к своему сайту, была физически новость (одинаковая) так логически в моем случае правильно можно было бы сделать общую категорию, но это уже надо логику менять, так как у меня категории привязываются к конкретному сайту
Может вы что-то знаете, чего не известно нам, но вашу логику я уловить не могу. Создать отдельную таблицу с новостями и по ID привязывать к тем категориям/сайтам, где конкретная новость должна выводиться. Если у каждого сайта своя БД, то в конце концов, создать отдельную базу под новости. Если логика изначально не была правильной, то да - нужно менять и чем раньше, тем лучше.
стоп, в коде выше создается временная таблица, чтобы дублировать запись это как интересный пример (когда нужно что-то поменять, обнулить id, поставить id другой категории). можно и просто INSERT INTO я и спрашиваю как лучше дублировать запись
Никак не лучше дублировать записи. Если у тебя общая бд, зачем такое решение? Есть у тебя одна таблица со всеми новостями id | news 1 | классная первая новость 2 | и просто офигительная вторая 3 | ну а третьей вообще равных нет И есть табличка с привязыванием новостей к сайтам: id | news | site 1 | 1 | site1 2 | 1 | site2 3 | 2 | site1 4 | 3 | site2 т.е. первая новость сразу на первый и на второй сайт, вторая новость только на первый сайт, третья новость только на второй сайт
Давайте опустим логику. Вот такой план вырисовывается: при добавлении новости сделать галку "Копировать в другие сайты", после установки галки подгружать список всех сайтов, исключая текущий id выбранных сайтов идут в массив $allpid далее примерно так Код (Text): $id = id создаваемой новости $pid - parent id (категория новости/сайт) $allpid - массив из всех категорий, исключая $pid создаваемой новости CREATE TABLE testim AS SELECT * FROM news WHERE id = $id; TRUNCATE testim; foreach ($allpid as $pid) { INSERT INTO testim SELECT * FROM news WHERE id = $id; UPDATE testim SET id=NULL; UPDATE testim SET pid=$pid; } INSERT INTO news SELECT * FROM testim; DROP TABLE testim; так пойдет или можно как-то красивше сделать?