Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Записи в таблице менять местами
 
 автор: brys   (25.12.2006 в 21:38)   письмо автору
 
 

Будте добры, помогите.
Нужно записи в таблице менять местами (изменить позицию).
Выводится список

Маша
Паша
Даша

Справа две ссылки вверх и вниз и при нажатии можно изменять позицию записей.

Если возможно покажите пожайлуста на примере.
Заранее спасибо.

   
 
 автор: tonnal   (25.12.2006 в 22:44)   письмо автору
 
   для: 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.

Впринципе если система многопользовательская, то придется всунуть транзакцию и при перемещении записи в таблице.

   
 
 автор: brys   (26.12.2006 в 13:07)   письмо автору
 
   для: tonnal   (25.12.2006 в 22:44)
 

Спасибо щас буду пробывать.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования