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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка страниц по ID в базе. перемещение записей в списке вверх/вниз 
:(
    Опции темы
Heo
Дата 28.9.2005, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Мне надо сделать такую страницу в админке, в которой можно было бы пересортировать номера поля ID (он не является PRIMARY KEY). Как это реализовать?

Пример вывода страницы в админке:
Код

Название:    |   Действие:
-------------|--------------------
Название 1   |   [На самый верх][Выше][Ниже][В самый низ]
Название 2   |   [На самый верх][Выше][Ниже][В самый низ]
Название 3   |   [На самый верх][Выше][Ниже][В самый низ]
Название 4   |   [На самый верх][Выше][Ниже][В самый низ]


Это сообщение отредактировал(а) Heo - 28.9.2005, 14:43
PM MAIL   Вверх
-=Ustas=-
Дата 28.9.2005, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


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

Репутация: 17
Всего: 69



В самом SQL-запросе делаешь
Код

".....твой запрос.... ORDER BY id ".$_GET['order'];

, где $_GET['order'] имеет два значения ASC и DESC. К урлу прикручиваешь эту переменную, типа ...var1=$var1&var2=$var2&order=ASC или DESC.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Heo
Дата 28.9.2005, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



-=Ustas=-
Не совсем то что надо, к сожалению. Мне надо чтобы при нажатии на "действие", ID обновлялось у всех пунктов, и сортировалось так как я указал.
PM MAIL   Вверх
-=Ustas=-
Дата 29.9.2005, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


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

Репутация: 17
Всего: 69



Что-то я тебя не понял.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Darhazer
Дата 29.9.2005, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

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



Для тех, кто не понял

Ест таблица

Код

Название:    |   Действие:
-------------|--------------------
Название 1   |   [На самый верх][Выше][Ниже][В самый низ]
Название 2   |   [На самый верх][Выше][Ниже][В самый низ]
Название 3   |   [На самый верх][Выше][Ниже][В самый низ]
Название 4   |   [На самый верх][Выше][Ниже][В самый низ]


При нажатие Ниже должна получиться таблица

Код

Название:    |   Действие:
-------------|--------------------
Название 2   |   [На самый верх][Выше][Ниже][В самый низ]
Название 1   |   [На самый верх][Выше][Ниже][В самый низ]
Название 3   |   [На самый верх][Выше][Ниже][В самый низ]
Название 4   |   [На самый верх][Выше][Ниже][В самый низ]


Делал уже такой скрипт... у меня должен бит готовий код, поищу, а то лен писать сново... ;)

P.S.
Нашел. Делано для PostgeSQL БД. Надо отредактировать запроси

Код

function moveUp($EntryId){

        $query = 'select "Id","Order" from "Pages" where "ParentId"='.$this->PageId.' order by "Order"';
        $result = pg_query($query) or die("cannot select");
        $ContentEntries = array();
        while ($row = pg_fetch_object($result)){
            $ContentEntries[] = array(
            'Id' => $row->Id,
            'Order' => $row->Order
            );
        }

        foreach ($ContentEntries as $key=>$ContentEntry){
            if ( $ContentEntry['Id'] == $EntryId ){
                $ThisEntry = $ContentEntries[$key];
                $PrevEntry = $ContentEntries[--$key];
                break;
            }
        }

        $query = '
            update "Pages" set 
                "Order" = '.$PrevEntry['Order'].'
            where "Id"='.$ThisEntry['Id'].'
        ';
        $result = pg_query($query) or die('cannot update');

        $query = '
            update "Pages" set 
                "Order" = '.$ThisEntry['Order'].'
            where "Id"='.$PrevEntry['Id'].'
        ';
        $result = pg_query($query) or die('cannot update');



        //        header('Location:adminpages.php');

    }  // $direction {up|down}


    function moveDown($EntryId){
        $query = 'select "Id","Order" from "Pages" where "ParentId"='.$this->PageId.' order by "Order"';
        $result = pg_query($query) or die("cannot select");
        $ContentEntries = array();
        while ($row = pg_fetch_object($result)){
            $ContentEntries[] = array(
            'Id' => $row->Id,
            'Order' => $row->Order
            );
        }

        foreach ($ContentEntries as $key=>$ContentEntry){
            if ( $ContentEntry['Id'] == $EntryId ){
                $ThisEntry = $ContentEntries[$key];
                $NextEntry = $ContentEntries[++$key];
                break;
            }
        }

        $query = '
            update "Pages" set 
                "Order" = '.$NextEntry['Order'].'
            where "Id"='.$ThisEntry['Id'].'
        ';
        $result = pg_query($query) or die('cannot update');

        $query = '
            update "Pages" set 
                "Order" = '.$ThisEntry['Order'].'
            where "Id"='.$NextEntry['Id'].'
        ';
        $result = pg_query($query) or die('cannot update');

        //        header('Location:adminpages.php');

    }  // $direction {up|down}


