как выбрать последнюю запись в таблице

Статус
В этой теме нельзя размещать новые ответы.

Safary

Новичок
Ага, понял! Отличный вариант, жаль что раньше его не знал, сейчас буду разбираться, хотя принцип действия понятен.
Спасибо вам большое, понятно обьяснили что даже до меня, тормоза дошло :)

Единственное, насчет сортировки не понял, точнее не до конца понял...Или полностью не понял...
тоесть поле sort, просто числа...

получается вот так на деле это выглядит:

-категория (sort=3)
------подкатегория (sort=1)
------подкатегория (sort=2)
------подкатегория (sort=3)
---------------подподкатегория (sort=1)
-категория (sort=2)
------подкатегория (sort=1)
------подкатегория (sort=2)

можете просто на моем шаблоне подписать что и как, просто саму систему пытаюсь понять.
 

dimagolov

Новичок
да, именно так. тогда вставка в категорию (в части сортировки) будет выглядеть
UPDATE tbl SET sort= sort+1 WHERE pid = 78 AND sort >= NewElementPos
 

Safary

Новичок
хм, всеравно не понял. А по каком полю сортировать тогда?
Ведь если отсортировать то что я написал выше по полю Sort, то вот что получится:

---------------подподкатегория (sort=1)
------подкатегория (sort=1)
------подкатегория (sort=1)
------подкатегория (sort=2)
-категория (sort=2)
------подкатегория (sort=2)
------подкатегория (sort=3)
-категория (sort=3)

че-то я совсем не пойму
 

findnext

Новичок
ну то как ты выводишь...select + кусок кода разумеется в упрощённом варианте
 

Safary

Новичок
вот так вывожу:
PHP:
$tree_tpl=explode('[separator]',file_get_contents('templates/admin/section_tree.html'));
$tree=str_replace('[tree_name]','разделы сайта',$tree_tpl[0]);
$tree=str_replace('[msg]',$msg,$tree);
$q=mysql_query("SELECT * FROM sections");
while($arr=mysql_fetch_array($q)){
$exp_tree=str_replace('[level-'.$arr['level'].']',$arr['name'],$tree_tpl[$arr['level']]);
$exp_tree=str_replace('[id]',$arr['id'],$exp_tree);
$tree.=$exp_tree;
}
$tree.=$tree_tpl[15];
$content.=$tree;

Это даже не упрощенный вариант =)
 

dimagolov

Новичок
Safary, тебе БД дана для того, чтобы отбирать НУЖНОЕ а не тянуть все подряд, как тянут все в рот дети до 3-х лет.
отбирай только нужную тебе категорию по pid
ну и сортируй в том же запросе.
 

Safary

Новичок
не, это скрипт админки, который всё дерево таблицы sections выводит, в нем редактировать, добавлять, изменять структуру можно, вот это я ща и делаю. А зачем сортировать в скрипте если можно чтобы сразу база была отсортирована и просто выводить моим скриптом?
 

dimagolov

Новичок
она у тебя отсортирована пока ты вносишь категории последовательно от первой, потом ее содержимое и т.д. то есть обходишь дерево в грубину. как только этот порядок обхода будет нарушен (добавлением чего-то в более старую категорию), так у тебя все и пойдет лесом.

глупая идея в админке отображать "все". править то тебе надо будет что-то конкретное, в конеретной категории, а все остальные будут ненужным баластом на странице.
 

Safary

Новичок
ну блин... почему глупо отображать... там вся структура сайта получается, очень удобно ведь, все каталоги... типа такой таблицы:

уроки
--photoshop
----веб-графика
----кнопки
----фотоэффекты
----текстовые эффекты
--3dsmax
----моделирование
----анимация
----освещение
--bryce
----моделирование
----освещение
софт
--программы
----анимация
----веб-дизайн
----система
----мультимедиа

Ну вот, типа добавляю категорию в админке и всё. если хочу че-то новое создать, удобно же очень по-моему...

Димаголов, есть какие-нибудь идеи, как сделать сортировку для такой таблицы?
Ну чтобы всё в таблице было осортировано уже, а выводить моим способом... Ну чтобы потом удобно было перемещать категории...

Я только 2 варианта вижу... первый - это сортировать просто цифрами(INT), тоесть поменял одну, и все которые больше тоже инкрементить придется..
или способ - 01.03.02 - как материальный путь, но тоже не очень хорошо-то будет :-(
Есть ещё какие-нибудь варианты?
 

dimagolov

Новичок
ты пытаешься построить дерево одним запросом. погугли на эту тему, какое представление дерева позволяет выводить его с минимальными телодвижениями.

начни тут
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху