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

Всем привет.

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

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

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

Спасибо

 

1. в БД нет понятия «номер по порядку»… все зависит от сортировки
2. при выводе из БД используете какую сортировку?

 

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

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

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

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

 

неясна ваша «задача»
Еще раз — в БД нет понятия «номер по порядку» … в данный момент, не в данный момент … нету просто

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

 

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/

 

что мешает точно так-же добавлять якорь? #123 ? (вместо
echo «New record created successfully. Last inserted ID is: » . $last_id; — делайте редирект на страницу с общей таблице + #$last_id )

кардинально другой способ — ajax отображение таблицы, ajax добавление/редактирование записи в модальном всплывающем окне — поверх таблицы

 

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

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

Собственно есть ли другие варианты?
— Добавлено —

Юзеры изменяют записи, отобранные по фильтрам, а там нет сортировок по id.

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

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

 

при добавлении или редактировании записи — сохраняйте текущие фильтры и сортировки…. например в localStorage, а при отображении таблицы — извлекайте эти данные и применяйте к данной таблице — + якорь через #
не хотите через якорь — можно точно так же сохранять текущую позицию на экране и потом скроллить до нее
— Добавлено —

печально что нет .. обычно должно быть… так как фильтры сортировке не мешают
— Добавлено —
Еще более правильно — не отображать на странице большие и длинные портянки которые нужно скролить… обычно для этого используется пагинация… а высота таблицы с данными не превышает высоту экрана…. тогда и вопрос с позиционированием отпадет

 

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

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

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

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

 

не буду сомневаться в вашем 30-летнем опыте…
но это из азов… Фильтр — накладывает ограничения, Сортировка — изменяет порядок вывода

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

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

 

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

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

Спасибо

 

ну значит надо узнать… показать получившуюся верстку — и спросить почему не переходит или еще чего … для якоря это сработает полюбому
лишь бы id уникальный был

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *