В данном уроке мы с вами сделаем простое Android-приложения, который будет вызывать PHP скрипт для выполнения основных CRUD (Create, Read, Update, Delete) операций.
istochnik :https://devcolibri.com/как-работать-с-mysql-в-android-часть-1/
Android приложение будет вызывать PHP скрипт, который будет подключается к базе данных MySQL и выполнить какие то операции.
Что вам потребуется?
1) WEB-сервер для PHP. Будем использовать сборку DenWer.
2) MySQL база данных.
3) Android Emulator.
Шаг 1. Установка WEB-сервера.
Так как мы будем работать со сборкой Denwer, то для начала скачиваем её тут http://www.denwer.ru/
После того как вы его установили и проверили, что он работает, переходим к следующему шагу.
Шаг 2. Создание БД
Так как мы подняли WebServer Denwer в нем уже вшита MySQL база данных, давайте создадим базу и таблицу (products) в ней.
Создание таблиц в БД:
CREATE TABLE products(
pid int(11) primary key auto_increment,
name varchar(100) not null,
price decimal(10,2) not null,
description text,
created_at timestamp default now(),
updated_at timestamp
);
В конце видео создания БД я не зря показал локальный IP, так как я использую виртуальную ОС для удобства. В вашем случае вы будите обращаться к localhost или же 127.0.0.1 .
Шаг 3. Подключение к MySQL базе с помощью PHP
Давайте создадим PHP класс, который будет отвечать за подключение к БД. Основная цель этого класса – открытие и закрытие соединения с БД.
Но, для того что бы подключатся к БД нам нужно где то хранить требуемые параметры для подключения к БД для этого создадим [C:\WebServers\home\devserver.com\www\db_config.php] со следующим содержимым:
<?php
define('DB_USER', "root"); //логин админа БД
define('DB_PASSWORD', "root"); // пароль админа БД
define('DB_DATABASE', "devcolibri"); // база данных
define('DB_SERVER', "localhost"); // сервер 'localhost'
?>
А теперь создадим в той же директории файл [C:\WebServers\home\devserver.com\www\db_connect.php] со следующим содержимым:
<?php
class DB_CONNECT {
function __construct() {
$this->connect();
}
function __destruct() {
$this->close();
}
function connect() {
require 'db_config.php';
$con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error());
$db = mysql_select_db(DB_DATABASE) or die(mysql_error()) or die(mysql_error());
return $con;
}
function close() {
mysql_close();
}
}
?>
Шаг 4. Базовые CRUD операции в PHP
В этом уроке я покрываю основные CRUD (Create, Read, Update, Delete) операций для MySQL с помощью PHP.
Запись строки в БД
Создадим в нашем PHP проекте новый файл create_product.php который будет обеспечивать возможность записи продукта в БД.
<?php
$response = array();
if (isset($_POST['name']) && isset($_POST['price']) && isset($_POST['description'])) {
$name = $_POST['name'];
$price = $_POST['price'];
$description = $_POST['description'];
require 'db_connect.php';
$db = new DB_CONNECT();
$result = mysql_query("INSERT INTO products(name, price, description) VALUES('$name', '$price', '$description')");
if ($result) {
$response["success"] = 1;
$response["message"] = "Product successfully created.";
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "Oops! An error occurred.";
echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
echo json_encode($response);
}
?>
Для приведенного выше кода JSON ответ будет примерно таким:
Когда POST параметр(ы) отсутствует:
{
"success": 0,
"message": "Обязательное поле(я) отсутствует"
}
Когда продукт успешно добавлен:
{
"success": 1,
"message": "Продукт успешно создана."
}
Когда ошибка при добавлении данных в БД:
{
"success": 0,
"message": "Error! По каким-то причинам продукт не был добавлен."
}
Чтение строки с БД
Создадим новый PHP файл в нашем проекте и назовем его get_product_details.phpсо следующим содержанием:
<?php
$response = array();
require 'db_connect.php';
$db = new DB_CONNECT();
if (isset($_GET["pid"])) {
$pid = $_GET['pid'];
$result = mysql_query("SELECT *FROM products WHERE pid = $pid");
if (!empty($result)) {
if (mysql_num_rows($result) > 0) {
$result = mysql_fetch_array($result);
$product = array();
$product["pid"] = $result["pid"];
$product["name"] = $result["name"];
$product["price"] = $result["price"];
$product["description"] = $result["description"];
$product["created_at"] = $result["created_at"];
$product["updated_at"] = $result["updated_at"];
$response["success"] = 1;
$response["product"] = array();
array_push($response["product"], $product);
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "No product found";
echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = "No product found";
echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
echo json_encode($response);
}
?>
Ответ JSON для вышеупомянутого файла будет следующим.
При успешном получении продукта:
{
"success": 1,
"product": [
{
"pid": "1",
"name": "iPHone 5",
"price": "500.00",
"description": "iPhone 5 white",
"created_at": "2013-04-27 01:22:56",
"updated_at": "0000-00-00 00:00:00"
}
]
}
Когда продукт не найден:
{
"success": 0,
"message": "Продукт не найден."
}
Получение всех продуктов с БД
Для того чтобы вывести весь список продуктов на устройство нам нужно получить все продукты с БД.
Создадим get_all_products.php со следующим содержимым:
<?php
$response = array();
require 'db_connect.php';
$db = new DB_CONNECT();
$result = mysql_query("SELECT *FROM products") or die(mysql_error());
if (mysql_num_rows($result) > 0) {
$response["products"] = array();
while ($row = mysql_fetch_array($result)) {
$product = array();
$product["pid"] = $row["pid"];
$product["name"] = $row["name"];
$product["price"] = $row["price"];
$product["created_at"] = $row["created_at"];
$product["updated_at"] = $row["updated_at"];
array_push($response["products"], $product);
}
$response["success"] = 1;
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "No products found";
echo json_encode($response);
}
?>
JSON ответ выше приведенного кода будет таким:
{
"products": [
{
"pid": "1",
"name": "iPhone 5",
"price": "500.00",
"created_at": "2013-04-27 02:04:02",
"updated_at": "0000-00-00 00:00:00"
},
{
"pid": "2",
"name": "Macbook Pro",
"price": "600.00",
"created_at": "2012-04-29 02:04:51",
"updated_at": "0000-00-00 00:00:00"
},
{
"pid": "3",
"name": "Macbook Air",
"price": "800.00",
"created_at": "2013-04-27 02:05:57",
"updated_at": "0000-00-00 00:00:00"
},
{
"pid": "4",
"name": "OS X Lion",
"price": "100.00",
"created_at": "2013-04-27 02:07:14",
"updated_at": "0000-00-00 00:00:00"
}
],
"success": 1
}
Когда продукт не найден:
{
"success": 0,
"message": "Продуктов нет в БД!"
}
Обновление продукта в БД
Создайте файл с именем update_product.php со следующим содержимым:
<?php
$response = array();
if (isset($_POST['pid']) && isset($_POST['name']) && isset($_POST['price']) && isset($_POST['description'])) {
$pid = $_POST['pid'];
$name = $_POST['name'];
$price = $_POST['price'];
$description = $_POST['description'];
require 'db_connect.php';
$db = new DB_CONNECT();
$result = mysql_query("UPDATE products SET name = '$name', price = '$price', description = '$description' WHERE pid = $pid");
if ($result) {
// successfully updated
$response["success"] = 1;
$response["message"] = "Product successfully updated.";
echo json_encode($response);
} else {
}
} else {
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
echo json_encode($response);
}
?>
Ответ JSON выше кода, когда продукт успешно обновлены будет следующим:
{
"success": 1,
"message": "Продукт удачно обновлен!"
}
Удаление продукта с БД
Последняя операция удаления из базы данных. Создайте новый файл назовите delete_product.php и вставьте следующий код:
<?php
$response = array();
if (isset($_POST['pid'])) {
$pid = $_POST['pid'];
require 'db_connect.php';
$db = new DB_CONNECT();
$result = mysql_query("DELETE FROM products WHERE pid = $pid");
if (mysql_affected_rows() > 0) {
$response["success"] = 1;
$response["message"] = "Product successfully deleted";
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "No product found";
echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
echo json_encode($response);
}
?>
Когда продукт удачно будет удален то JSON ответ будет таким:
{
"success": 1,
"message": "Продукт удачно удален!"
}
Когда продукт не найден, то таким:
{
"success": 0,
"message": "Продукт не найден!"
}
Теперь наконец-то мы можем приступить к программированию на Android. То что мы описали выше на PHP будем использовать как API слой. И наше приложение будет общаться с MySQL сервером по средством JSON формата и GET, POST запросов.
Комментариев нет:
Отправить комментарий