Android mysql php json пример

Подключение к mysql при помощи android api, json’a и php

Введение

Всем привет. Сегодня изучал поисковик с таким запросом «как работать с MySQL в ADT Bundle» и, если честно сказать, совершенно ничего не нашел. Решил написать об этом здесь.
Этот урок может помочь любому, от начинающего разработчика под Android, до профи, который начал работать с БД в своем приложении.

Создание проекта в Eclipse (далее ADT)

Итак, поехали. Заходим, создаем новое приложение в нашем ADT под названием AndroMySQL, активити используем: mainActivite.

Создание backend

Нам нужно написать серверную часть. В своем уроке я буду использовать для работы серверной части PHP, MySQL, PHPMyAdmin, Linux Debian.

Шаг 1

Ставим сервер, я использовал хостера VPS . Купил сервер за 300 рублей и на нем работал. Вы можете сделать также, а можете просто установить пакет Denwer.

Шаг 2

Теперь, когда наш сайт (далее site.ru) доступен, мы можем приступить к делу и взяться за написание серверной части нашего проекта.
Заходим в корень site.ru (через FTP/SFTP или проводник) и создаем там файл andro.php. В итоге созданный файл должен быть виден по такой ссылке: www.site.ru/andro.php. Далее создаем файл add_prod.php (аналогично первому файлу add_prod.php должен быть доступен по ссылке www.site.ru/add_prod.php).

Шаг 3
Заходим в наш PHPMyAdmin (чаще всего это site.ru/phpmyadmin) и создаем новую базу под название andro. В этой базе нам нужно создать таблицу под названием products, которая будет состоять из сущностей: id_product, title, short, price.

id_product — номер продукта (значение типа int, длина 128, AUTOINCREMENT);
title — название продукта (значение типа VarChar, длина 512);
short — описание продукта (значение типа VarChar, длина 2048);
price — цена продукта (значение типа int, длина 128).

Шаг 4

Открываем файл andro.php для редактирования (для уменьшения вероятности появления ошибки сделайте кодировку файла ANSI). В этом файле нам нужно будет прописать функционал получения данных из нашей БД и вывод их в формате JSON (если вам неизвестно — эта аббревиатура, то для начала прочитайте о нем). Итак, файл должен быть такого содержания:

Пока не заходим на andro.php через сайт, так как значений у нас в БД еще нет, поэтому отредактируем ранее созданный файл add_prod.php.

Шаг 5

Открываем файл add_prod.php для редактирования (также про кодировку не забываем). Содержимое файла должно быть таким:

Шаг 6

Теперь нужно перейти на www.site.ru/add_prod.php и добавить записи (количество на ваше усмотрение).

Шаг 7

После добавления зайдите на www.site.ru/andro.php и в результате на странице должно получиться что-то вроде этого.

Итак, мы закончили с серверной частью, теперь перейдем к так называемому frontend’у или к части приложения Android.

Создание приложения Android

Итак, в начале урока мы уже создали форму для дальнейшей разработки, давайте перейдем в ADT.

Источник

H Выборка данных в android из mysql в черновиках Tutorial

.collapse»>Содержание

Предисловие

Здравствуй дорогой читатель. Сразу скажу, что данное пособие не для профи и гуру, а для новичков, чтобы показать один из способов выборки данных из БД (в нашем случае из MySQL).

Введение

Долгое время выбирал БД для своего урока и в окончании остановился на MySQL, так как слишком много прибывших новичков в кодинг использует именно его. На счет PHP мы будем использовать версию 5.5.0 и отличный класс PDO для работы с БД. Если вы не знаете, что такое PDO, то вам следует изучить вот эту документацию. А также со стороны написания фронтенда я использую Android SDK, сразу оговорюсь, что Android SDK — это тот же Eclipse Classic, только уже с вшитым плагином ADT (Скачать его можно здесь). На счет серверной части могу сказать только одно, ставьте виртуальную машинку, для новичков как мне сказали лучше всего подойдет Linux Ubuntu, я же пользуюсь Linux Debian без иксов. Ну что нужно приступать к части с написание Бэкенда.
За пример я беру расписание в колледже.

Читайте также:  Как посмотреть емкость аккумулятора android ксиоми

Серверная часть — backend

Для начала нам нужно разработать базу данных, которая будет состоять из одной таблицы. Мы не будем углубляться и делать все по разным таблицам после создавать связи вроде преподаватель -> название_пары и т.п., если вам это нужны вы легко сможете пере собрать данный урок в более большой проект. Так вернусь обратно к теме, название БД будет andro, название таблицы schedule. Теперь создайте таблицу andro и в таблице выполните данный SQL запрос:

Расскажу немного что здесь происходит вообще, мы создали новую таблицу с кодировкой utf8 без bom и с bin, AUTO_INCREMENT (счетчик для инкриментируемого поля ставим 1), а также добавили новые в данную таблицу поля:
id_sched — целочисленное поле. Номер пары по счету в таблице.
aud — строковое поле с аудиторией в которой будет проходить пара
group — строковое поле с группой у которой будет проходить пара
predm — строковое поле с названием проходящей пары
prep — строковое поле с именем преподавателя который ведет пару
time — строковое поле с временем пары (не стал делать время начала и время конца пары, так как нам для этого урока это не нужно, но вообще если вы делаете такое приложение в реальных целях, вам нужно будет создавать два поля которые будут иметь тип TIME и названия beginTime и endTime).
date — строковое поле с датой проведения пары (также не стал делать данное поле типом дата, потому-что для этого урока это не нужно, но сразу скажу, что если данное приложение вы будете писать для реальных целей, то делайте данное поле типа DATE)

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

Создание конфигов
Первым делом нам нужно создать файл config’ов, здесь у нас будут и данные для подключения к БД и данные о таблицах которые используются в работе. Назвать этот файл я решил configs.php.
configs.php

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

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

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

Для начала напишем маленькую форму без всякой красоты и т.п. свойств. Форму мы назовем addSchedule.html и будет она такого содержания:

Ну тут думаю в общем нет смысла рассказывать, что это за код.

Вторым будет скрипт в который мы принимаем значения для добавления нового расписания. Назвать данный скрипт я решил addSchedule.php.
addSchedule.php

Все теперь мы уже можем добавлять данные через web версию нашего приложения. Далее нужно собрать функционал редактирования и удаления записей и для начала нам нужно написать форму в которой будет предложен выбор всех предметов по дням и возможность удаления или редактирования расписания. Форму я решил назвать editDelSchedule.php
editDelSchedule.php содержание в нем должно быть таким

И так теперь наше на данный момент разработки web приложение уже имеет возможности добавления расписания, удаления и редактирования. Следующим шагом будет вывод расписания по дате и для определенной группы. Назвать этот скрипт я решил viewSchedule.php. Выводить будем в JSON формате, поэтому для дальнейшего прочтения урока вам нужно знать, что это такое и с чем его едят. Прочитать это вы можете здесь. Еще также хотел бы сразу заметить, что в данном скрипте я буду использовать метод GET для передачи данных из приложения в скрипт, так как в ином случае у меня были проблемы с кодировкой, которые обходятся неким классом для изменения кодировки с cp1251 на ansi, но в этом уроке мы рассмотрим более легкий вариант и просто будем использовать метод GET.
viewSchedule.php

Читайте также:  Квадратная обводка радара самп андроид

Ну в общем на этом заканчивается часть с разработкой серверной части нашего приложения и теперь перейдем к части самого приложения или к фронтенду.

Приложение android или Frontend

В этой части моего урока мы напишем работающее приложение на Java используя Eclipse со встроенным ADT от Google Android. Скачать этот плагин или полностью собранную версию вы можете выше по ссылке во введении. И так я не буду писать класс ServiceHandler как в прошлом уроке, а просто напишу функцию для обновления данных из принятых JSON. По мере возможности прошу меньше копировать кода. Как мне давно еще говорили: «Если копировать, то ничего в голову и не пойдет, просто как говорить в буфер влетит и через несколько минут, а то и секунд вылетит». Лучше возьми и просто перепиши для начала код представленный ниже, сам увидишь сразу поймешь как именно это работает.

И так перейдем к написанию, для начала давайте создадим layot, которых для работы приложения нам понадобиться два. Первый это main_activity, а второй lister.php.

main_activity.xml — это главное activity, которое мы увидим сразу же при входе в приложение, в моем случае мы будем работать все время в этом активити и использовать «ленивый» метод перемещения между экранами (можно сказать, что мы будем эмулировать перемещение тем, что просто будем включать и выключать отдельные элементы активити).

Чтобы заработали изображения в вашем приложении, нужно их туда добавить. Для этого вот ссылки на скачку изображений:
background.png
allbackground.png
После того как скачаете изображения создайте директорию drowable в директории res вашего проекта и туда переместите эти два изображения, после кликните на название вашего проекта и нажмите F5. Теперь изображения готовы для использования их в приложении.

Так теперь когда мы построили стиль нашего главного активити, нам нужно создать еще один layot под названием lister.xml, он будет отвечать за то, как выглядит каждый элемент списка ListView, в котором и будет видно наше расписание.
lister.xml

Так пойдем дальше, а дальше у нас код Java из src->com.example под названием MainActivity.java. Здесь в этом файле у нас находятся все обработчики событий кнопок, сам update’ер и многие другие методы нужные для работоспособности нашего приложения.
MainActivity.java — Читайте комментарии внутри скрипта, чтобы понять, что вообще тут твориться

Последним шагом мы попросим разрешения у android для отправки и получения данных из интернета. Делается это в bin->AndroidManifest.xml вот такой строкой:

В итоге хотел бы сказать, что если вы полностью собрали данное приложение и у вас получилось сделать это без ошибок, то вы далеко пойдете как разработчик. И более нормально было бы создать класс ServiceHandler.java в нашем проекте (как я делал в прошлом уроке), но на этот раз мне это было делать лень, поэтому вот вам задание, сделайте класс ServiceHandler.java в котором будет собран основной функционал работы с JSON и сервером и после работайте с методами этого класса.

Прочитав весь урок вы изучили:
1. Как подключиться к БД через PHP с использованием PDO.
2. Как правильно выбрать данные из БД через PDO и вывести их в JSON формате.
3. Как добавлять, изменять и удалять строки из БД через PHP при помощи PDO.
4. Как создать форму с изображение на заднем плане без еще одного XML файла. (хотя по решению многих это правильнее)
5. Как создать ListView использующий отдельный layot (в нашем случае lister.xml) как стиль одного элемента.
6. Как подключиться к удаленному серверу по URL с какими-либо данными метода GET.
7. Как получить данные от сервера.
8. Как работать с JSON в Java.
9. Как создать адаптер ListView для вывода данных в список через отдельный layot (хотя думаю эту тему вам лучше изучить отдельно)

Спасибо всем за прочтение статьи, надеюсь, что она вам пригодилась.
До новых встреч.

Источник

Простой клиент-сервер на Android (интернет-мессенджер)

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

Читайте также:  Как настроить производительность андроид

Поехали. Многие мобильные приложения (и не только) используют архитектуру клиент-сервер. Общая схема, думаю, понятна.

Уделим внимание каждому элементу и отметим:

  • сервер — представляет собой некую программу, работающую на удаленном компьютере, и реализующую функционал «общения» с приложениями-клиентами (слушает запросы, распознает переданные параметры и значения, корректно отвечает на них);
  • клиент — в нашем случае, программа на мобильном устройстве, которая умеет формировать понятный серверу запрос и читать полученный ответ;
  • интерфейс взаимодействия — некий формат и способ передачи/получения запросов/ответов обеими сторонами.

