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

Поиск:

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


Шустрый
*


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

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



но проблема в том что ссылка на ту новость, на которой страница в данный момент находится!

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


Эксперт
***


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

Репутация: 7
Всего: 54



Alexey007, в вообще к дате(timestamp) привязываюсь при решении подобных задач(новости и т.д.), либо к другим параметрам.

Если так хочется по Id и он у тебя auto_incriment, то думаю где-то так надо:
Код

<?php
$id = intval($_GET['id']);//или откуда там он у тебя берется:)
$sql = "(
        SELECT 0,`id`
        FROM `news`
        WHERE `id` <".$id."
        ORDER BY `id` DESC
        LIMIT 1
        )
        UNION (
        SELECT 1,`id`
        FROM `news`
        WHERE `id` >".$id."
        ORDER BY `id` ASC
        LIMIT 1
        )";
$query = mysql_query($sql) or die(mysql_error());
while(list($type,$nId) = mysql_fetch_row($query)) {
    if ($type == 0) {
        $back_to = '<a href=index.php?action=news_archiv&id='.$nId.'>Предыдущая</a>';
    } elseif($type == 1) {
        $next_to = '<a href=index.php?action=news_archiv&id='.$nId.'>Следущая</a>';
    }
}
print $back_to.' '.$next_to;
?>



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Alexey007
Дата 5.4.2007, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ошибка. ваще запрос не выполняет:(
PM MAIL   Вверх
mishaSL
Дата 5.4.2007, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 7
Всего: 54



Цитата(Alexey007 @  5.4.2007,  19:31 Найти цитируемый пост)
ошибка. 

Доступно показал ошибку smile  smile 
Скажи какая версия MySQL, проверь передается ли туда переменная $id. И выведи запрос из скрипта. А также было бы хорошо увидеть структуру таблицы.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Alexey007
Дата 5.4.2007, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



покопавшись понял, что он не понимает UNION и запросы в скобках. сделал без этого, но ВСЕРАВНО выводит id новости на которой щас я нахожусь smile 
PM MAIL   Вверх
SelenIT
Дата 5.4.2007, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Alexey007, Вы ж сами пихаете в ссылку свой старый id из переменной, а не новый, который только что достали из базы... smile


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


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


Шустрый
*


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

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



Версия
Цитата

MySQL 3.23.53-max на localhost как root@localhost

Таблица:
Код

CREATE TABLE news (
  id bigint(20) NOT NULL auto_increment,
  name varchar(255) default NULL,
  text text,
  site varchar(50) default NULL,
  date date NOT NULL default '0000-00-00',
  img text NOT NULL,
  PRIMARY KEY  (id)
);


Добавлено через 6 минут и 44 секунды
P.S. качаю новую версиюsmile) может поможет, а может и нет.. на сервере сайта стоит 4 MySQL, но на нем ещё не проверял...
PM MAIL   Вверх
mishaSL
Дата 5.4.2007, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 7
Всего: 54



Цитата(Alexey007 @  5.4.2007,  19:42 Найти цитируемый пост)
MySQL 3.23.53-max

 smile  smile  smile 
Это просто ужас smile  Но не критично smile 
1. Советую Поставить MySQL 4.1.13 и выше

Цитата(Alexey007 @  5.4.2007,  19:42 Найти цитируемый пост)
на сервере сайта стоит 4 MySQL

Должно работать. Оператор UNION был добавлен в MySQL 4.0.0

Если хочешь, то раздели на два запроса и будет на MySQL 3.23 работать smile 



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Alexey007
Дата 5.4.2007, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ну типа настроил, ток прикол, он выводит кол-во ссылок на 1 меньше чем всех новостей smile 
PM MAIL   Вверх
mishaSL
Дата 5.4.2007, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 7
Всего: 54



Цитата(Alexey007 @  5.4.2007,  20:25 Найти цитируемый пост)
он выводит кол-во ссылок на 1 меньше чем всех новостей

непонял, что он выводит?
покажите весь код пожалуйста smile 


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Alexey007
Дата 5.4.2007, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



код:
Код

$id = intval($_GET['id']);//èëè îòêóäà òàì îí ó òåáÿ áåðåòñÿ:)
$sql = "(
        SELECT 0,`id`
        FROM `news`
        WHERE `id` <".$id."
        ORDER BY `id` DESC
        LIMIT 1
        )
        UNION (
        SELECT 1,`id`
        FROM `news`
        WHERE `id` >".$id."
        ORDER BY `id` ASC
        LIMIT 1
        )";
$query = mysql_query($sql) or die(mysql_error());
while(list($type,$nId) = mysql_fetch_row($query)) {
    if ($type == 0) {
        $back_to = '<a href=index.php?action=news_archiv&id='.$nId.'>Ïðåäûäóùàÿ</a>';
    } elseif($type == 1) {
        $next_to = '<a href=index.php?action=news_archiv&id='.$nId.'>Ñëåäóùàÿ</a>';
    }
}
print $back_to.' '.$next_to;

выводит:
Код

Предыдущая СледущаяПредыдущая Следущая

зато ссылки работаютsmile))))
всего 3 новости в базе

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


Эксперт
***


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

Репутация: 7
Всего: 54



Alexey007, Вы что-то путаете. Только что проверил, все работает и выводит один раз. Вы выполняете код 2 раза, посмотрите внимательнее на весь ваш код. Я не зря просил выложить весь кусок кода, который отвечает за это smile 


Это сообщение отредактировал(а) mishaSL - 5.4.2007, 20:50


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
Alexey007
Дата 5.4.2007, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



у меня 2 раза принтsmile)

Добавлено @ 21:38
А теперь давайте перейдем непосредсвенно к заглавию темыsmile
удаление новостей из базы вот код:
Код

if(isset($act))
  {
  if('go')
    {
    echo'12';
    if($res=mysql_query("delete from news where id=".$_GET['id']." limit 1") and
        $res=mysql_query("Alter table `news` auto_increment=0"))
{
echo'<b><font color="#FF0000"><center>Удалена!!</b></center></font>';
}

      }
      }

Задача в следущем: сделать потверждение на удаление. вот кнопка непосредственно на удаление:
Код

 echo '<form action="&act=go" method="post">
<input type="Hidden" name="id" value="'.$obj->id.'">
<input type="Submit" value="Удалить">
</form>';


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


Опытный
**


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

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



а для чего limit и Alter table ?


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


Шустрый
*


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

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



не знаюsmile
PM MAIL   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




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


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

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