Это сообщение отредактировал(а) Darhazer - 29.9.2005, 10:59


--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
-=Ustas=-
Дата 29.9.2005, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


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

Репутация: 17
Всего: 69



Ну так это тебе надо изменять id-ишник при нажатии, и сортировку проводить по этому полю. Что тут еще не понятного?
Добавлено @ 11:12
По-моему твой код гемор, у тебя там на опускание и поднятие элемента две функции, хотя можно обойтись одной, элементарной, просто в УРЛ-е передавать либо 1 либо -1, и всё.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Heo
Дата 30.9.2005, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата
у так это тебе надо изменять id-ишник при нажатии, и сортировку проводить по этому полю


Как изменить ID - это-то я понял. А как остальное отсортировать?
PM MAIL   Вверх
-=Ustas=-
Дата 30.9.2005, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


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

Репутация: 17
Всего: 69



Всмысле остальное? Сортировку по id делай и всё...


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Heo
Дата 4.10.2005, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



-=Ustas=-
Смотри, я нажал чтобы раздел2 переместился наверх. То есть он получает ID = 1. НО Раздел1 тоже имеет ID = 1. То есть надо сделать так, чтобы у всех разделов обновился ID
Добавлено @ 12:07
вот это я имел ввиду под словом "отсортировать"
PM MAIL   Вверх
-=Ustas=-
Дата 4.10.2005, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


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

Репутация: 17
Всего: 69



Ну пробегайся циклом по ID и переименовывай их в поряде возрастания, после их выборки. А вообще для подобных целей нужно заводить дополнительное поле, чтоб id-ишники записей не трогать.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Heo
Дата 11.10.2005, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



То есть, допустим, таблица category имеет следущий вид:

Код

cat_id | cat_name | cat_desc | cat_sort_id


Сортировка идёт ао cat_sort_id. У меня есть 3 категории в таблице - cat1 (cat_id=1), cat2 (cat_id=2), cat3 (cat_id=3). Я присваиваю сроке cat3 в столбец cat_sort_id значение 1.

Какой надо сделать запрос (и цикл, как я понял) чтобы у строки cat1 сменить значение на 2, и у строки cat2 сменить значение на 3?

Можешь дать пример, пожалуйста?
PM MAIL   Вверх
americanets
Дата 20.12.2006, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

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



есть база 

id nazvanie nazv_menu parent content

есть вложенные страницы на несколько уровней, как переместить запись в списке выше или ниже, те изменить id и соответственно parent как я понимаю

страница                  [выше] [ниже]
  подстраница          [выше] [ниже]
    подподстранца    [выше] [ниже]
страница                  [выше] [ниже]
страница                  [выше] [ниже]
страница                  [выше] [ниже]
  страница                [выше] [ниже]
страница                  [выше] [ниже]
 


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
Bikutoru
Дата 20.12.2006, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлекающийся
**


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

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



Очень сложно ответить на твой вопрос хотя бы по той причине, что нет никакой информации о том, как именно строится дерево. Возможно, что порядок страниц выводимых на одном уровне действительно задается на основе id, но нет никаких гарантий, что он формируется, например, на основе имени страницы. Так что ответить на этот вопрос нельзя до тех пора, пока нельзя увидеть код, с помощью которого это дерево строится...
Цитата(americanets @  20.12.2006,  10:23 Найти цитируемый пост)
как переместить запись в списке выше или ниже, те изменить id и соответственно parent как я понимаю

Вот id трогать не нужно. Нет никаких гарантий, что этот самый id в качестве внешнего ключа в других таблицах. Соответственно, если ты изменишь id у какой-то страницы, то ты можешь потерять какую-то информацию...

Если ты действительно хочешь получить ответ, то нужно описать проблему более развернуто...




--------------------
Человек, словно в зеркале мир — многолик, 
Он ничтожен — и он же безмерно велик!
Омар Хайям
PM   Вверх
americanets
Дата 20.12.2006, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

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



щас код не помню весь, вечером посмотрю выложу, а так просто сортирую по id 


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
bondarenko_a
Дата 20.12.2006, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Менять можно только  parent 
Чтоб переместить выше, довольно просто как пример см ниже:
id name parent
1     A        0
2     B        0
3     C        2
4     D        2
5     E        4
Для наглядности:
A
B- 
  |C
  |D-
      |E
Чтоб переместить D наверх (при этом не потяряв его наследников) достаточно его парент сделать таким же как парент его парента =0 smile
A
B- 
  |C
D-
  |E

А что значит переместить вниз? Опиши конкретнее. В данном случае, Е перемещать некуда. Кто станет его парентом?


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


 




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


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

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