// 
//     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 IDE NetBeans
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Создание приложения, управляемого базой данных, с помощью редактора PHP IDE NetBeans - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Создание приложения, управляемого базой данных, с помощью редактора PHP IDE NetBeans



1. *=> Создание приложения на основе базы данных с помощью языка PHP – главная страница*

2. Создание базы данных

1. link:wish-list-lesson1.html[+Создание базы данных MySQL+]
2. link:wish-list-oracle-lesson1.html[+Создание таблиц базы данных Oracle+]
3. 
link:wish-list-lesson2.html[+Проектирование приложения. Чтение из базы данных+]

4. link:wish-list-lesson3.html[+Создание нового пользователя приложения+]
5. link:wish-list-lesson4.html[+Усовершенствование кода+]
6. link:wish-list-lesson5.html[+Добавление функций безопасности. Реализация входа пользователя в приложение+]
7. link:wish-list-lesson6.html[+Добавление к базе данных новых желаний+]
8. link:wish-list-lesson7.html[+Обновление и удаление записей в базе данных+]
9. link:wish-list-lesson8.html[+Усовершенствование внешнего вида приложения с использованием технологии CSS+]
10. link:wish-list-lesson9.html[+Развертывание приложения на удаленном веб-сервере+]

image::images/netbeans-stamp-80-74-73.png[title="Содержимое этой страницы применимо к IDE NetBeans 7.2, 7.3, 7.4 и 8.0"]

В этом кратком учебном курсе поддержка PHP используется в IDE NetBeans для создания и запуска простого веб-приложения. Приводится пример создания списка пожеланий ("Wish list"). После создания и развертывания приложения пользователи получают возможность размещения и совместного использования информация в списках пожеланий, например создания списков подарков к свадьбе, дню рождения или другим праздникам. Информация хранится в базе данных, созданной в уроке 1.

Любой зарегистрированный пользователь может просмотреть списки пожеланий других пользователей – разработка этих функциональных возможностей описывается в уроке 2.

Приложение поддерживает регистрацию новых пользователей – разработка этих функциональных возможностей описывается в уроке 3.

В уроке 4 приводятся советы по упрощению процесса создания кода.

В уроке 5 представлены возможные решения проблем безопасности.

В уроках 6 и 7 представлена разработка функциональных возможностей редактирования собственных списков пожеланий для всех зарегистрированных пользователей.

В уроке 8 описываются способы добавления стилей для усовершенствования внешнего вида приложения с помощью таблиц CSS. После этого выполняется развертывание приложения на удаленном веб-сервере с помощью советов, содержащихся в уроке 9.

Предоставляется код для пользователей базы данных MySQL и базы данных Oracle. В этом учебном курсе используются API ``mysqli``  и OCI8. Пользователи, заинтересованные в PDO, могутlink:https://netbeans.org/projects/www/downloads/download/php/wishlist-pdo.zip[+загрузить+] PDO-версию всего учебного курса. Обратите внимание: API PDO_OCI является экспериментальным!


*Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.*

|===
|Программное обеспечение или материал |Требуемая версия 

|link:https://netbeans.org/downloads/index.html[+IDE NetBeans+] |Пакет загрузки PHP 

|Механизм PHP |Версия 5 

|Веб-сервер |Рекомендуется использовать link:http://httpd.apache.org/download.cgi[+сервер HTTP Apache версии 2.2+].
 

|Сервер базы данных |MySQL, OracleXE или Oracle11g 
|===

Для получения подробной информации об установке и настройке требуемого программного обеспечения см. документ, в котором описывается link:../../trails/php.html#configuration[+подготовка среды для разработки PHP+] в операционной системе.


== Что дальше?

link:wish-list-lesson1.html[+Создание базы данных MySQL+]

или

link:wish-list-oracle-lesson1.html[+Создание таблиц базы данных Oracle+]


link:/about/contact_form.html?to=3&subject=Feedback:%20PHP%20Wish%20List%20CRUD%20Main[+Отправить отзыв по этому учебному курсу+]


Для отправки комментариев и предложений, получения поддержки и новостей о последних разработках, связанных с PHP IDE NetBeans link:../../../community/lists/top.html[+присоединяйтесь к списку рассылки users@php.netbeans.org+].

link:../../trails/php.html[+Возврат к учебной карте PHP+]

