blob: 42cb615bcfd8a4bdaf2ea1b0e3c66a32f0292355 [file] [log] [blame]
//
// 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+]