Неважно, как реализован любой из этих элементов, все они в любом случае присутствуют. Давайте реализуем примитивный сервер и Android клиент, работающий с ним. Как пример, будем использовать любой популярный мобильный интернет-мессенджер (Viber, ICQ), а приложение условно назовем «интернет-чат».

Схема взаимодействия следующая:

Клиент, установленный на устройстве А, посылает сообщение для клиента, установленного на устройстве Б. И наоборот. Сервер играет роль связующего звена между устройством А и Б… С, Д… и т.д. Также он играет роль «накопителя» сообщений, для их восстановления, на случай удаления на одном из клиентских устройств.

Для хранения сообщений используем SQL БД как на сервере, так и на устройствах-клиентах (в принципе, вся работа клиентов интернет-мессенджеров и сводится к постоянной синхронизации локальной и удаленной БД с сообщениями). Дополнительно, наш интернет-чат будет уметь стартовать вместе с запуском устройства и работать в фоне. Взаимодействие будет происходить путем HTTP запросов и JSON ответов.

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

Делаем сервер

Для реализации «сервера», нам нужно зарегистрироваться на любом хостинге, который дает возможность работы с SQL и PHP.

Создаем пустую SQL БД, в ней создаем таблицу.

  1. author — автор сообщения;
  2. client — получатель сообщения;
  3. data — время и дата получения сообщения на сервере;
  4. text — сообщение.

В двух следующих файлах необходимо изменить переменные, содержащие данные для доступа к БД, на свои, полученные Вами при регистрации Вашего«сервера».

Структура запросов к api:

  • обязательный атрибут action — может быть равен select (сервер ответит списком записей из своей БД), insert (сервер добавить новую запись в свою БД), delete (сервер очистит свою БД)
  • если action=insert, нам нужно будет передать дополнительные параметры: author (кто написал сообщение), client (кому адресовано сообщение), text (сообщение)
  • action=select может содержать дополнительный параметр data, в этом случае ответ сервера содержит не все сообщения из БД, а только те, у которых время создания позднее переданного

Примеры:

  • chat.php?action=delete – удалит все записи на сервере
  • chat.php?action=insert&author=Jon&client=Smith&text=Hello — добавит на сервере новую запись: автор Jon, получатель Smith, содержание Hello
  • chat.php?action=select&data=151351333 — вернет все записи, полученные после переданного времени в long формате

Клиентская часть

Теперь структура Android приложения:

В фоне работает FoneService.java, который, в отдельном потоке, каждые 15 секунд делает запрос на сервер. Если ответ сервера содержит новые сообщения, FoneService.java записывает их в локальную БД и отправляет сообщение ChatActivity.java о необходимости обновить ListView, с сообщениями. ChatActivity.java (если она в этот момент открыта) получает сообщение и обновляет содержимое ListView из локальной БД.

Отправка нового сообщения из ChatActivity.java происходит сразу на сервер, минуя FoneService.java. При этом наше сообщение НЕ записывается в локальную БД! Там оно появится только после получения его назад в виде ответа сервера. Такую реализацию я использовал в связи с важным нюансом работы любого интернет-чата — обязательной группировкой сообщений по времени. Если не использовать группировку по времени, будет нарушена последовательность сообщений. Учитывая, что клиентские приложения просто физически не могут быть синхронизированы с точностью до миллисекунд, а возможно будут работать даже в разных часовых поясах, логичнее всего будет использовать время сервера. Так мы и делаем.

Создавая новое сообщение, мы передаем запросом на сервер: имя автора сообщения, имя получателя сообщения, текст сообщения. Получая эту запись назад, в виде ответа сервера, мы получаем то, что отправляли + четвертый параметр: время получения сообщения сервером.

Источник

Оцените статью