| // |
| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| // |
| |
| = Создание приложения на основе базы данных на языке PHP |
| :jbake-type: tutorial |
| :jbake-tags: tutorials |
| :jbake-status: published |
| :icons: font |
| :syntax: true |
| :source-highlighter: pygments |
| :toc: left |
| :toc-title: |
| :description: Создание приложения на основе базы данных на языке PHP - Apache NetBeans |
| :keywords: Apache NetBeans, Tutorials, Создание приложения на основе базы данных на языке PHP |
| |
| В данном уроке описывается последний подготовительный этап разработки приложения "Wish List" ("Список желаний") в рамках создания демонстрационной базы данных с тестовыми данными. Для выполнения всех этапов, предложенных в данном руководстве, необходима база данных, которая позволит сохранять данные (желания), введенные пользователями. IDE NetBeans позволяет выполнять все эти действия с помощью интерфейса IDE. |
| Перед началом работы ознакомьтесь с требованиями, описанными в разделе link:wish-list-tutorial-main-page.html[+Создание приложения типа CRUD на языке PHP – главная страница+]. |
| |
| Текущий документ является частью краткого учебного курса "Создание приложения CRUD в IDE NetBeans для PHP". |
| |
| |
| |
| [[register-mysql]] |
| == Регистрация сервера MySQL |
| |
| Если в IDE еще не зарегистрирован сервер баз данных MySQL или вам требуется общая информация об использовании MySQL в IDE NetBeans, см. раздел link:../ide/mysql.html[+Подключение к базе данных MySQL+]. |
| |
| |
| == Создание пользователя базы данных |
| |
| Перед созданием базы данных необходимо создать соответствующего пользователя, которому будет предоставлено право на выполнение любых операций в базе данных. Создание пользователя базы данных включает в себя следующие действия: |
| |
| * <<connectToMySQLServer,Подключение к серверу MySQL пользователя с ролью root>>. |
| * <<connectToDefaultDatabase,Подключение к базе данных системы MySQL пользователя с ролью root>>. Поскольку выполнение команды SQL невозможно без подключения к какой-либо базе данных, это действие позволяет запустить команду SQL, необходимую для создания пользователя. |
| * <<createUserQuery,Выполнение оператора создания пользователя в MySQL>>. |
| |
| 1. Запустите IDE, перейдите в окно 'Службы' (Ctrl-5) и разверните узел 'Базы данных'. |
| 2. Для |
| подключения к серверу базы данных MySQL перейдите к узлу ``MySQL Server`` и выберите "Connect" в контекстном меню. |
| |
| image::images/mysql-ctxmenu-connect.png[] |
| |
| |
| |
| . IDE NetBeans устанавливает соединение с сервером MySQL, проверяет наличие доступных баз данных с помощью сервера, обнаруживает системную базу данных ``mysql`` и добавляет соответствующий новый узел ``mysql`` к дереву баз данных. |
| |
| image::images/mysql_node_added.png[] |
| |
| |
| |
| . Для выполнения команды SQL необходимо подключение к базе данных. Поскольку доступна только система MySQL, следует подключиться к этой системе. |
| Для подключения к системной базе данных перейдите к узлу ``mysql`` и выберите "Connect" в контекстном меню. Если подключение на данный момент отсутствует, появится диалоговое окно "New Database Connection". В поле "User Name" по умолчанию вводится значение "root". В поле "Password" введите пароль пользователя root. |
| |
| NOTE: Если вы уже подключались к базе данных `mysql`, это диалоговое окно не отобразится. Вместо этого в дереве просто появится новый узел подключения. |
| |
| image::images/create-new-database-connection.png[] |
| |
| В диалоговом окне "New Database Connection" появится сообщение "Connection established". Нажмите кнопку "ОК". К дереву баз данных добавлен новый узел с именем ``jdbc:mysql://localhost:3306/mysql`` . |
| |
| |
| . Перейдите к узлу ``jdbc:mysql://localhost:3306/mysql`` и выберите в контекстном меню "Execute Command". |
| |
| image::images/execute-command.png[] |
| |
| Откроется окно "SQL Command". В окне "SQL Command" введите следующие команды: |
| |
| [source,sql] |
| ---- |
| |
| CREATE USER 'phpuser'@'localhost' IDENTIFIED BY 'phpuserpw' |
| ---- |
| Выберите в контекстном меню "Run Statement". Если команда выполнена успешно, в строке состояния выводится следующее сообщение: "SQL Statement(s) executed successfully". Если выводится другое сообщение, проверьте синтаксическую правильность введенных команд и выполните советы, относящиеся к данному сообщению. |
| |
| |
| == Создание базы данных Wishlist |
| |
| Для создания базы данных выполните следующие действия: |
| |
| 1. Перейдите к узлу ``MySQL Server at localhost:3306`` и выберите из контекстного меню "Create Database". Появится диалоговое окно "Create MySQL Database". Заполните поля следующим образом: |
| * В поле имени "Database Name" введите "wishlist". |
| * Установите флажок "Grant full access to user" и выберите в раскрывающемся списке ``phpuser@localhost`` . Нажмите кнопку "OK". |
| |
| image::images/create-user.png[] |
| |
| Функция "Grant full access to user", предоставляющая пользователю полные права доступа, срабатывает не всегда. Если она не работает, <<EstablishConnection,подключитесь к базе данных>> как пользователь root и отправьте запрос SQL [examplecode]# ``GRANT ALL ON wishlist.* TO phpuser@localhost`` #. |
| |
| Подключение к базе данных появится в дереве. Однако это подключение создано для пользователя `root`. Вам требуется подключение для пользователя ` phpuser`. |
| |
| |
| == Установление подключения к базе данных Wishlist |
| |
| На предыдущем этапе вы создали базу данных `wishlist` с подключением для пользователя `root`. Теперь необходимо создать подключение для пользователя `phpuser`. |
| |
| 1. В окне 'Службы' щелкните правой кнопкой мыши узел 'Базы данных' и выберите 'Создать подключение'. Открывается мастер создания подключений. |
| |
| image::images/databases-ctxmenu-newconnection.png[] |
| |
| |
| |
| . На панели 'Обнаружение драйвера' в мастере создания подключений выберите `MySQL (Connector/J Driver).` Нажмите 'Далее'. Открывается панель 'Настройка соединения'. |
| |
| image::images/locate-driver.png[] |
| |
| |
| |
| . В поле 'База данных' введите `wishlist`. |
| |
| |
| . В полях "User Name" и "Password" введите соответственно имя и пароль пользователя, указанные в разделе <<CreateUser,Создание владельца (пользователя) базы данных>> (в нашем примере это ``phpuser`` и ``phpuserpw`` ). Установите флажок 'Запомнить пароль'. Нажмите 'Проверить подключение'. Если соединение установлено успешно, нажмите "OK". |
| |
| image::images/phpuser-connection.png[] |
| |
| В дереве баз данных будет отображаться соответствующий новый узел подключения. Подключение для пользователя `root` к базе данных `wishlist` можно удалить. Нажмите на подключение ``jdbc:mysql://localhost:3306/wishlist [корневой элемент в схеме по умолчанию]`` и выберите 'Удалить'. |
| |
| image::images/new-database-connection-added.png[] |
| |
| |
| == Проектирование структуры базы данных Wishlist |
| |
| Для размещения и сохранения всех необходимых данных требуются две таблицы: |
| |
| * таблица "wishers" для сохранения имен и паролей зарегистрированных пользователей; |
| * таблица "wishes", которая будет содержать описания требований. |
| |
| image::images/wishlist-db.png[] |
| |
| Таблица "wishers" содержит три поля: |
| |
| 1. "id" – уникальный идентификатор пользователя. Это поле используется в качестве первичного ключа. |
| 2. "name" – имя |
| 3. "password" – пароль |
| |
| Таблица "wishes" содержит четыре поля: |
| |
| 1. "id" – уникальный идентификатор пользователя. Это поле используется в качестве первичного ключа. |
| 2. "wisher_id" – идентификатор пользователя, оставившего пожелание. Это поле используется в качестве внешнего ключа. |
| 3. "description"– описание |
| 4. "due_date" – требуемая дата исполнения пожелания. |
| |
| Таблицы связаны посредством идентификатора пользователя. Все поля таблицы "wishes" являются обязательными для заполнения, за исключением "due_date". |
| |
| |
| == Создание таблиц |
| |
| 1. Для подключения к базе данных щелкните правой кнопкой мыши узел подключения ``jdbc:mysql://localhost:3306/wishlist`` и выберите "Connect" в контекстном меню. |
| NOTE: Если пункт меню недоступен, пользователь уже подключен. Перейдите к действию 2. |
| |
| |
| . В том же контекстном меню выберите "Execute Command". Откроется пустое окно "SQL Command". |
| |
| |
| . Для создания таблицы "wishers" |
| |
| |
| . Введите следующий запрос SQL (отметьте, что как набор символов следует прямо установить UTF-8 для интернационализации): |
| |
| [source,sql] |
| ---- |
| |
| CREATE TABLE wishers(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name CHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL UNIQUE,password CHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL) |
| ---- |
| NOTE: Можно получить уникальный номер, автоматически создаваемый MySQL, задав свойство AUTO_INCREMENT для поля. MySQL создаст уникальный номер посредством увеличения на единицу последнего номера в таблице и автоматически добавит его к значению поля с этим свойством. В нашем примере автоматически должно увеличиваться значение в поле "ID". |
| |
| |
| . Щелкните запрос правой кнопкой мыши, затем выберите "Run Statement" в контекстном меню. |
| |
| NOTE: Механизмом хранения по умолчанию для MySQL является MyISAM, не поддерживающий внешние ключи. Если нужна поддержка внешних ключей, используйте в качестве механизма хранения InnoDB. |
| |
| |
| |
| . Для создания таблицы "Wishes" |
| |
| |
| . введите следующий запрос SQL: |
| |
| [source,sql] |
| ---- |
| |
| CREATE TABLE wishes(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,wisher_id INT NOT NULL,description CHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,due_date DATE,FOREIGN KEY (wisher_id) REFERENCES wishers(id)) |
| ---- |
| |
| |
| . Щелкните запрос правой кнопкой мыши, затем выберите "Run Statement" в контекстном меню. |
| |
| |
| . Для проверки того, что новые таблицы добавлены к базе данных, перейдите к окну "Services", а затем к узлу подключения jdbc:mysql://localhost:3306/wishlist. |
| |
| |
| . Нажмите правую кнопку мыши и выберите "Refresh". В дереве появятся узлы "wishers" и "wishes". |
| |
| Примечание. Набор команд SQL для создания базы данных wishlist MySQL можно загрузить link:https://netbeans.org/projects/www/downloads/download/php%252FSQL-files-for-MySQL.zip[+здесь+]. |
| |
| |
| == Ввод тестовых данных |
| |
| Для тестирования приложения необходимо наличие некоторых данных в базе данных. В приведенном ниже примере показано, каким образом можно добавить данные для двух пользователей и четырех желаний. |
| |
| 1. В узле подключения jdbc:mysql://localhost:3306/wishlist щелкните правой кнопкой мыши и выберите "Execute Command". Откроется пустое окно "SQL Command". |
| 2. Для добавления данных пользователя введите следующие команды: |
| |
| [source,sql] |
| ---- |
| |
| INSERT INTO wishers (name, password) VALUES ('Tom', 'tomcat'); |
| ---- |
| Щелкните запрос правой кнопкой мыши и выберите из контекстного меню "Run Statement". |
| NOTE: . Оператор не содержит значения для поля ``идентификатора`` . Значения вводятся автоматически, поскольку указан тип поля ``AUTO_INCREMENT`` . |
| Введите данные другого тестового пользователя: |
| |
| [source,sql] |
| ---- |
| |
| INSERT INTO wishers (name, password) VALUES ('Jerry', 'jerrymouse'); |
| ---- |
| |
| |
| . Для добавления пожеланий ("wishes") введите следующие команды: |
| |
| [source,sql] |
| ---- |
| |
| INSERT INTO wishes (wisher_id, description, due_date) VALUES (1, 'Sausage', 080401);INSERT INTO wishes (wisher_id, description) VALUES (1, 'Icecream');INSERT INTO wishes (wisher_id, description, due_date) VALUES (2, 'Cheese', 080501);INSERT INTO wishes (wisher_id, description)VALUES (2, 'Candle'); |
| ---- |
| |
| Выберите запросы, щелкните каждый правой кнопкой мыши по каждому из них и выберите "Run Selection" в контекстном меню. |
| |
| NOTE: Также можно выполнять запросы один за другим, как описано в пункте 2. |
| |
| |
| |
| . Для просмотра тестовых данных щелкните соответствующую таблицу правой кнопкой мыши и выберите из контекстного меню "View Data". |
| |
| image::images/view-test-data.png[] |
| |
| Ознакомиться с общими принципами организации баз данных и их моделями можно с помощью следующего обучающего руководства: link:http://www.tekstenuitleg.net/en/articles/database_design_tutorial/1[+http://www.tekstenuitleg.net/en/articles/database_design_tutorial/1+]. |
| |
| Для получения дополнительной информации о синтаксисе операторов MySQL ``CREATE TABLE`` см. link:http://dev.mysql.com/doc/refman/5.0/en/create-table.html[+http://dev.mysql.com/doc/refman/5.0/en/create-table.html+]. |
| |
| Для получения дополнительной информации о вставке значений в таблицу см. link:http://dev.mysql.com/doc/refman/5.0/en/insert.html[+http://dev.mysql.com/doc/refman/5.0/en/insert.html+]. |
| |
| Примечание. Набор команд SQL для создания базы данных wishlist MySQL можно загрузить link:https://netbeans.org/projects/www/downloads/download/php%252FSQL-files-for-MySQL.zip[+здесь+]. |
| |
| |
| == Что дальше? |
| |
| link:wish-list-lesson2.html[+Следующий урок >>+] |
| |
| link:wish-list-tutorial-main-page.html[+Назад на главную страницу руководства+] |
| |
| |
| link:/about/contact_form.html?to=3&subject=Feedback:%20PHP%20Wish%20List%20CRUD%201:%20Create%20MySQL%20Database[+Мы ждем ваших отзывов+] |
| |
| |
| Для отправки комментариев и предложений, получения поддержки и новостей о последних разработках, связанных с PHP IDE NetBeans link:../../../community/lists/top.html[+присоединяйтесь к списку рассылки users@php.netbeans.org+]. |
| |
| link:../../trails/php.html[+Возврат к учебной карте PHP+] |
| |