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

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

  • stopkran

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

    Spritz Май 19, 2012, 3: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

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

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

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

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

    Spritz Май 20, 2012, 6:15 д.п., спустя 13 часов 16 минут 29 секунд

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

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

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

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

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