Вставьте регистрационные данные в MySQL, используя PHP - PullRequest
1 голос
/ 11 мая 2010

Возможно, я не спрашиваю об этом наилучшим из возможных способов, но я буду стараться изо всех сил. Заранее спасибо за помощь:

Я создаю веб-сайт регистрации, который позволяет отдельному менеджеру ИЛИ регистрироваться для получения услуг медицинского тестирования для профессиональных спортсменов. Я НЕ буду использовать сайт в качестве базы данных запросов, которую любой может просматривать информацию, хранящуюся в базе данных. Вместо этого информация просто сохраняется и передается в формате CSV нашему сетевому провайдеру, чтобы он мог использовать его по мере необходимости после факта. Есть два возможных сценария:

Сценарий 1 - Индивидуальная регистрация

Если отдельный спортсмен выбирает себе регистрацию, он вводит свою личную информацию, передает свою платежную информацию (кредитный / банковский счет) для обработки, и его информация сохраняется в онлайн-базе данных как Athlete1.

Сценарий 2 - Регистрация менеджера

Если менеджер выбирает регистрацию нескольких спортсменов, которыми он управляет / продвигает, он вводит свою личную информацию, затем вводит личную информацию о каждом спортсмене, за которого он хочет заплатить (имя, адрес, ssn, dob и т. Д.), А затем представляет информация об оплате для ВСЕХ спортсменов, которых он регистрирует. Это число может варьироваться от 1 отдельного спортсмена до 20 спортсменов на одну регистрацию (он может вернуться и завершить регистрацию для дополнительных спортсменов).


Первоначально я создавал базу данных для размещения ВСЕЙ информации независимо от типа регистрации в одной таблице, которая содержала более 400 столбцов (например, 20 спортсменов с более чем 10 полями на спортсмена, такие как name, dob, ssn и т. Д.).

Теперь, когда я больше об этом думаю, я считаю, что создание нескольких таблиц (менеджеров, спортсменов) может быть лучшей идеей, но все еще не совсем уверен, как это сделать по следующим очень важным причинам:

Выпуск 1

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

выпуск 2

Все спортсмены, зарегистрированные менеджером, сохраняются в SESSION как F1FirstName, F2FirstName, где F1 и F2 относятся к идентификатору бойца. Технически я не уверен, как хранить несколько частей информации в одной и той же таблице в отдельных строках с помощью PHP. Например, все спортсмены будут иметь имя. Самая основная теория того, что я пытаюсь сделать, такова:

Если number_of_athletes> 1, хранить F1FirstName в строке 1, столбце 1 таблицы «Спортсмены»; хранить F1LastName в строке 1, столбце 2 таблицы «Спортсмены»; сохранить F2FirstName в строке 2, столбце 1 таблицы «Спортсмены»; сохранить F2LastName в строке 2, столбце 2 таблицы «Спортсмены»;

Имеет ли это смысл? Я знаю, что этот вопрос очень длинный и, вероятно, трудный, поэтому я ценю руководство.

Ответы [ 3 ]

1 голос
/ 12 мая 2010

Если вы сохраните имена для будущей отправки, вам следует использовать другой дизайн. Вы также должны подумать, может ли менеджер быть спортсменом. Помня об этом, рассмотрите три таблицы: PEOPLE, REGISTRATION и REGISTRATION_ATHLETE. ЛЮДИ содержат всех спортсменов и менеджера. РЕГИСТРАЦИЯ - это главная таблица, которая содержит всю информацию для представления одного или нескольких лиц для тестирования. REGISTRATION_ATHLETE имеет по одной строке для каждого проверяемого спортсмена.

People table:
---------------
People_ID
Type (A for Athlete, M for Manager B for Both)
First Name
Last Name
Birthdate
other columns of value

Registration table:
-------------------
Registration_ID
Registration_Date
People_ID  (person requesting registration - Foreign Key to PEOPLE)
Payment columns....

Registration_Athlete table:
---------------------------
Registration_ID (Foreign Key to REGISTRATION)
People_ID      (Foreign Key to PEOPLE)

Я не mysql человек, но я думаю, что этот простой тип структуры будет работать.

Наконец, хранение информации о кредитной карте проблематично, так как она соответствует правилам PCI (Payment Card Institute), которых вы захотите избежать (подумайте, сложно и дорого). Рассмотрите возможность обработки платежей через третьих лиц, таких как Google Checkout и т. Д., И не снимайте средства с кредитной карты.

1 голос
/ 11 мая 2010

Вы должны создать две таблицы: managers и athletes

Таблица athletes будет содержать столбец с именем manager_id, который будет содержать идентификатор менеджера, который зарегистрировал спортсмена, или NULL, если спортсмен зарегистрировался.

Во время вывода создайте два файла CSV (по одному для каждой таблицы).

Дальнейшее чтение:

Определение отношений

0 голосов
/ 12 мая 2010

Хорошо, на основании вашего комментария ответа и того, что вы ищете. Вы могли бы сделать это.


Создать одну базу данных для регистрации.

Создайте идентификатор столбца, имя, regDate, isManager, ManagerID (все остальное, что вам нужно).

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

Когда регистрируется одинокий спортсмен, не беспокойтесь об идентификаторе, а просто установите для isManager значение 0.


Я думаю, что, возможно, я упрощаю это. Не было бы лучше для формирования различных типов запросов, но все будет в порядке, если вы пытаетесь минимизировать свою базу данных

...