|
|
|
| Будте добры, помогите.
Нужно записи в таблице менять местами (изменить позицию).
Выводится список
Маша
Паша
Даша
Справа две ссылки вверх и вниз и при нажатии можно изменять позицию записей.
Если возможно покажите пожайлуста на примере.
Заранее спасибо. | |
|
|
|
|
|
|
|
для: brys
(25.12.2006 в 21:38)
| | До конца не понятна задача - где будут менятся записи. Если речь о таблице в БД, то создается отдельное поле н-р SORT и при выводе по нему делается сортировка
select * fom 'table' order by SORT
|
а для редактирования делаете около каждой строки ссылку типа
<a href='move.php?id=id записи&move=up&sort=текущее число сортировки>up</a> <a href='move.php?id=id записи&move=down&sort=текущее число сортировки>up</a> Маша
по ссылке нужно передать три параметра:
1. id перемещаемой записи
2. Куда перемещать вверх или вниз
3. Текущий номер сортировки для записи
В скрипте делаете следующее (из рабочего проекта):
<?
# Здесь нужно подключится к бд
if(isset($_GET['id']) && $_GET['id']!="" && isset($_GET['move']) && isset($_GET['sort']))
{
$id=intval($_GET['id']);
### условие для WHERE
if($_GET['move'] == "up")
{
$move = "<";
$desc = "DESC";
}
else
{
$move = ">";
$desc = "";
}
### Находим соседа
$sql = "SELECT
ID,
SORT
FROM
`ваша таблица`
WHERE
SORT ".$move." '".$_GET['sort']."'
ORDER BY SORT ".$desc."
LIMIT 0,1";
$rez = mysql_query($sql);
while ($data = mysql_fetch_assoc($rez))
{
$x_tmp['ID'] = $data['ID'];
### присваиваем соседу SORT перемещаемого
$x_tmp['SORT'] = $_GET['sort'];
$x[] = $x_tmp;
$sort = $data['SORT'];
}
$x_tmp['ID'] = $_GET['id'];
### присваиваем меремещаемому SORT соседа
$x_tmp['SORT'] = $sort;
$x[] = $x_tmp;
### если ошибок не произошло то в масиве должно быть 2 элемента
if(count($x) == 2)
{
foreach($x as $y)
{
$sql = "UPDATE
`ваша таблица`
SET
SORT = '".$y['SORT']."'
WHERE
ID = '".$y['ID']."'";
mysql_query($sql);
//dump($sql);
}
}
header("Location: перемещаете юзера обратно на страницу сортировки");
exit;
}
?>
|
Ну а при создании новой записи: делаете транзакцию -> узнаете максимальный номер SORT -> и добавляете новую запись где SORT на 1 болше максимального.
При создании страницы со списком сортировки нужно у первого не выводить ссылку с up а у последнего соответственно с down.
Впринципе если система многопользовательская, то придется всунуть транзакцию и при перемещении записи в таблице. | |
|
|
|
|
|
|
|
для: tonnal
(25.12.2006 в 22:44)
| | Спасибо щас буду пробывать. | |
|
|
|