Php với dự án mysql

Trong bài viết này mình sẽ hướng dẫn các bạn tạo Web Service bằng PHP và MYSQL đơn giản, cơ bản cho những bạn mới bắt đầu tìm hiểu về web service và PHP, cụ thể là web service trong android và hướng dẫn phân tích cú pháp json bằng thư . Bạn đã từng nghe về dịch vụ web chưa, dịch vụ web là gì và cách hoạt động của nó như thế nào?

Tạo Web Service bằng PHP và MYSQL cho ứng dụng di động - Part 1Tạo Web Service bằng PHP và MYSQL cho ứng dụng di động – Phần 1

Dịch vụ web là gì ?

Dịch vụ web là một tập tin phương thức được gọi thực hiện từ xa thông qua một địa chỉ http url. Kết quả trả về của dịch vụ web thường ở dạng json hoặc xml. Dịch vụ web thường được sử dụng để tạo các ứng dụng phân tán

Dịch vụ web cho phép bạn giao tiếp qua mạng, không phải P2P. Nó cung cấp API cho phép bạn sử dụng nó để tương tác với dịch vụ hoặc bạn có thể tự tạo dịch vụ web bằng PHP và MYSQL như trong bài viết này
Ví dụ bạn sử dụng một ứng dụng di động, ứng dụng máy tính để bàn, web. Thì các ứng dụng đó gửi thông tin lên webservice rồi webservice xử lý dữ liệu bạn gửi từ ứng dụng đến sever và sever xử lý xong nó sẽ trả về dữ liệu cho bạn bằng json hay xml, để xử lý dữ liệu ở app bạn sẽ làm

Đặc điểm của dịch vụ web

  • Chi phí thấp, dễ bảo trì
  • Có thể truy cập được từ bất kỳ ứng dụng nào
  • Không phụ thuộc vào ngôn ngữ lập trình. PHP, Java,. MẠNG LƯỚI,…
  • Hỗ trợ thao tác giữa các thành phần không đồng nhất

frameborder="0" allow="gia tốc kế; tự động phát; phương tiện được mã hóa; con quay hồi chuyển; ảnh trong ảnh" cho phép toàn màn hình>

Tạo dịch vụ web bằng PHP và MYSQL

Trước tiên để tạo dịch vụ web bằng php và mysql thì bạn cần phải có máy chủ hỗ trợ ngôn ngữ php và mysql. Nếu bạn nào chưa có hosting thì có thể tạo localhost với Xampp  hoặc  , các bạn không nên sử dụng hosting miễn phí vì những hosting miễn phí thường có chứa quảng cáo, khi code bạn trả về Json nó thường kèm theo các quảng cáo này gây khó khăn . In direction this mình sử dụng WampServer

B1. Tạo một cơ sở dữ liệu là students_manager và bảng là students bao gồm các trường. id, tên, tuổi, nclass

Sau khi cài đặt wamperver thành công, bạn truy cập đường dẫn http. //localhost/phpmyadmin , người dùng là root, vượt qua để trống, chọn tab SQL  và dán vào đoạn mã sau

#Create database
CREATE DATABASE students_manager;


