ФорумПрограммированиеPHP для идиотов → Форма для нормализованной таблицы

Форма для нормализованной таблицы

  • stopkran

    Сообщения: 53 Репутация: N Группа: Кто попало

    Spritz 19 мая 2012 г. 7:45

    Есть таблица Заказы. В ней поле Товар. Там числа - 1, 2, 3. Числа соответствуют записям в другой таблице: 1 - Молоток отбойный (ТЭМЗ) МО-3Б, 2 - Молоток отбойный (ТЗК) МОП-4, 3 - Бетонолом (ТЭМЗ) Б-1.

    При заполнении формы пользователю надо показывать не числа, а реальные наименования товаров. Если список товаров небольшой, можно просто давать select: пользователь прокручивает и выбирает нужное значение (а на сервер отправляется option value). Но что делать, если в одном списке товаров - 1000?

    Select с 1000 элементов - неудобно. Можно выдавать список Аяксом, как подсказки в ПС (список изменяется по мере ввода букв). И вот главный вопрос: как в этом случае организовать передачу в серверную таблицу числа (ключа), а не строкового значения?

    Когда пользователь выберет нужный товар, в поле (input) попадёт строка с наименованием этого товара (некрасиво ведь, если пользователь будет видеть вместо выбранного товара число?). Варианты, как и где заменить наименование ключом я вижу примерно следующие:

    1. Вставлять в input сразу числовой ключ, пофиг.

    2. Оставлять в поле input строку, создавать рядом скрытый input с числом.

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

    4. Делать МНОГО select'ов: вообще не использовать длинные списки, всё дробить паровым молотом на мельчайшие части: завести в разделе "Пневмотехника" отдельную подрубрику "Молотки отбойные", если она окажется длинной, завести в ней под-подрубрики "Молотки отбойные ТЭМЗ", "Молотки отбойные ТЗК", …

    5. Делать select с over 1000 элементов, пофиг. Там ведь тоже по мере набора букв (очень быстрого набора букв! :-)) список прокручивается.

    6. Денормализовать всё нах! :-) Хранить в таблице Заказы готовые (строковые) наименования товаров.

    Чаще всего я использую п. 3. Могу иногда использовать п. 6. Во всех случаях, конечно, приходится проверять на сервере, есть ли значение в "словарной" таблице (и возвращать при необходимости "Выберите значение из списка").

    Интересно, кто как решает эту проблему?

    p.s. Не нашёл, в какой раздел форума добавить тему. Вроде как PHP тут не особо важен. Но не в javascript же?..
  • Ivan

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

    Spritz 19 мая 2012 г. 8:59, спустя 1 час 14 минут 3 секунды

    Если элементов не слишком много (500-700), то я в таких случаях пользуюсь jquery mobile, там встроенный компонент фильтрации больших списков. А так, да - поиск, желательно поиск вручную + возможность выбора из категории. Во всплывающем окне. Без javascript тут конечно не обойтись.
  • artoodetoo

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

    Spritz 19 мая 2012 г. 22:15, спустя 13 часов 16 минут 29 секунд

    На практике заказчик идет не из формы заказа в список товаров, а наоборот. Сначала через категории и списки-из-нескольких-страниц добирается до нужной позиции, затем кладет её в корзину. Или через поиск находит и добавляет. Так что проблема со слишком большими списками решается сама собой. {+++29+++} Не надо изобретать сферического коня )
    ιιlllιlllι унц-унц
  • Mustafa

    Сообщения: ? Репутация: N Группа: Кто попало

    Spritz 18 августа 2012 г. 15:33, спустя 90 дней 17 часов 17 минут

    АНЯ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

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