За последние 24 часа нас посетили 40450 программистов и 6258 роботов. Сейчас ищут 1508 программистов ...

table sortable serialize

Тема в разделе "PHP для новичков", создана пользователем Assassin-3009, 12 май 2017.

  1. Assassin-3009

    Assassin-3009 Активный пользователь

    С нами с:
    24 май 2016
    Сообщения:
    55
    Симпатии:
    0
    Строки таблицы
    Код (Text):
    1. <tr id="product_1">...</tr>
    2. <tr id="separator_1">...</tr>
    3. <tr id="product_2">...</tr>
    4. <tr id="separator_2">...</tr>
    5. <tr id="product_3">...</tr>
    6. <tr id="product_4">...</tr>

    Скрипт передачи в sortable.php
    Код (Text):
    1. $(document).ready(function(){
    2. $('#sortable tbody').sortable({ opacity: 1, cursor: 'move', axis: 'y', revert: 'true', containment: '.sortablebox', delay: 100,
    3. update: function(event, ui) {
    4. var id = $(this).sortable("serialize");
    5. $.post('/include/management/goods/sortable.php', id);
    6. }
    7. });
    8. });

    sortable.php
    Код (Text):
    1. $pos=1;
    2. foreach ($_POST['id'] as $id)
    3. {
    4.  
    5. if(stristr($id, 'product_') == TRUE)
    6. {
    7. $id = str_replace("product_", "", $id);
    8. mysqli_query($db,"UPDATE goods SET position='".$pos."' WHERE id='".$id."'");
    9. }
    10.  
    11. if(stristr($id, 'separator_') == TRUE)
    12. {
    13. $id = str_replace("separator_", "", $id);
    14. mysqli_query($db,"UPDATE separators SET position='".$pos."' WHERE id='".$id."'");
    15. }
    16.  
    17. $pos++;
    18. }

    Данные в бд не обновляются.
    Сортировка и запись в бд работает у другой таблицы, но у неё одинаковые айди у всех строк, если поставить всем id="id_" или id="item-", поэтому проблем с ней имеется. Но мне в приведённой таблице нужно различать товары (product) от разделителей (separator) при принятии данных скриптом sortable.php
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    Assassin-3009 нравится это.
  3. Assassin-3009

    Assassin-3009 Активный пользователь

    С нами с:
    24 май 2016
    Сообщения:
    55
    Симпатии:
    0
    Не передаются данные с айди "product_1", "product_2", "separator_1", "separator_2" и так далее. Если сделать всем "id_1", "id_2", ... - то работает, но как мне тогда различать product и separator?
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    так есть имя id у формы и её значение, например 1. Зачем писать id_1?
     
  5. Assassin-3009

    Assassin-3009 Активный пользователь

    С нами с:
    24 май 2016
    Сообщения:
    55
    Симпатии:
    0
    Зачем мне id формы? В sortable.php посредством ajax передаётся массив с id всех tr в таблице. Но он передаётся если у всех tr id="id_[n]". Это правило sortable serialize. В sortable.php принимаются уже только цифры-айди, сам метод отрезает этот "id_".
     
  6. Assassin-3009

    Assassin-3009 Активный пользователь

    С нами с:
    24 май 2016
    Сообщения:
    55
    Симпатии:
    0
    Разобрался, благодаря своему последнему сообщению)
    Раз он обрезает "id_", то что после него, то и передаётся =>
    у товаров будут: id="id_product1", id="id_product2"...
    а у разделителей: id="id_separator1", id="id_separator2"...

    sortable.php будет принимать значения в виде product1 и separator1, которые я и буду проверять функцией stristr и обрезать функцией str_replace, оставляя только цифры, которые залетят в бд

    Спасибо всем! (тебе)