#Create Table students
CREATE TABLE students_manager.students(
  `id` INT(10) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(50) NOT NULL,
  `age` INT(5) NOT NULL,
  `nclass` VARCHAR(10) NOT NULL,
  PRIMARY KEY(`id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1;


#Insert data
INSERT INTO  students_manager.students(`id`, `name`, `age`, `nclass`) VALUES
(1, 'Nguyễn Văn A', '20', 'KT10'),
(2, 'Nguyễn Văn B', '21', 'DT5'),
(3, 'Nguyễn Văn C', '20', 'KT10'),
(4, 'Nguyễn Văn D', '21', 'DT5'),
(5, 'Nguyễn Văn E', '21', 'CK2')

B2. Create file php set name is api. php to file this in the directory www of WampServer C. wamp64wwwstudent_managerapi. php

  • To get all danh sách sinh viên và trả về Json
= 1) {
	while ($row = mysql_fetch_assoc($resouter)) {
        $temparray[] = $row;
    } 
}   
echo json_encode($temparray);

?>

Bạn vào đường dẫn sau để xem kết quả. http. // localhost/student_manager/api. php. Hoặc các bạn có thể cài đặt ứng dụng Postman này trên chrome để có thể tùy biến xem kết quả dễ dàng hơn, liên kết trên trình duyệt chỉ có thể sử dụng theo phương thức GET nhưng trên ứng dụng này có thể sử dụng theo nhiều phương thức khác nữa. NHẬN, ĐĂNG, ĐẶT, VÁ, XÓA… rất hữu ích

Xin lỗi các bạn vì có thể bạn thấy trong lớp có trường, nhưng trong sql thì không có, lý do là mình vừa sửa lại cơ sở dữ liệu 1 chút thành nclass. D

Xem kết quả trả về JsonView results return Json

Xem kết quả ở định dạng Json trong PostmanXem kết quả ở định dạng Json trong Postman

  • Nhận sinh viên theo ID và trả về Json

You edit edit more in api file. php for same as bottom

= 1) {
	while ($row = mysql_fetch_assoc($resouter)) {
        $temparray[] = $row;
    } 
}   
echo json_encode($temparray);
end:
?>

Để xem kết quả, bạn chỉ cần thêm ?id= vào sau liên kết lúc khù http. // localhost/student_manager/api. php?id=1. If you to void http. // localhost/student_manager/api. php?id= nó sẽ trả về Vui lòng nhập id

Sau khi đã có Json bạn có thể parse json bằng cách trang bị thêm trong android mình đã nói ở bài trước

Phân tích cú pháp Json với Retrofit

Json parsing with RetrofitPhân tích cú pháp Json với Retrofit

B1. Mở Android studio và tạo dự án mới đặt tên WebService

B2. Thêm thư viện trang bị thêm vào phụ thuộc (Module. ứng dụng)

dependencies {
.. 
   // Retrofit
    compile 'com.squareup.retrofit2:retrofit:2.2.0'

    // JSON Parsing
    compile 'com.google.code.gson:gson:2.8.0'
    compile 'com.squareup.retrofit2:converter-gson:2.2.0'
...
}

B3. Thêm quyền truy cập INTERNET vào AndroidManifest. xml

    

B 4. Tạo bố cục cho Activity_main. xml



    

B5. Create Object class set name Student and to in package models

Các thuộc tính của class Student giống hệt y chang như các trường của cơ sở dữ liệu, cái hạn chế của parse json bằng cách trang bị thêm cho nó nằm ở đấy, tổ chức cấu trúc của Json như thế nào thì trong đối tượng trong Android phải y như thế đấy. Mình mới nghiên cứu cái thư viện này thấy như thế nào, không biết là có pro nào làm việc nhiều với thư viện này có cách xử lý khác không rất mong được chỉ giáo, xin cảm ơn rất nhiều

Cũng vì lý do này nên mình mới sửa class –> nclass, do lúc đầu mình tạo database thành class nên object trong android cũng phải đặt theo class. Mà đặt tên thuộc tính của đối tượng là class trong android là không được phép thì sẽ báo lỗi ngay, mà chỉ sửa class –> nclass trong android thì sẽ không phân tích được class trên webservice. Nên chỉ chỉnh 1 chút trên database với android là ok

package com.dev4u.ntc.webservice.models;

/**
 * IDE: Android Studio
 * Created by Nguyen Trong Cong  - NTCDE.COM
 * Name packge: com.dev4u.ntc.webservice.models
 * Name project: WebService
 * Date: 3/24/2017
 * Time: 17:47
 */

public class Student {
    private int id;
    private String name;
    private int age;
    private String nclass;

    public Student(int id, String name, int age, String nclass) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.nclass = nclass;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + ''' +
                ", age=" + age +
                ", nclass='" +  + ''' +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getNclass() {
        return nclass;
    }

    public void setNclass(String nclass) {
        this.nclass = nclass;
    }
}

B6. Tạo lớp RetrofitClient

Để sử dụng các yêu cầu mạng đến một API RESTful bằng cách trang bị thêm, chúng ta cần tạo ra một đối tượng bằng cách sử dụng Trình tạo trang bị thêm lớp và cấu hình nó với một cơ sở URL

package com.dev4u.ntc.webservice.webservice;

import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

/**
 * IDE: Android Studio
 * Created by Nguyen Trong Cong  - NTCDE.COM
 * Name packge: com.dev4u.ntc.webservice
 * Name project: WebService
 * Date: 3/24/2017
 * Time: 17:52
 */

public class RetrofitClient {
    private static Retrofit retrofit = null;

    public static Retrofit getClient(String baseUrl) {
        if (retrofit == null) {
            retrofit = new Retrofit.Builder()
                    .baseUrl(baseUrl)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        return retrofit;
    }
}

B7. Tạo giao diện API

Create API Interface set name is APIService. Giao diện này được sử dụng để chứa các phương thức mà chúng tôi sẽ sử dụng để gọi các yêu cầu truy vấn HTTP chẳng hạn như GET, POST, PUT và DELETE

Tại Giao diện dịch vụ API này, vị trí getStudent(@Query(“id”) String id) sẽ sử dụng phương thức @Query của thư viện trang bị thêm để truy vấn dữ liệu ở ?id=. theo như liên kết trên trình duyệt là http. // localhost/student_manager/api. php?id=. , ví dụ bạn muốn lấy student theo id và class chẳng hạn, bạn sẽ viết thành getStudent(@Query(“id”) String id, @Query(“nclass”) String nclass) , liên kết trên trình duyệt sẽ là http. // localhost/student_manager/api. php?id=…?nclass=…

Ở đây còn một vấn đề nữa, Call> getStudent(@Query(“id”) String id); chỉ lấy một Student theo id mà tại sao lại cần dùng List. Lý do là lúc mình code service trả về Json là một Json Array mà 1 array thì sẽ có nhiều object nên Retrofit nó sẽ hiểu và trong android bắt buộc phải để Call> mặc dù trong Json Array đó chỉ có 1 Object. Nếu bạn muốn chỉ gọi Call thì lúc Service trả về Json phải là 1 Json Object.

________số 8_______

B8. Tạo lớp ApiUtils

Lớp ApiUtils được sử dụng để khởi động trang bị thêm trong MainActivity và gọi các phương thức trong Giao diện APIService

Ở đây mình chạy trên Trình giả lập nên url mình để là http. //10. 0. 2. 2 but if you run on Genymotion will change to http. //10. 0. 2. 3

package com.dev4u.ntc.webservice.webservice;

/**
 * IDE: Android Studio
 * Created by Nguyen Trong Cong  - NTCDE.COM
 * Name packge: com.dev4u.ntc.webservice
 * Name project: WebService
 * Date: 3/24/2017
 * Time: 17:54
 */

public class ApiUtils {
    public static final String BASE_URL = "http://10.0.2.2";

    private ApiUtils() {
    }

    public static APIService getAPIService() {

        return RetrofitClient.getClient(BASE_URL).create(APIService.class);
    }
}

B8. Khởi tạo bố cục và trang bị thêm trong MainActivity

= 1) {
	while ($row = mysql_fetch_assoc($resouter)) {
        $temparray[] = $row;
    } 
}   
echo json_encode($temparray);

?>
0

B9. Đặt sự kiện OnClick cho 2 Nút

= 1) {
	while ($row = mysql_fetch_assoc($resouter)) {
        $temparray[] = $row;
    } 
}   
echo json_encode($temparray);

?>
1

Tệp mã MainActivity

= 1) {
	while ($row = mysql_fetch_assoc($resouter)) {
        $temparray[] = $row;
    } 
}   
echo json_encode($temparray);

?>
2

Xem hướng Tạo Web Service bằng PHP và MYSQL cho ứng dụng di động – Phần 2

Dự án trên Github. https. //github. com/trongcong/WebServiceAndroid

Json parsing, Parse json trong android, Parse Json with Retrofit, Tạo web service, Web service android, Webservice with PHP