14:20

Доктор, доктор, я где-то подцепил толерантность!
Мне даже неловко о таком спрашивать, но все найденные статьи не помогают, я там ничего не понимаю, потому что в теме я ориентируюсь ровно настолько, чтобы написать свой невнятный курсовик, а этого мало.

Делаю веб-сайт в Visual Studio с подключением БД из Access. Пара вопросов.

1. После авторизации на сайте появляется возможность сделать заказ. Пользователь выбирает из выпадающих списков интересующиее его опции, после чего вся инфа уходит в таблицу Заказы. Как сделать так, чтобы передавалась информация о заказчике? Все, что я придумала, это добавить так же поле со списком всех зарегистрированных пользователй. Но это же какой-то бред, т.к. залогиниться можно под одним аккаунтом, а заказ отправить от другого.

2. Все в том же заказе. Есть таблица Рестораны, состоящая из кода ресторана и его названия. Есть таблица Залы, состоящая из кода зала, названия и кода ресторана (т.е. к одному ресторану может относиться несколько залов, один зал относится только к одному ресторану). Как сделать так, чтобы после выбора ресторана в списке залов отображались только залы, привязанные к этому ресторану?

Желательно, конечно, дать подробный ответ, разжеванный как для дураков, но и хотя бы указание, где об этом написано, и что именно там читать мне тоже очень помогут.


Комментарии
02.03.2015 в 14:31

Миру - мир. А Вам - пломбир!
1. При логине на сайт записывать id текущего юзера куда-нибудь, например, в cookies/session. Следовательно, во всех формах, где нужно "подставить текущего пользователя" не нужно никаких дополнительных полей форм.
2. При выборе ресторана вы знаете его id. Значит, можно получить список залов выбрав только те, у которых id ресторана равно этому id. А какая у вас структура базы? Не видел MSAccess лет десять, но если там есть что-то похожее на SQL, то пр иналичии в таблице залов id ресторана можно сделать так:"SELECT * FROM restaurants_rooms WHERE restaurant_id = {{id ресторана}}".
Ну и так как уровень неизвестен, то задавайте вопросы.
02.03.2015 в 14:56

Доктор, доктор, я где-то подцепил толерантность!
Скептичный циник,
1. По первому я точно ничего не знаю. Т.е. про session я вчера читала, нашла, где как раз проставить, чтобы данные оттуда брались, но я не знаю, как туда id записать.
2. Я спрошу вечером, т.к. на работе сейчас и нет перед глазами ничего. Что-то похожее там есть, но я не знаю, где это нужно прописать ) Мб вечером сама найду.
02.03.2015 в 15:13

Миру - мир. А Вам - пломбир!
1. Когда пользователь логинится (в обработчике отправки формы логина/пароля) вы ведь получаете из базы данные пользователя по его логину чтобы сравнить пароль и пустить/не пустить? Вот там же, после успешного логина, можно записать в сессию его данные – id или логин чтобы потом определять кто сейчас работает с сайтом. При нажатии кнопки выход – очищать сессию. Тогда точно будете знать кто на сайте и отличать их от гостей.
1,5. Чтение/запись в сессию различается в разных языках, но суть одна: список ключей с их значениями. Что-то вроде значений переменных или ассоциативного массива, только хранятся они не в коде приложения, а в другом месте. Из поста не понятно на каком языке пишете и, соответственно, ответить не могу. Думаю, на запрос в стиле "How to write session in {{тут_ваш_язык_программирования}}" в гугле будет много информации.
2. Структура базы должна быть такая, чтобы была связь между таблицей ресторанов и таблицей залов. Например, добавив столбец "id ресторана" в таблицу залов. Как его выбрать – на SQL выше написал, но лучше утонить у гугла как оно в Access рабоатет (:
02.03.2015 в 15:29

Доктор, доктор, я где-то подцепил толерантность!
Скептичный циник,
1. Если бы я знала, на чем я пишу Х)) SQL там, вроде. Понятно, погуглю )
2. Естественно связь между таблицами в базе есть.
Вот так примерно выглядит моя страница
Есть подозрение, что я не понятно описала задачу. Мне нужно, чтобы пользователь, выбрав в первом списке ресторан A, во втором увидел только залы 1-A, 2-A и не видел 1-B, 2-B и т.д. Т.е. по идее же в вашем коде id ресторана будет меняться в зависимости от выбора пользователя. Выходит, его выбор тоже записывается в сессию и подставляется в залы? оО
02.03.2015 в 16:27

Миру - мир. А Вам - пломбир!
Это смотря как у вас там всё устроено. Вариантов, вообщем-то, немного:
1. Поиск залов ресторана по запросу. Если при выборе ресторана отправляете запрос на сервер для поиска залов, то всё просто – отправляете запрос с id ресторана, выполняете этот sql и отдаёте список залов, у которых посланный id ресторана. Далее подставляете это в форму.
2. Все залы и рестораны сразу вывалены в форму. Тогда тут при клике на селектор ресторана каким-нибудь клиентским js надо вставлять подходящие залы из заранее подготовленного объекта-списка. типа того.
Уже, пожалуй, что-то конкретное можно ответить только если посмотреть конкретный код.
02.03.2015 в 23:03

Доктор, доктор, я где-то подцепил толерантность!
Скептичный циник, вот схема БД
Приложенный код мне понятен, но там не JS (
Вот кусок кода, отвечающий за выбор ресторана:


А вот это код всей страницы для отправки заказа:


03.03.2015 в 00:54

Доктор, доктор, я где-то подцепил толерантность!
Скептичный циник, с залами разобралась, все работает ) Про сессию почитала, но что-то там все очень сложно =/ Наверное, сдам так. Большое спасибо!
03.03.2015 в 01:14

Миру - мир. А Вам - пломбир!
Омг, VB я последний раз в начальной школе видел (о.0) Читать могу, но писать – вряд ли. Да и винды поблизости нема так что с ним я вряд ли помощник, может, кто более опытный найдётся в треде.

Про сессию нагуглилось чтение и запись, а так же общие сведения. Не то? Выглядит, вроде, очень просто.
03.03.2015 в 01:30

Доктор, доктор, я где-то подцепил толерантность!
Скептичный циник, я никак не могу понять, зачем я вообще занимаюсь этим, если все, у кого ни спроси, говорят, что давным давно уже ничего подобного не видели и с этим не работают ((
Да, это похоже на то, что нужно, и выглядит адекватнее, чем то, что находила я )
29.02.2024 в 05:19

The советы невероятно важный.

Посетите также мою страничку

b-sovety.ru/user/TeresaO03026043/ оформление дебетовых карт visa

33490-+
URL

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail