Как из базы данных сделать программу

Кому-то тема данной статьи может показаться странной, но тем не менее такая возможность существует. Информация в сети есть, но она почти вся на английском и в разрозненном виде. Чтобы сложить картинку воедино мне с коллегой пришлось немало побродить по интернетам, поэтому я бы хотел для себя лично зафиксировать эту информацию в письменном виде.

В рамках цикла статей по данной теме, мы пошагово создадим небольшое приложение в виде чек-листа задач, в котором будут возможности создания, чтения, обновления и удаления элементов (CRUD). В качестве БД мы будем использовать Google Sheets, а в качестве серверного языка — Google Apps Script.

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

Создание скрипта и подключение к таблице

Для начала нам необходимо создать новую таблицу (сделать это можно из Google Drive, авторизовавшись под учетной записью Google). Назовем саму таблицу “tasklist”, а единственный лист — “tasks”.

C# + MSSQL | Создаём и подключаем базу данных к Windows Forms | SQL Запросы

Возвращаемся в Google Drive и создаем новый Google Apps Script (“Создать — Еще — Google Apps Script”). Назовем его также: “tasklist”.

Теперь переходим к написанию первого кода. В самом начале объявляем две переменные. Первая будет отвечать за подключение к таблице по URL. (Я не проверял, но скорее всего для успешного подключения вы должны являться и владельцем таблицы и владельцем скрипта).

//Получаем доступ к таблице по ссылке с уникальным идентификатором var tasklist = SpreadsheetApp.openByUrl(«https://docs.google.com/spreadsheets/d/1M1OKuBxGoЧXXXXXXXXXXXXXXXXXXXXXXXXXXXS3EWj6Bs/edit#gid=0»); //Получаем доступ к странице по ее имени var tasks = tasklist.getSheetByName(«tasks»);

Роутинг

Наш скрипт будет выполнять более чем одну функцию, ведь мы запланировали возможности создания, чтения, редактирования и удаления данных. Для этого мы должны как-то объяснить нашему скрипту, какое действие при каком запросе ему следует выполнять. За прослушивание запросов, отправленных методом POST у нас будет отвечать стандартная функция doPost (e), а для запросов, отправленных методом GET doGet (e), соответственно. Для маршрутизации запросов мы разместим внутри них switch, которые будут принимать переменную operation и в зависимости от того, какое мы передадим туда значение, тот или иной switch будет перенаправлять входящие запросы на соответствующие функции.

//Стандартная функция Google Apps Script для прослушивания входящих запросов, отправленных методом POST function doPost (e) < var operation = e.parameter.action;//получаем параметр «action» switch (operation) < case «addTask»: return addTask (e); >> //Стандартная функция Google Apps Script для прослушивания входящих запросов, отправленных методом GET function doGet (e) < var operation = e.parameter.action;//получаем параметр «action» switch (operation) < case «getTasks»: return getTasks (); >>

Добавление новых строк

Теперь мы готовы к тому, чтобы написать код, позволяющий с нашей таблицей конкретно взаимодействовать. К сожалению, Google Apps Script не поддерживает классические SQL команды, типа: INSERT, SELECT, UPDATE, DELETE, но все это сделать возможно немного иными путями и командами. Давайте посмотрим на примере функции, где для добавления новой строки мы будем использовать метод appendRow():

Простейшие формы ввода данных в Excel за пару секунд – без применения VBA!


//Функция, отвечающая за добавление новых задач function addTask (e) < var dateTime = Utilities.formatDate(new Date(), «GMT+4», «dd.MM.yyy HH:mm:ss»);//определяем дату в нужном формате и часовом поясе var task = e.parameter.task;//получаем название задачи в переданном параметре var status = 0; //ноль будет обозначать статус «ожидает», так как при создании задачи, она не может быть уже выполненной tasks.appendRow([dateTime,task,status]); //обращаемся к нашей странице “tasks” определяем крайнюю свободную строку и вставляем полученные значения. Аналогично INSERT. return ContentService.createTextOutput(‘Задача успешно добавлена!’);//возвращает в ответ текстовое сообщение об успехе >

Читайте также:
Как удалить программу с андроида полностью Самсунг

Получение строк из таблицы

Получить строки из таблицы можно двумя разными способами. В этой части мы рассмотрим самый простой из них, который подразумевает, что мы можем просто выбрать массив данных и вернуть его в виде JSON. Для этого мы будем использовать комбинацию методов getRange() и getValues().

//Функция, отвечающая за получение строк и отправку данных клиенту function getTasks () < var lastrow = tasks.getLastRow();//получаем номер последней строки в таблице var data = tasks.getRange(«A1:C» + lastrow).getValues();//получаем массив нужных колонок return ContentService.createTextOutput(JSON.stringify(data)).setMimeType(ContentService.MimeType.JSON);//возвращает в ответ полученные данные в JSON формате >

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

Первая публикация

Теперь мы готовы для публикации и первого теста. Отмечу, что первая публикация потребует чуть больше времени и действий, чем последующие обновления. Это связано с тем, что для работы нашего приложения в сети мы, как владельцы таблицы должны предоставить необходимые разрешения скрипту для работы с ней. Поехали.

  1. На верхней панели редактора скрипта выбираем пункты: “Опубликовать — Развернуть как веб приложение”.
  2. В поле “Как запускать приложение” выбираем “От моего имени (ваша почта)”.
  3. В поле “Кто имеет доступ к приложению” выбираем “Все, включая анонимных пользователей” и нажимаем “Развернуть”.
  4. Жмем “Предоставить разрешение”.
  5. Выбираем свой аккаунт.
  6. Жмем на ссылку “Дополнительные настройки”.
  7. Далее ссылка “Перейти на страницу “Название проекта” (небезопасно)”.
  8. На запрос “Приложение “Название проекта” запрашивает разрешение на доступ к вашему аккаунту Google” нажимаем “Разрешить”.
  9. И, наконец, увидев заветное “Этот проект развернут как веб-приложение”, сохраняем куда-нибудь текущий URL приложения и нажимаем на кнопку “ОК”.

Первая версия нашего приложения развернута и уже готова к работе. Проверить это можно, например, через Postman. Для этого в качестве адреса используем недавно полученный URL-адрес нашего приложения.

Как видим, запись в табличке появляется.

Удаление строк

Для удаления строк нам по аналогии с первой функцией требуется добавить case в наш switch внутри doPOST(e) и написать соответствующую функцию. Поехали:

function doPost (e) < var operation = e.parameter.action; switch (operation) < case «addTask»: return addTask (e); case «deleteTask»: return deleteTask (e); >>

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

В нормальных СУБД для этого используются уникальные id, которые автоматически присваиваются строкам при добавлении, и по которым можно впоследствии однозначно найти элементы. В нашем случае такой роскоши не предусмотрено. Конечно, можно придумать какой-нибудь выход и, например, при добавлении строк генерировать уникальный хеш-код на основе текущей даты и еще чего-нибудь, но в рамках данной статьи мы будем считать, что название задачи должно быть уникальным. По нему мы и будем искать элементы, пробегаясь в цикле по нашим записям, и удалять записи при помощи метода deleteRow().

//Функция, отвечающая за удаление задач function deleteTask (e) < var task = e.parameter.task;//получаем название задачи в переданном параметре var lastrow = tasks.getLastRow();//получаем номер последней строки в таблице var array = tasks.getRange(«B1:B» + lastrow).getValues();//получаем массив указанных ячеек колонки, в которой будем искать соответствие for (var i = 0; i > return ContentService.createTextOutput(«Задача успешно удалена!»); >

Обновление строк

Принцип тот же. Начинаем с doPost(e) и далее добавляем соответствующую функцию.

function doPost (e) < var operation = e.parameter.action;//получаем параметр «action» switch (operation) < case «addTask»: return addTask (e); case «deleteTask»: return deleteTask (e); case «updateTask»: return updateTask (e); >>

Читайте также:
Основные дошкольные методики и программы

Алгоритм обновления данных похож на тот, что мы использовали при удалении элементов. Только в случае обновления нам потребуются два дополнительных параметра. Первый будет передавать новое значение, на которое мы будем заменять старое, а второй будет подсказывать нам в какой колонке это следует сделать. За обновление данных отвечает комбинация методов getRange() и setValue().

//Функция, отвечающая за обновление задач function updateTask (e) < var task = e.parameter.task;//получаем название задачи в переданном параметре var newValue = e.parameter.newValue;//получаем новое значение в переданном параметре var where = e.parameter.where;//получаем название колонки, в которой будем заменять старое значение новым var lastrow = tasks.getLastRow();//получаем номер последней строки в таблице switch(where)< case «task»: var col = «B»; break; case «status»: var col = «C»; break; >var array = tasks.getRange(«B1:B» + lastrow).getValues();//получаем массив указанных ячеек колонки, в которой будем искать соответствие for (var i = 0; i > return ContentService.createTextOutput(«Задача успешно обновлена!»); >

Обновление проекта

Если мы сохраним изменения и захотим протестировать написанный код, отправив запросы на удаление или обновление через Postman, то… ничего не произойдет, т.к. мы не переопубликовали наш проект. Чтобы опубликовать проект с последними изменениями делаем следующее:

  1. На верхней панели редактора скрипта выбираем пункты: “Опубликовать — Развернуть как веб приложение”.
  2. В поле “Версия проекта” выбираем “Новый” и нажимаем на кнопку “Развернуть”.
  3. Описываем изменения (необязательно).
  4. В окне “Этот проект развернут как веб-приложение” нажимаем на кнопку “ОК”.

Источник: alextonkonogov.ru

Вывод информации из базы данных MySql на веб страницу

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

В этом уроке будем учиться выводить информацию, хранящуюся в базе данных MySql на веб страницу.

Уроки PHP и MySQL. Урок 5. Формы и базы данных в web

Урок посвящен языку PHP и базе данных MySQL. Рассматривается взаимодействие PHP и MySQL, способы занесения данных из формы в базу данных и вывод данных из базы на web-страницу.

В данном уроке PHP и MySQL Вам предстоит решить следующие задачи:

1. Создать базу данных, содержащую две таблицы: справочник пород кошек, таблицу сведений о потерявшихся животных.

2. Создать web-страницу, на которых будут размещена форма для подачи объявлений о потерявшихся кошках. Данные из этих объявлений заносятся в соответствующую таблицу сведений о потерявшихся животных.

3. Создать web-страницу, позволяющую просматривать информацию из базы данных. Данные в таблицы базы данных будут вноситься из объявлений, размещенных посетителями на сайте.

Задание № 1. Создание базы данных

Наши уроки PHP и MySQL начнем с создания базы данных.

Сначала необходимо создать таблицу-справочник пород и таблицу сведений о потерявшихся животных. Структура таблиц следующая:

Справочник пород

Название поля Имя поля Тип поля Описание
идентификационный номер породы id Числовой
название породы name_por Символьный
характеристика породы describe_por Символьный В поле хранится имя файла, который содержит описание породы и фотографию.

Сведения о потерявшихся кошках

Название поля Имя поля Тип поля Описание
идентификационный номер кошки id Числовой
порода por Символьный
дата нахождения кошки:
день
месяц
год
day
month
year
Символьный
Символьный
Символьный
место нахождения кошки place Символьный
пол кошки pol Символьный
возраст кошки age Символьный Если возможно указать примерный возраст
описание кошки outline Символьный Окрас, состояние здоровья и т. д.
координаты нашедшего contact Символьный Любая контактная информация: телефон, e-mail, адрес
дополнительная информация dop_info Символьный Например, кошка больна, есть клеймо, кормящая и пр.

В наших уроках PHP и MySQL рассмотрим два способа создания таблицы базы данных.

Читайте также:
Найти телефон если он выключен программа

1. С помощью клиента MySQL.

2. Средствами PHP.

Способ 1. Создание базы данных с помощью клиента MySQL

С помощью клиентской программы MySQL — «phpMyAdmin» создадим таблицу Справочник пород (таблица 1).

1. Запустите Denwer ярлыком Start Denwer.

2. Запустите браузер и перейдите по ссылке http://localhost/. На открывшейся странице в разделе Утилиты запустите: phpMyAdmin — администрирование СУБД MySQL. Запустится программа phpMyAdmin (рис. 1).

Уроки PHP и MySQL

3. Создайте новую базу данных. Для этого впишите в поле Создать базу данных имя базы catsdb, кодировку установите utf8_general_ci и нажмите кнопку Создать (рис. 2).

4. Если все было выполнено верно, то будет выведено сообщение об удачном создании базы.

5. Перейдите в базу данных catsdb, нажав соответствующую строку в левой панели (рис. 3).

6. Добавьте в базу данных таблицу Справочник пород, назовите ее: spravpor (структура таблицы и назначение полей приведены в таблице 1 Справочник пород). Для этого:

a. Внесите данные в поле Имя (имя таблицы — spravpor) и Количество столбцов (3), после чего нажмите кнопку ОК (рис. 4).

Уроки PHP и MySQL

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

c. После заполнения всех полей нажмите Сохранить. Перейдите в таблицу spravpor, нажав соответствующую строку в левой панели (рис. 6).

d. Откроется сама таблица (рис. 7).

Способ 2. Создание базы данных средствами PHP

В данном уроке PHP и MySQL создадим таблицу с помощью сценария PHP, но при этом база данных должна уже быть создана! В листинге 1 приведена программа создания таблицы под именем species средствами PHP. Структура таблицы species аналогична структуре таблицы spravpor.

1. Проанализируйте приведенные в листинге 1 PHP-сценарий и комментарии к нему в файле species.php.

2. Реализуйте код из листинга 1. Для этого:

  • скопируйте его в Notepad++
  • преобразуйте кодировку файла в utf-8 командой Кодировка – Преобразовать в UTF-8
  • сохраните в папку localhost/www под именем species.php
  • запустите файл, набрав в адресной строке localhost/species.php
  • появится сообщение, что таблица успешно создана (рис. 8).

3. После выполнения сценария убедитесь, что таблица species создана в базе данных catsdb (рис. 9, 10).

Листинг 1. Создание таблицы с помощью сценария PHP (файл species.php)

Комментарии к листингу 1:

1. Здесь адрес сервера MySQL — localhost (такой адрес указывается в случае если работа с базой данных ведется на локальном компьютере или компьютере где располагаются файлы с php-сценариями).

2. Программа на языке PHP обычно вставляется в HTML-текст. Поэтому предусмотрены специальные теги для отделения PHP-текста от HTML и ?>.

3. Если PHP-сценарий представляет собой самостоятельный модуль (как в листинге 1), он также должен начинаться с конструкции и заканчиваться конструкцией ?>.

4. Любой файл, содержащий PHP-сценарий, имеет расширение php, независимо от того, встроен сценарий в HTML-текст или полностью написан на PHP.

5. Многострочные комментарии должны начинаться с символов /* и завершаться символами*/. Однострочные комментарии предваряются символами //. Закрывать их не нужно.

6. В языке PHP имя переменной начинается со знака доллара ($), за которым следует собственно имя переменной. В именах переменных различаются верхний и нижний регистры. Имя переменной должно начинаться с буквы или символа подчеркивания, за которыми могут следовать буквы, цифры или знаки подчеркивания. Буквы должны быть из диапазона A—Z.

7. В конце каждого оператора php обязательно ставится точка с запятой.

8. Функции для работы с MySQL имеют префикс mysql_ (см. приложение 2).

В нашем уроке PHP и MySQL, используя программу из листинга 1 в качестве образца, напишите сценарий PHP для создания таблицы сведений о потерявшихся кошках (см. таблицу 2). Таблицу назовите catspotery, а файл сценария catspotery.php. Результат на рис. 11, 12

Добавление записи в базу данных

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru