Всем привет, и это уже четвертая статья, посвященная работе в Android Studio при создании приложений с использованием JSON.
Сегодня мы опять будем работать с сетевыми подключениями, но на данном этапе я буду использовать OpenServer, localhost и покажу как работает подключение к базе данных на хостинге, теперь у нас не просто файл лежит, а информация из базы данных.
Android Studio получение JSON из базы данных с помощью PHP Урок № 4
Android Studio получение JSON из базы данных с помощью PHP Урок № 4
Android Studio получение JSON из базы данных с помощью PHP Урок № 4
Я создал домен на локальном сервере, и для него мы напишем на PHP два небольших файла и будем с ними работать.
На localhost была создана база данных user_info с таблицей users, в которой содержатся всё те же наши пользователи, добавлена колонка info, чуть позже будем ее использовать.
Пока в адресной строке мы обратимся домену, то ничего не происходит. Теперь наша задача вывести данные, так же, как мы получали с хостинга.
Сразу хочу напомнить, что получать значение будем UTF-8, и поскольку у нас в базе данных в структуре текст уже в кодировке utf8, таблица дает правильные данные, поэтому перед началом написания, а вы будете использовать пример из-за третьего урока, или третьего видео, функцию EncodingToUTF8 нужно будет убрать.
Потому что иначе у вас ничего водиться не будет. Напишем несколько PHP скриптов, я создам ещё одну папку для файла конфигурации нашей базы данных.
Создаем текстовой файл, с названием config.php, и откроем его в редакторе.
Давайте ещё добавил здесь на этом уровне один файл, создать- текстовый файл info.php, и тоже откроем его.
По сути создание файлов закончено, поработаем с PHP и немного с Android Studio.
Давайте начнем, поскольку мы работаем с localhost все обращения к базе данных у нас будут без паролей, мы объявляем define константу DB_SERVER со значением localhost, наш сервер, далее укажем базу данных DB_DATABASE, если вас реально хостинг имя базы данных может отличаться, в моем примере user_info.
На localhost DB_USER почти всегда равен root, в вашем случае на хостинге укажите логин, который вы получаете от вашего хостера.
Здесь DB_PASSWORD пароль на localhost, чаще всего он пустой, на хостинге указываете свой.
Далее объявляем переменную $con - сокращённо от connaction, и далее вызываем mysqli_connect, делаем соединение, тут я не делаю никаких проверок на ошибки, будем считать, что у нас всё правильно, как бы хотите заморачиваться – пишите.
Пока я показываю простой пример, обратите внимание если версия PHP старше 5.4 то используйте mysqli_ , в устаревшей версии до 5.4 там указывалось mysql_, без буквы i, в этом подключение перечислены сервер, база данных, пользователь, пароль.
И ещё одна строчка, мы укажем, что у нас подключение будет работать в utf-8.
Закройте скобки, если хотите закрывайте, config.php мы сделали.
Теперь мы перейдём в файл info.php, можете спорить, писать в комментариях, что лучше использовать require_once, я оставлю так.
Подключаем файл конфигурации
в переменную $sql_query помещаем sql-запрос, который выведет все данные из таблицы users
Далее в переменную $r - результат запрос помещаем с учетом нашего соединения
после объявляем массив $data = array();
И в такой цикле с условием пробегаемся по записям, если записи есть, ведется подсчет количества строк, то в цикле while мы заполняем переменную $row из $r в виде ассоциативного массива и передадим в другой массив $data[].
Теперь мы выведем через echo наши данные,
обратите внимание здесь я указал имя будущего массива users.
Передаем данные и константа JSON_UNESCAPED_UNICODE нужна для работой с кириллицей, у нас будет давать правильные результаты, мы всё это получаем в читабельном виде.
Теперь если мы должны будем обратиться к файлу info.php, откроем домен, в нём есть уже файлы потому что нет файла index, перейдём на него, и получим всех наших пользователей.
В принципе всё то же самое как у нас было с локальным файлам.
Значит запомнили, создали базу данных, в ней таблицу, наполнили её данными, данные должны быть в кодировке utf-8, но я вот это использую utf8_general_mysql500_ci, как бы я по привычке ее использую.
Вот значит у нас ответ есть, теперь по поводу Android Studio. Здесь нам нужно будет указать, так в можно уже блокнот закрывать.
Дайте я просто покажу, чтобы знали, или вспомнили, если вы используете OpenServer, то вы указываете домен, в котором вы хотите работать в своей локальной сети, указываете ip компьютера.
Как его определить, через команду cmd, и в ней ipconfig, то есть у вас здесь должен быть локальный адрес вашего компьютера.
И нужно будет указать в настройках OpenServer адрес и домен, и вместо пути, как их здесь было m1.maxfad.ru/, надо будет указать вот этот адрес.
Сейчас мы этим займёмся, в принципе здесь изменения у нас будут чисто косметические, пописать немного придется, но уже не так будет много, как в прошлый раз.
В принципе всё уже готово, значит вот так выглядит теперь мой адрес, у вас это будет ваш ip вместо домена, естественно, если php файлы и база данных у вас на хостинге, укажите свой путь к файлу info.php.
Значит нам можно будет в MainActivity объявить еще arraylist
назовем его infoList, в нем будем информацию собирать.
Значит нам нужно будет вставить в функцию LoadJSONFromURL, вот сюда, после строки
напишем infoList равно listItems
И мы уже в наш новый массив получили данные, которые будем разбирать в отдельные переменные в другом месте.
Теперь перейдём в onCreate, под loadJSONFromURL(JSON_URL)
Нам нужно будет, в onCreate написать обработчик нажатия на пункт нашего списка, который у нас соответственно listView.
Сформировался обработчик, теперь объявим здесь переменную типа String nameEx, для экспорта будет, напишем
В листе определяем нажатую позицию, команда optString вернет значение указанное в скобках.
Продублируем то же самое для e-mail, пока показываю на простых примерах.
Теперь давайте вызовем intent
intent равно new Intent getapplicationcontext и вот здесь нас пока ждет засада.
Давайте создадим в проекте новую активность, назовём её InfoActivity, она будет нужна для вывода информации.
В дизайне activity_info.xml добавим WebView, наши данные, наш текст мы будем выводить всё webview.
Добавим Android id
всё больше мы ничего не делаем.
Если мы будем использовать здесь TextView, то вряд ли мы сможем, если будет большой какой-то текст растянуть его больше чем на пол экрана.
Я уже проверял, поэтому можете мне на слово поверить.
Так значит из MainActivity теперь мы обратимся к нашей InfoActivity.class.
Теперь мы вызываем intent.putExtra, передача переменной в другую активность или фрагмент через специальное ключ-имя nameEx, и то же самое для почты emailEx.
Ну и запуск активности через интент.
Так хорошо, давайте кстати проверим вообще работает ли у нас что-либо, не будем делать клик по пунктам.
Вытяну эмулятор с левого экрана, запусти приложение и посмотрим, что у нас вообще получится.
Так хорошо, есть, а вот я даже успел по ошибке кликнуть на пункт, чтобы вы убедились, что InfoActivity открывается.
Чтобы убедиться, что в эмуляторе действительно данные берутся из базы а не из локального json файла, давайте вставим еще одно имя допустим Андрей, email случайный, и нажмем кнопку Вперед.
В таблице новый пункт, если мы сейчас опять или можете, перезагрузить веб страничку, ещё один пользователь добавился.
Перезапустим эмулятор, вот у нас ещё один добавился юзер. Так давайте теперь пока уберём эмулятор, работаем в InfoActivity .
Нужно будет получить данные, которые мы передаем через интент.
Объявим переменную WebView webview, для работы с нашими данными, мы там будем соединять одно с другим, объявим ещё переменную tmp.
В onCreate объявим присвоение переменной webview и элемента WebView через findviewbyid
Объявляем опять Intent intent равно getIntent
Переменная String для получения переданного значения для name и email через getStringExtra
И теперь в переменную tmp мы поместим, давайте так напишем,
И вот у нас получается вот такая конструкция.
Поместим текст в webview
Вот и всё, так запускаем, проверяем.
У нас в принципе в базе осталось еще одно поле info, мы можем его тоже вывести, давайте заполним его, у нас пять записей, перейдём на сайт fishtext.ru, сформируем пять абзацев для каждого пользователя.
Пусть это будут тексты, например, характеристика или какая-то информация, для каждого будет своя.
Допустим этот досье и в принципе можно сделать на основе этого какой-то справочник, допустим медицинский, может быть у вас тут описание.
Очень удобный этот сайт мне он нравится fishtext.ru, можно случайную информацию сгенерировать для наглядности.
Если не пытаться читать, то выглядит нормально, когда надо для примера, для чего-то набить.
Так значит теперь обновим в браузере, у нас добавлялась информация.
Добавим в MainActivity ещё одну переменную, по сути их две получится, так про дублируем,
здесь у нас будет инфо
Передаем и в интент
Нам нужно будет принять info, соответственно в InfoActivity.
И добавим в tmp
Запускаем смотрим, так Вася, Коля, null. Почему сейчас разберемся. Опечатка была, вот такое вот досье на каждого пользователя.
Давайте на Коле проведём испытания, давайте возьмём текст, который у нас здесь, мы же можем его представить в виде HTML, скопируем, оформить наш текст как HTML, с помощью тегов.
Можем раздробить на параграфы, если мы просто будем ставить разрывы строк через тег br, то не аккуратно получится, а так можно с помощью HTML разметки получше сделать.
Какой-то текст сделаем жирным, и какое-нибудь слово сделаем с наклоном.
Внизу сделаем список, через теги ul и li.
Теперь заменим текст в базе данных, перезагрузили страницу и стало заметно, что в выдаче получается стилизация оформление.
Достаточно было в эмуляторе открыть, закрыть, перезапустим, кликнем на первом пользователе, и текст выглядит гораздо лучше.
Вы можете не просто загнать обычный текст, можете предать ему какой-то оформление на ваше усмотрение.
Ну вот сейчас уже можно закончить, пишите в комментариях понравилось ли вам видео, ставьте классы пальцы вверх, следующее видео, я думаю мы посвятим работе с фрагментами.
Сейчас всё крутится в одном так сказать месте, в одной активности со списком, можно будет сделать фрагменты, сделать, например, рубрики, или раздел музыки, допустим жанр, рок, к примеру, будет название может быть группы название, по клику можно вызывать дискографию, допустим вставить сюда картинку, что-нибудь такое ещё сделаем.
Cкачать архив для ознакомления - Android Studio: получение JSON из базы данных с помощью PHP. Урок № 4:
Android Studio получение JSON из базы данных с помощью PHP Урок № 4
Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в YouTube, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!
С уважением, авторы сайта Компьютерапия
Понравилось? Поделись этим видео с друзьями!
Android Studio получение JSON из базы данных с помощью PHP Урок № 4
Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на видео ВКонтакте, там Вы найдете много интересного, которое выходит достаточно часто. Приятного просмотра!
С уважением, авторы сайта Компьютерапия
Понравилось? Поделись этим видео с друзьями!
Android Studio получение JSON из базы данных с помощью PHP Урок № 4
Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в Рутубе, там Вы найдете много интересного, которое выходит достаточно часто. Приятного просмотра!
С уважением, авторы сайта Компьютерапия
Понравилось? Поделись этим видео с друзьями!
Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!
Предыдущие статьи
- Android Studio: получение JSON в ListView с сервера на хостинге. Урок № 3 - 04/12/2020 21:46
- Android Studio: получение JSON в ListView и ArrayAdapter. Урок № 2 - 04/12/2020 20:39
- Android Studio: получение JSON в RecyclerView и CardView. Урок № 1 - 04/12/2020 19:40
- JS база данных и ANDROID STUDIO. Часть 3 - 15/12/2019 06:40
- Уведомления - Notifications в Android Studio - 16/04/2019 18:14
- Блютуз подключение в Android (проект для Arduino). Часть 1. - 12/04/2019 17:14
- Установка android studio и настройка SDK на VirtualBox с нуля - 19/01/2019 11:52
- Android Studio Как сделать виджет - игру Орел или решка - 08/04/2018 19:38
- Android Studio: Как сделать боковое меню с помощью NavigationDrawer - 05/04/2018 20:35
- Android Menu, как сделать меню андроид - 08/03/2018 14:44
- Создание подписанного приложения для android. Generate Signed APK. - 17/02/2018 09:50
- Android and Jsoup. Парсим вебсайт на вордпрессе. Расписание уроков - часть 3 - 15/01/2018 18:25
- Создание расписания уроков для андроид устройств. Часть 2. База данных SQLITE и фрагменты - 13/12/2017 19:49
- Создание расписания уроков для андроид устройств. Array Adapter для фрагментов. - 06/12/2017 15:07
- Создание фрагментов и использование вкладок для Android - 19/11/2017 05:16
- SplashScreen в Android: пишем заставку - 18/08/2017 19:06
- Диалог в андроид: пишем приложение в Android Studio - 13/08/2017 11:27
- Intent - Android приложение с несколькими Activity - 17/06/2017 17:05
- Создание списка ListView и ArrayAdapter в Android Studio - 09/06/2017 20:38
- Используем SharedPreferences для android - 05/05/2017 18:01