За последние 24 часа нас посетили 38590 программистов и 8127 роботов. Сейчас ищут 1736 программистов ...

Позиция в HTML таблице после добавления записи другой страницей (скриптом).

Тема в разделе "PHP для новичков", создана пользователем alex-777, 27 июл 2023.

Метки:
  1. alex-777

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

    С нами с:
    11 апр 2019
    Сообщения:
    42
    Симпатии:
    0
    Всем привет.

    Есть пара вопросов.

    Есть таблица клиентов, каждой строке прописана id с номером по порядку.
    После каких либо действий на другой странице, при возвращении обработанная запись становится первой. Может есть какой простой, но более правильный способ?

    Но при добавлении записи такой способ не работает. Есть ли какой способ, спозиционироваться на только что добавленную запись?

    Спасибо
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    1. в БД нет понятия "номер по порядку"... все зависит от сортировки
    2. при выводе из БД используете какую сортировку?
     
  3. alex-777

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

    С нами с:
    11 апр 2019
    Сообщения:
    42
    Симпатии:
    0
    Сортировки разные для разных фильтров, но при выводе таблицы формирую номер по порядку на данный момент, и при работе со строкой таблицы, по этому номеру возвращаюсь.

    Планирую для фильтра Все сделать сортировку по id клиента в базе данных в обратном порядке, соответственно он будет первым. А после добавления записи автоматом ставить фильтр Все.

    Думал, может есть какой "стандартный" метод для таких задач.

    P.S. И когда я писал id в самом первом посте, это не id с базы данных, это id строки таблицы.
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    неясна ваша "задача"
    Еще раз - в БД нет понятия "номер по порядку" ... в данный момент, не в данный момент ... нету просто

    стандартно - применяют вывод с конкретной сортировкой.. например по названию, или по id из БД....
    если по id - то как бы вы не меняли текущие записи - их порядок не изменится ... если конечно вы адекватно меняете записи.. .а не удаляете а потом добавляете
     
  5. Slava Rozhnev

    Slava Rozhnev Новичок

    С нами с:
    6 сен 2021
    Сообщения:
    87
    Симпатии:
    26
    Адрес:
    https://phpize.online
    PHP:
    1. <?php
    2. $sql = "INSERT INTO MyGuests (firstname, lastname, email)
    3. VALUES ('John', 'Doe', 'john@example.com')";
    4.  
    5. if ($mysqli->query($sql) === TRUE) {
    6.   $last_id = $mysqli->insert_id;
    7.   echo "New record created successfully. Last inserted ID is: " . $last_id;
    8. } else {
    9.   echo "Error: " . $sql . "<br>" . $mysqli->error;
    10. }
    https://phpize.online/sql/mysql57/8...3/php/php81/f5ce8d46008eaa3a864836fdcc52c820/
     
  6. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    что мешает точно так-же добавлять якорь? #123 ? (вместо
    echo "New record created successfully. Last inserted ID is: " . $last_id; - делайте редирект на страницу с общей таблице + #$last_id )

    кардинально другой способ - ajax отображение таблицы, ajax добавление/редактирование записи в модальном всплывающем окне - поверх таблицы
     
    #6 ADSoft, 27 июл 2023
    Последнее редактирование: 27 июл 2023
  7. alex-777

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

    С нами с:
    11 апр 2019
    Сообщения:
    42
    Симпатии:
    0
    Я нечетко выразился, мое таблица и id не имеют никакого отношения к базе данных.
    Таблица это html таблица на html странице. При выводе по нужному фильтру записей из БД я даю номера по порядку, которые id - атрибуты строк html страницы. Соответственно при нажатии изменить и при переходе обратно, добавив к урле #pos123, я в браузере скролю страницу до нужного места, пусть чуть выше, но юзер сразу видит только что отредактированную запись.

    При добавлении так не получится. Но так как сортировка соответствует каждому фильтру, то при выборе всех записей я могу сделать сортировку по id из базы данных в обратном порядке, соответственно пользователь сразу увидит добавленную запись.

    Собственно есть ли другие варианты?
    --- Добавлено ---
    Юзеры изменяют записи, отобранные по фильтрам, а там нет сортировок по id.
    Так и сделал для всех таблиц, но эта таблица БД слишком большая, и на странице отображается меньше половины полей, а редактировать нужно все, то тут решил не возиться с ajax и модальным окном, а сделал форму на отдельной странице.

    Собственно получается, что при отображении всех записей, без фильтрации, после добавления я могу принудительно менять фильтр на Все, а для него использовать сортировку по id в обратном порядке.
     
  8. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    при добавлении или редактировании записи - сохраняйте текущие фильтры и сортировки.... например в localStorage, а при отображении таблицы - извлекайте эти данные и применяйте к данной таблице - + якорь через #
    не хотите через якорь - можно точно так же сохранять текущую позицию на экране и потом скроллить до нее
    --- Добавлено ---
    печально что нет .. обычно должно быть... так как фильтры сортировке не мешают
    --- Добавлено ---
    Еще более правильно - не отображать на странице большие и длинные портянки которые нужно скролить... обычно для этого используется пагинация... а высота таблицы с данными не превышает высоту экрана.... тогда и вопрос с позиционированием отпадет
     
  9. alex-777

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

    С нами с:
    11 апр 2019
    Сообщения:
    42
    Симпатии:
    0
    Делаю через якорь, сохраняю в $_SESSION. Cохранять текущую позицию на экране будет наверное больше мороки, но точнее, чем якорь? Получается это второй способ.

    Вот это не понял. Я под фильтром имею ввиду отсортировать клиентов с задолженностью больше 1000.
    Упрощенно
    WHERE cli_debt > 1000
    ORDER BY cli_debt DESC
    То id записи будет вразнобой.

    Пагинация есть, но сильно разные дисплеи используются, от 15" ноутов с низким разрешениям до крутых ноутов и 32" мониторов.

    Спасибо, стало все понятнее.
     
  10. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    не буду сомневаться в вашем 30-летнем опыте...
    но это из азов... Фильтр - накладывает ограничения, Сортировка - изменяет порядок вывода

    в вашем случае - то что в WHERE это фильтр ...вы отфильтровываете записи... накладываете ограничения
    а то что в ORDER BY - это сортировка ... в общем случае она может и не совпадать с полем для фильтра....

    вразнобой или не вразнобой id какая нафиг разница? строке делайте якорь id из БД который... а не этот ваш порядковый номер и будет вам счастье
     
  11. alex-777

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

    С нами с:
    11 апр 2019
    Сообщения:
    42
    Симпатии:
    0
    Все просто, всю ночь работал, поэтому и вопрос невнятно написал. Сейчас вижу, что тупил. Да и мои "таблица" и "id" ввели всех в заблуждение. А теперь вижу, что еще и номер страницы нужно передавать.

    А насчет вразнобой, там первый id на шапку таблицы, поэтому я делал якорь со смещением на 1 позицию и в случае реального id из БД это не работало. Почему так, не знаю, с версткой у меня проблемы. Весь опыт программирование не web.

    Спасибо
     
  12. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    ну значит надо узнать... показать получившуюся верстку - и спросить почему не переходит или еще чего ... для якоря это сработает полюбому
    лишь бы id уникальный был