Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Правильное удаление новости через скрипт php 
:(
    Опции темы
Alexey007
Дата 31.3.2007, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.3.2007

Репутация: нет
Всего: 1



Вообщем так. У меня на странице есть список новостей и рядом с каждой копка удалить.
мне нужно что бы если я удалю какую-нибудт новость с номером 5. (а у меня есть и 6,7,8,9 и т.д.), то чтобы id  в базе данных правильно переписал пре вышестоящие новости... а то получается: 1,2,3,4,6,7,8.....
и 5 номер пропадает. помогите пожалуйста.
PM MAIL   Вверх
xolod
Дата 31.3.2007, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 24.5.2005
Где: Когда: Что:

Репутация: нет
Всего: 13



Цитата(Alexey007 @  31.3.2007,  22:23 Найти цитируемый пост)
чтобы id  в базе данных правильно переписал

Зачем? А когда будет 100 000 записей и удалится 87675-я, тоже все предыдущие обновлять будете?
Пахнет проблемами проектирования. Или непониманием идеологии субд?
PM MAIL   Вверх
SelenIT
Дата 31.3.2007, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 9
Всего: 401



Alexey007, id - это НЕ номер! PHP FAQ: MySQL. FAQ. ID.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Alexey007
Дата 1.4.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.3.2007

Репутация: нет
Всего: 1



Спасибо.тогда другой вопрос как подправить код, чтобы "пустот" не было. т.е. если под таким id статьи нет, то не нужно созавать на него ссылку. вот код:
Код

$sql1=mysql_fetch_array(mysql_query( "SELECT id FROM news LIMIT 1" ));
$back = $id-1;
if($id-1 < $sql1[id]){
$back_to = '';
}else{
$back_to = '<a href=index.php?action=news_archiv&id='.$back.'>Предыдущая</a>';
}
echo $back_to;

$sql=mysql_fetch_array(mysql_query( "SELECT id FROM news order by id desc LIMIT 1" ));
$next = $id+1;
if($id+1 > $sql[id]){
$next_to = '';
}else{
$next_to = '<a href=index.php?action=news_archiv&id='.$next.'>Следущая</a>';
}
echo $next_to;

при следущая если будет несуществующий id, ссылку делать по след. СУЩествующий id.
PM MAIL   Вверх
mclight
Дата 4.4.2007, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 6.7.2005
Где: Baku, Azerbaijan

Репутация: нет
Всего: 2



а зачем Вам так путаться.......Вы же из базы берете id, а значит такая запись там есть! 
взяли id? 
потом создайте ссылку......вот и все......скрипт выберет статью где id равен значению переменной в ссылке
--------------------
Как я решал подводные камни Cakephp и не только
PM WWW ICQ MSN   Вверх
Alexey007
Дата 4.4.2007, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.3.2007

Репутация: нет
Всего: 1



Вы меня не поняли.
У меня при выводе ссылок след. и пред. берется существующий id а потом идет +-1.
Как сделать проверку что при таком id новость существует?
PM MAIL   Вверх
Vaulter
Дата 4.4.2007, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 3
Всего: 22



Alexey007, бери не +-1
а например для 5 новости
Код

SELECT news_id 
FROM `news` WHERE news_id != '5'
ORDER BY ABS(news_id - '5') LIMIT 2

запрос возвратит пред. и след. новость


--------------------
PM MAIL WWW ICQ   Вверх
mclight
Дата 5.4.2007, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 160
Регистрация: 6.7.2005
Где: Baku, Azerbaijan

Репутация: нет
Всего: 2



у вас не правильный подход.......ID это не нумерация......это любое значение по которому можно идентифицировать запись в базе..................
--------------------
Как я решал подводные камни Cakephp и не только
PM WWW ICQ MSN   Вверх
SelenIT
Дата 5.4.2007, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 9
Всего: 401



Vaulter, это далеко не всегда будет давать желаемый результат...

Цитата(Alexey007 @  4.4.2007,  14:25 Найти цитируемый пост)
при выводе ссылок след. и пред. берется существующий id а потом идет +-1.
Как сделать проверку что при таком id новость существует?

Alexey007, правильный ответ - не делать такой глупой проверки, а запросить из самой базы наибольший id меньше текущего и наименьший id больше текущего. Это 2 запроса, с помощью UNION можно насильно объединить их в один:
Код

$q = "SELECT MAX(news_id) FROM `news` WHERE news_id < '".$id."'
UNION
SELECT MIN(news_id) FROM `news` WHERE news_id > '".$id."'";

Можно и не объединять. Если какой-то из запросов вернет NULL, значит, эта новость - соотв-но первая или последняя в ряду.

Это сообщение отредактировал(а) SelenIT - 5.4.2007, 08:33


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Vaulter
Дата 5.4.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 3
Всего: 22



Цитата(SelenIT @ 5.4.2007,  09:32)
Vaulter, это далеко не всегда будет давать желаемый результат...

далеко не всегда это сколько в процентах?

и почему Вы так считаете? хочу пример


--------------------
PM MAIL WWW ICQ   Вверх
Glip
Дата 5.4.2007, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 1
Всего: 18



Vaulter,  к стати да. при news_id  1, 2, 5, 6, 7 например результат - 6, 7
а сначала мне тоже понравилось smile


--------------------
user posted image
PM MAIL   Вверх
Vaulter
Дата 5.4.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 3
Всего: 22



Glip, ага, усек.
да действительно.
тогда действительно оптимален вариант с MAX и MIN (сам тоже его использовал давно давно)


--------------------
PM MAIL WWW ICQ   Вверх
Alexey007
Дата 5.4.2007, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.3.2007

Репутация: нет
Всего: 1



спасибо люди добрые) ток у меня не пашет smile 

Это сообщение отредактировал(а) Alexey007 - 5.4.2007, 15:58
PM MAIL   Вверх
Alexey007
Дата 5.4.2007, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.3.2007

Репутация: нет
Всего: 1



Код

$sql_back=mysql_fetch_array(mysql_query( "SELECT MIN(id) FROM `news` WHERE id > '".$id."'" ));

$back_to = '<a href=index.php?action=news_archiv&id='.$id.'>Назад</a>';

echo $back_to;


Это сообщение отредактировал(а) Alexey007 - 5.4.2007, 16:03
PM MAIL   Вверх
Vaulter
Дата 5.4.2007, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 3
Всего: 22



Alexey007, так это как раз вперед
а назад будет MAX(id) WHERE id < 


--------------------
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.