ФорумПрограммированиеPHP для идиотов → Сортировка списка =)

Сортировка списка =)

  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 7 декабря 2008 г. 13:25

    Вобщем выводится список чего либо.
    Порядок вывода каждой строки устанавливается администратором.

    Раньше я для каждой строки создавал поле и туда вводились числа, каким будет по счету каждый элемант. И в базе сортировал .
    А сейчас хочу сделать чтоб админ кнопками мог передвигать элемент вверх или вниз.
    А придумать как это сделать чето не получается =(

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 7 декабря 2008 г. 13:27, спустя 2 минуты 7 секунд

    не тупи!!! полюби!!!

    http://docs.jquery.com/UI/Sortable

    "Write less, Do MORE!!!" (jQuery)
    Сапожник без сапог
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 7 декабря 2008 г. 13:31, спустя 3 минуты 37 секунд

    Прежде чем тему создать я погуглил по запросу
    drag and drop jquery

    Нашел
    http://www.linkexchanger.su/2008/23.html
    Подумал то что нужно.
    НО, слишком много модулей подключать, это раз, А во вторых не знаю как мне потом получившиюся сортировку в базу сохранить?
    И еще, у меня данные табличные.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 7 декабря 2008 г. 13:41, спустя 9 минут 50 секунд

    насчет слишком много подключать … вы боитесь трафика?
    насчет данные табличные - используйте <li> <span ></span> для вывода в виде таблицы :)

    http://docs.jquery.com/UI/Sortable/sortable#examples

    ctrl+f + "change Function"
    думаю вас это должно натолкнуть на мысль как получить данные после сортировки :)
    Сапожник без сапог
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 7 декабря 2008 г. 13:43, спустя 2 минуты 40 секунд

    а вообще у меня вот есть такое жс код :)
    	$("ul[rel='sortable']").sortable(
    {
    stop:function() {
    ids = [];
    $(this).children("li").each(function () {ids.push($(this).attr("id"));});
    $("#"+$(this).attr("resultto")).val(ids.join("|"));
    }
    });


    а в html выводе я потмо пишу нечто вида

    <ul rel="sortable" resullto="result">
    <li id="12312">asdasd</li>

    </ul>
    <input type="hidden" name="order" id="resultto" />


    ну и получаю сортированный список с хендлером на сортировку :)
    Сапожник без сапог
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 7 декабря 2008 г. 13:58, спустя 11 минут 3 секунды

    насчет слишком много подключать … вы боитесь трафика?

    Нет, но на такую мелочь пожключать стока файлов.
    насчет данные табличные - используйте <li> <span ></span> для вывода в виде таблицы :)

    А можно пример?
    У меня выводится примерно так
    <table>
    <?php
    foreach($this->info_company as $var)
    {
    ?>
    <tr>
    <td>1</td>
    <td>2</td>
    <td>3</td>
    </tr>
    <?php
    }
    ?>
    </table>


    http://docs.jquery.com/UI/Sortable/sortable#examples

    А вы на русском что нибудь знаете?? Всетаки не в америке живем =)))

    ctrl+f + "change Function"

    Почему то не натолкнуло=(
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 7 декабря 2008 г. 13:59, спустя 1 минуту 11 секунд

    Timur, не совсем правиль меня поняли.
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 7 декабря 2008 г. 14:03, спустя 3 минуты 31 секунду

    В общем наверно теперь могу вопрос конкретизировать.

    Как мне получить и отправить в функцию  отсортированный список?

    <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    </ul>



    Я так понимаю что так

        $("ul[rel='sortable']").sortable(
    {
    stop:function() {
    ids = [];
    $(this).children("li").each(function () {ids.push($(this).attr("id"));});
    $("#"+$(this).attr("resultto")).val(ids.join("|"));
    }
    });

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 7 декабря 2008 г. 14:03, спустя 14 секунд

    английский учить и знать надо - не всю жизнь жить в говне россии. насчет подключать много файлов - я не против подключить много файлов ради того чтобы во всех браузерах мой сайт работал одинаково, а не писал "sorry browser is not IE, please upgrade you browser to ie6 for using this fucking shit site"
    Сапожник без сапог
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 7 декабря 2008 г. 14:04, спустя 30 секунд

    $("ul[rel='sortable']").sortable(
    {
    stop:function() {
    ids = [];
    $(this).children("li").each(function () {ids.push($(this).attr("id"));});
    $("#"+$(this).attr("resultto")).val(ids.join("|"));
    }
    });
    Сапожник без сапог
  • Professor

    Сообщения: 2089 Репутация: N Группа: Адекваты

    Spritz 7 декабря 2008 г. 14:14, спустя 10 минут 52 секунды

    английский учить и знать надо - не всю жизнь жить в говне россии

    Полностью согласен!!! Я стараюсь, но это сложновато для меня.

    Не хоче использовать код который работает, но который не понимаю.
    Разжуйте пожалуйста.
    1. $("ul[rel='sortable']").sortable это понятно
    2. stop:function() тоже все понятно
    3. ids = []; это что?
    4. $(this).children("li").each понятно
    5. ids.push($(this).attr("id")); теперь понятно и ids = []; =)
    это мы заносим в массив элементы по порядку??

    6. $("#"+$(this).attr("resultto")).val(ids.join("|")); это мы данные в join формируем??
    a) "#"+$(this).attr("resultto") непонятно
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 7 декабря 2008 г. 14:22, спустя 7 минут 18 секунд


    английский учить и знать надо - не всю жизнь жить в говне россии

    Полностью согласен!!! Я стараюсь, но это сложновато для меня.

    Не хоче использовать код который работает, но который не понимаю.
    Разжуйте пожалуйста.
    1. $("ul[rel='sortable']").sortable это понятно
    2. stop:function() тоже все понятно
    3. ids = []; это что?
    4. $(this).children("li").each понятно
    5. ids.push($(this).attr("id")); теперь понятно и ids = []; =)
    это мы заносим в массив элементы по порядку??

    6. $("#"+$(this).attr("resultto")).val(ids.join("|")); это мы данные в join формируем??
    a) "#"+$(this).attr("resultto") непонятно
    разжовывать где опнятно не стану, а вот остальное)

    ids.join("|") - бъединяем данные в массиве в строку через параметр |
    допустим было - 1,2,3,4,5,6,7,8,9 - массив, станет строка
    "1|2|3|4|5|6|7|8|9"

    $(this).attr("resultto") - получаем значение аттрибута "resultto" элемента this (активный ul).

    $("#"+$(this).attr("resultto")) - идем элемент с id = $(this).attr("resultto").
    $("#"+$(this).attr("resultto")).val("..") - присваиваем значение айденному элементу по иду.

    все просто, только смахивает на перл слегка)
    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!