| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > Правильное удаление новости через скрипт php |
| Автор: Alexey007 31.3.2007, 22:23 |
| Вообщем так. У меня на странице есть список новостей и рядом с каждой копка удалить. мне нужно что бы если я удалю какую-нибудт новость с номером 5. (а у меня есть и 6,7,8,9 и т.д.), то чтобы id в базе данных правильно переписал пре вышестоящие новости... а то получается: 1,2,3,4,6,7,8..... и 5 номер пропадает. помогите пожалуйста. |
| Автор: xolod 31.3.2007, 22:44 |
Зачем? А когда будет 100 000 записей и удалится 87675-я, тоже все предыдущие обновлять будете? Пахнет проблемами проектирования. Или непониманием идеологии субд? |
| Автор: SelenIT 31.3.2007, 22:48 |
| Alexey007, id - это НЕ номер! http://phpfaq.ru/mysql#id |
| Автор: Alexey007 1.4.2007, 13:40 | ||
Спасибо.тогда другой вопрос как подправить код, чтобы "пустот" не было. т.е. если под таким id статьи нет, то не нужно созавать на него ссылку. вот код:
при следущая если будет несуществующий id, ссылку делать по след. СУЩествующий id. |
| Автор: mclight 4.4.2007, 08:18 |
| а зачем Вам так путаться.......Вы же из базы берете id, а значит такая запись там есть! взяли id? потом создайте ссылку......вот и все......скрипт выберет статью где id равен значению переменной в ссылке |
| Автор: Alexey007 4.4.2007, 14:25 |
| Вы меня не поняли. У меня при выводе ссылок след. и пред. берется существующий id а потом идет +-1. Как сделать проверку что при таком id новость существует? |
| Автор: Vaulter 4.4.2007, 16:16 | ||
| Alexey007, бери не +-1 а например для 5 новости
запрос возвратит пред. и след. новость |
| Автор: mclight 5.4.2007, 08:04 |
| у вас не правильный подход.......ID это не нумерация......это любое значение по которому можно идентифицировать запись в базе.................. |
| Автор: Vaulter 5.4.2007, 11:50 | ||
далеко не всегда это сколько в процентах? и почему Вы так считаете? хочу пример |
| Автор: Glip 5.4.2007, 12:04 |
| Vaulter, к стати да. при news_id 1, 2, 5, 6, 7 например результат - 6, 7 а сначала мне тоже понравилось |
| Автор: Vaulter 5.4.2007, 12:24 |
| Glip, ага, усек. да действительно. тогда действительно оптимален вариант с MAX и MIN (сам тоже его использовал давно давно) |
| Автор: Alexey007 5.4.2007, 15:11 |
| спасибо люди добрые) ток у меня не пашет |
| Автор: Alexey007 5.4.2007, 16:02 | ||
|
| Автор: Vaulter 5.4.2007, 16:32 |
| Alexey007, так это как раз вперед а назад будет MAX(id) WHERE id < |
| Автор: Alexey007 5.4.2007, 18:11 |
| но проблема в том что ссылка на ту новость, на которой страница в данный момент находится! |
| Автор: mishaSL 5.4.2007, 19:19 | ||
| Alexey007, в вообще к дате(timestamp) привязываюсь при решении подобных задач(новости и т.д.), либо к другим параметрам. Если так хочется по Id и он у тебя auto_incriment, то думаю где-то так надо:
|
| Автор: Alexey007 5.4.2007, 19:31 |
| ошибка. ваще запрос не выполняет:( |
| Автор: mishaSL 5.4.2007, 19:36 |
Доступно показал ошибку Скажи какая версия MySQL, проверь передается ли туда переменная $id. И выведи запрос из скрипта. А также было бы хорошо увидеть структуру таблицы. |
| Автор: Alexey007 5.4.2007, 19:39 |
| покопавшись понял, что он не понимает UNION и запросы в скобках. сделал без этого, но ВСЕРАВНО выводит id новости на которой щас я нахожусь |
| Автор: SelenIT 5.4.2007, 19:40 |
| Alexey007, Вы ж сами пихаете в ссылку свой старый id из переменной, а не новый, который только что достали из базы... |
| Автор: Alexey007 5.4.2007, 19:42 | ||||
Версия
Таблица:
Добавлено через 6 минут и 44 секунды P.S. качаю новую версию |
| Автор: mishaSL 5.4.2007, 19:55 |
Это просто ужас 1. Советую Поставить MySQL 4.1.13 и выше Должно работать. Оператор UNION был добавлен в MySQL 4.0.0 Если хочешь, то раздели на два запроса и будет на MySQL 3.23 работать |
| Автор: Alexey007 5.4.2007, 20:25 |
| ну типа настроил, ток прикол, он выводит кол-во ссылок на 1 меньше чем всех новостей |
| Автор: mishaSL 5.4.2007, 20:27 |
непонял, что он выводит? покажите весь код пожалуйста |
| Автор: Alexey007 5.4.2007, 20:32 | ||||
код:
выводит:
зато ссылки работают всего 3 новости в базе |
| Автор: mishaSL 5.4.2007, 20:50 |
| Alexey007, Вы что-то путаете. Только что проверил, все работает и выводит один раз. Вы выполняете код 2 раза, посмотрите внимательнее на весь ваш код. Я не зря просил выложить весь кусок кода, который отвечает за это |
| Автор: Alexey007 5.4.2007, 21:32 | ||||
| у меня 2 раза принт Добавлено @ 21:38 А теперь давайте перейдем непосредсвенно к заглавию темы удаление новостей из базы вот код:
Задача в следущем: сделать потверждение на удаление. вот кнопка непосредственно на удаление:
|
| Автор: Glip 5.4.2007, 21:46 |
| а для чего limit и Alter table ? |
| Автор: Alexey007 5.4.2007, 22:11 |
| не знаю |
| Автор: mishaSL 6.4.2007, 09:06 | ||||
| Alexey007, а ваш код у вас вообще работает? Передаете методом POST, получаете данные из GET Вот вам два варианта: №1
№2
Выбирайте как вам удобнее |
| Автор: Alexey007 6.4.2007, 16:45 |
| У меня работает мой код |
| Автор: Alexey007 6.4.2007, 17:38 |
| спасибо. теперь потребность в корзине новостей. Как правильно послать запрос, чтобы переместить данные из одной в другую? И в корзине чуть чуть надо этот запрос удаление изменить, сделать чтобы рядом ставить галочки а внизу одну кнопку удалить? |
| Автор: Glip 6.4.2007, 17:51 | ||
из одной в другую чего? не торопитесь, проверяйте то что написали перед тем как запостить и вас проще будет понять ;) |
| Автор: Alexey007 6.4.2007, 17:55 |
| Вообщем так. Есть 2 таблицы news и news_trash. Нужен запрос, чтобы из одной таблицы переместить(т.е. из одной удалить, в другую таблицу добавить) ВСЕ данные. |
| Автор: mishaSL 6.4.2007, 19:27 | ||
Вы сами ответили на свой вопрос - из одной таблицы удаляете в другую добавляете |
| Автор: Alexey007 7.4.2007, 19:21 | ||||
| значит теперь когда идет редактирование новости) тож надо поправить, помогите плиз... Можно как-нибудь усовершенствовать код.. или упростить например. Вот кнопка
Вот самый edit:
Ещё задача: сделать фвозможность делать новость невидимой... Поле в таблице я создам... но вот как быть с добалением данных? Есть не поле ввода текста, а поле для"Галочки". |
| Автор: mclight 9.4.2007, 07:06 |
| создайье еще один столбик.....назовем его visible, и все.....при чтении проверяйте его состояние, при добавлении пишите ему значение.... |
| Автор: Alexey007 9.4.2007, 15:03 |
| ну это уже дело техники)) а в коду что-нибудь для упрощения поменять надо?) |
| Автор: Glip 9.4.2007, 15:55 |
| можно посмотреть на http://ru.php.net/manual/en/function.mysql-fetch-assoc.php мне кажется оно немного уместнее |
| Автор: Alexey007 24.4.2007, 23:22 |
| Что-то я неочень понял... Что делает эта функция? mclight, Вы не очень поняли мой вопрос про невидимость новости.. Поле я то создам, но вот как принимать данные от "галочки"? Т.е. как напсать этот код: есть галочка есть, в поле вносим YES, есть нету - NO. |
| Автор: mclight 25.4.2007, 07:48 | ||
применрно так:
а что мешает Вам проверить значение этого поля? если значение "yes", сделать его "no".....и наоборот |
| Автор: Alexey007 25.4.2007, 15:47 | ||
mclight, как принять сами данные в базу?вот сама галочка:
Вопрос, как подать запрос на добавления значеня в базу данных? |
| Автор: mclight 26.4.2007, 06:48 | ||||
если checkbox выбран, передастся переменная visible_n....
|
| Автор: Alexey007 26.4.2007, 23:06 |
| Ага, спасибо. Добавлено через 1 минуту и 7 секунд Glip, я что-то не очень понял, что делает эта функция? |
| Автор: mclight 27.4.2007, 09:09 |
mysql_fetch_num() - обращаетесь по номеру поля mysql_fetch_assoc() - обращаетесь по имени поля mysql_fetch_array() - обращаетесь как хотите, как по номеру, так и по имени |
| Автор: Glip 27.4.2007, 11:39 |
возвращает строку результата в виде ассоциативного массива имя_поля => значение посмотрите ссылку, там примеры есть |