NTM Solutions

Thứ Tư, 31 tháng 10, 2018

CI - Bài 02 - Phần Tin Tức

#codeigniter

XEM MỤC LỤC CÁC BÀI VIẾT VỀ CODEIGNITER


Trong bài hướng dẫn trước, chúng ta đã làm qua 01 số ví dụ hết sức cơ bản của framework bằng cách viết 01 lớp bao gồm các trang tĩnh. Chúng ta rút gọn URI bằng cách sửa vài qui tắc định tuyến. Bây giờ, trong bài này mình sẽ giới thiệu việc tải nội dung động từ cơ sở dữ liệu.

Thiết lập model

Các câu lệnh thao tác cơ sở dữ liệu không được viết trong controller mà là trong model, nhằm mục đích tái sử dụng sau này.

Các Models là nơi bạn nhận dữ liệu, chèn, và cập nhật thông tin cơ sở dữ liệu hoặc các hình thức lưu trữ dữ liệu khác.

Chúng đại diện cho dữ liệu của bạn.

Ta mở thư mục application/models/ tạo 01 tập tin tên là: News_model.php và thêm đoạn mã sau.

Trước đó bạn phải cấu hình cơ sở dữ liệu của bạn trong tập tin application/config/database.php

<?php

class News_model extends CI_Model {



        public function __construct()

        {

                $this->load->database();

        }

}

Thứ Ba, 30 tháng 10, 2018

CI-Bài 01-Trang tĩnh trong CodeIgniter

#codeigniter

XEM MỤC LỤC CÁC BÀI VIẾT CODEIGNITER


Cài đặt framework CodeIgniter

Ghi chú: bài hướng dẫn này chỉ thực hiện được khi bạn đã tải xuống và cài đặt framework CodeIgniter 3.1.9 trong môi trường lập trình web PHP của bạn.

Đường dẫn tải CodeIgniter: https://codeigniter.com/download

->chọn : Download CodeIgniter 3 và giải nén vào 01 thư mục (Ví dụ: CI) trong thư mục www

Ta sẽ có các thư mục con như: application ,system ,…Đến đây là xong phần cài đặt framework Code Igniter

Điều đầu tiên bạn cần làm là thiết lập 01 controller để xử lý các trang tĩnh.

Thứ Hai, 29 tháng 10, 2018

MYSQL – Bài 10 – Cập nhật dữ liệu trong MySQL


XEM MỤC LỤC CÁC BÀI VIẾT PHP


Cập nhật dữ liệu trong bảng MySQL dùng MySQLi và PDO


Câu lệnh UPDATE được dùng để cập nhật các bản ghi có sẵn trong 01 bảng:

UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value 



Chú ý dòng lệnh WHERE trong cú pháp câu UPDATE: câu lệnh WHERE xác định 01 hay nhiều bản ghi sẽ được cập nhật. Nếu bạn sót câu lệnh WHERE , tất cả bản ghi sẽ được cập nhật!

Để hiểu thêm về SQL, các bạn vào đây SQL tutorial.

Đây là dữ liệu bảng "MyGuests"

id
firstname
lastname
email
1
John
Doe
john@example.com
2
Mary
Moe
mary@example.com



Các ví dụ sau cập nhật bản ghi có id=2 trong bảng "MyGuests"

Thứ Sáu, 26 tháng 10, 2018

MYSQL – Bài 09 – Xóa dữ liệu từ bảng MySQL dùng MySQLi và PDO


XEM MỤC LỤC CÁC BÀI VIẾT PHP


Câu lệnh DELETE được dùng để xóa các bảng ghi từ 01 bảng:

DELETE FROM tên_bảng
WHERE tên_cột = giá_trị_nào_đó

Chú ý dòng lệnh WHERE trong cú pháp câu lệnh DELETE: Dòng lệnh WHERE xác định 01 hay nhiều bản ghi nào sẽ được xóa. Nếu bạn sót câu lệnh WHERE, tất cả bản ghi sẽ bị xóa!

Để học thêm về SQL, các bạn vào đây SQL tutorial.

Hãy nhìn vào bảng "MyGuests"

id
firstname
lastname
email
1
John
Doe
john@example.com
2
Mary
Moe
mary@example.com
3
Julie
Dooley
julie@example.com

Những ví dụ sau xóa bản ghi có id=3 trong bảng tên là "MyGuests"

Thứ Năm, 25 tháng 10, 2018

MYSQL – Bài 08 – Lấy dữ liệu từ MySQL

XEM MỤC LỤC CÁC BÀI VIẾT PHP

Lấy dữ liệu từ cơ sở dữ liệu MySQL


Câu lệnh SELECT được dùng để lấy dữ liệu từ 01 hay nhiều bảng:

SELECT column_name(s) FROM table_name

Hoặc chúng ta có thể dùng ký tự * để chọn TẤT CẢ cột từ 01 bảng:

SELECT * FROM table_name

Để học sâu về câu lệnh SQL, các bạn có thể vào đây SQLtutorial.

Lấy dữ liệu với MySQLi


Ví dụ sau chọn các cột id, firstnamelastname từ bảng MyGuests và hiển thị nó lên trang web:

Ví dụ (MySQLi hướng đối tượng)


<?php
$servername = "localhost";
$username = 
"root";
$password = 
"";
$dbname = 
"myDB";

// Tạo kết nối
$conn = new mysqli($servername, $username, $password, $dbname);
// Kiểm tra kết nối
if ($conn->connect_error) {
    
die("Kết nối thất bại: " . $conn->connect_error);
 }

$sql = 
"SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    
// xuất dữ liệu ra từng dòng
    while($row = $result->fetch_assoc()) {
        
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
else {
    
echo "0 kết quả trả về";
}
$conn->close();
?>

Thứ Tư, 24 tháng 10, 2018

MYSQL – Bài 07 – Câu truy vấn soạn sẵn


XEM MỤC LỤC CÁC BÀI VIẾT PHP


Các câu truy vấn soạn sẵn rất hữu dụng dùng chống lại nguy cơ SQL injections.

Câu truy vấn soạn sẵn và tham số ràng buộc


Câu truy vấn soạn sẵn là tính năng dùng để thực thi các câu truy vấn SQL giống nhau (hoặc tương tự) lặp đi lặp lại với hiệu suất cao.

Câu truy vấn soạn sẵn về cơ bản hoạt động như sau:

  1. Chuẩn bị: 01 khuôn mẫu truy vấn SQL được tạo và gửi đến cơ sở dữ liệu. Các giá trị bất kỳ không xác định rõ được gọi là tham số (với ký tự đại diện là dấu "?"). Ví dụ: INSERT INTO MyGuests VALUES(?, ?, ?)
  2. Cơ sở dữ liệu phân tích , biên dịch, và thực hiện tối ưu hoá truy vấn  dựa trên câu truy vấn SQL mẫu, và lưu kết quả nhưng chưa thực thi nó.
  3. Thực thi: 01 khoảng thời gian sau đó, ứng dụng gắn các giá trị vào các tham số, và cơ sở dữ liệu thực thi các câu lệnh. Lúc này ứng dụng có thể thực thi câu lệnh bao nhiêu lần mà nó muốn với các giá trị khác nhau.

So với việc thực thi các câu lệnh truy vấn SQL trực tiếp, các câu lệnh soạn sẵn có 03 ưu điểm chính sau:

  • Câu lệnh soạn sẵn rút ngắn thời gian phân tích khi chuẩn bị để câu truy vấn được thực hiện chỉ 01 lần (mặc dù câu lệnh được thực thi nhiều lần)
  • Việc truyền tham số giúp tối thiểu hóa băng thông đến máy chủ khi bạn chỉ cần gửi tham số mỗi lần kết nối thay vì nguyên cả câu truy vấn.
  • Câu truy vấn soạn sẵn rất hữu dụng để chống SQL injections, do các giá trị tham số được truyền đi sau sẽ sử dụng 01 giao thức khác , không cần truyền đầy đủ gói. Nếu câu lệnh truy vấn khuôn mẫu gốc không bị lộ ra khi truyền đi, SQL injection không thể có. 

Thứ Ba, 23 tháng 10, 2018

MYSQL - Bài 06 – Chèn nhiều bản ghi


XEM MỤC LỤC CÁC BÀI VIẾT PHP


Chèn nhiều bản ghi vào MySQL dùng MySQLi và PDO


Thực hiện nhiều câu truy vấn SQL ta nên dùng hàm mysqli_multi_query()

Các ví dụ sau thêm mới 03 bản ghi vào bảng "MyGuests"

Ví dụ (MySQLi hướng đối tượng)


<?php
$servername = "localhost";
$username = 
"root";
$password = 
"";
$dbname = 
"myDB";

// Tạo kết nối
$conn = new mysqli($servername, $username, $password, $dbname);
// Kiểm tra kết nối
if ($conn->connect_error) {
   
die("Lỗi kết nối: " . $conn->connect_error);
}

$sql = 
"INSERT INTO MyGuests (firstname, lastname, email)
        VALUES ('Nguyễn', 'Tèo', 'ntm@lophocvitinh.com');"
;
$sql .= 
"INSERT INTO MyGuests (firstname, lastname, email)
        VALUES ('Trần', 'Tủn', 'b@example.com');"
;
$sql .= 
"INSERT INTO MyGuests (firstname, lastname, email)
        VALUES ('Lý', 'Tồ', 'c@example.com')"
;

if ($conn->multi_query($sql) === TRUE) {
    
echo "Tạo các bản ghi mới thành công!";
else {
    
echo "Lỗi: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>


Thứ Hai, 22 tháng 10, 2018

MYSQL – Bài 05 – Lấy ID của bản ghi mới thêm vào


XEM MỤC LỤC CÁC BÀI VIẾT PHP


Nếu ta tiến hành INSERT hoặc UPDATE trên 01 bảng có cột AUTO_INCREMENT, chúng ta có thể lấy ID của bản ghi thêm/cập nhật mới nhất ngay tức thời.

Trong bảng "MyGuests", cột "id" có thuộc tính AUTO_INCREMENT

CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)

Các ví dụ sau y chang bài trước, ngoại trừ chúng ta thêm 01 dòng để nhận ID bảng ghi mới vừa thêm vào và xuất ra màn hình.

Thứ Sáu, 19 tháng 10, 2018

Bài 15 – Biến TOÀN CỤC vs SIÊU TOÀN CỤC

XEM MỤC LỤC CÁC BÀI VIẾT PHP


Biến SIÊU TOÀN CỤC được giới thiệu trong PHP 4.1.0, và được xem như là biến có phạm vi sử dụng trên tất cả phạm vi.

Biến TOÀN CỤC – SIÊU TOÀN CỤC trong PHP

Trong PHP, biến “SIÊU TOÀN CỤC” nghĩa là chúng luôn có thể truy cập bất chấp phạm vi – bạn có thể truy cập chúng từ bất kỳ hàm , lớp hoặc tập tin mà không cần phải làm gì cả.

Các biến siêu toàn cục của PHP là:

·         $GLOBALS

·         $_SERVER

·         $_REQUEST

·         $_POST

·         $_GET

·         $_FILES

·         $_ENV

·         $_COOKIE

·         $_SESSION

Thứ Năm, 18 tháng 10, 2018

Bài 14 – Sắp xếp mảng

XEM MỤC LỤC CÁC BÀI VIẾT PHP



Các phần tử trong mảng có thể được sắp xếp lại theo dãy alphabet hay thứ tự số, tăng dần hoặc giảm dần.

Các hàm sắp xếp mảng trong PHP

Trong bài này, chúng ta sẽ học các hàm sắp xếp mảng sau:

sort() – sắp xếp mảng theo thứ tự tăng dần

rsort() – sắp xếp mảng theo thứ tự giảm dần

asort() – sắp xếp mảng liên kết theo thứ tự tăng dần, tùy vào giá trị

ksort() – sắp xếp mảng liên kết theo thứ tự tăng dần, tùy vào khóa

arsort() – sắp xếp mảng liên kết theo thứ tự giảm dần, tùy vào giá trị

krsort() – sắp xếp mảng liên kết theo thứ tự giảm dần, tùy vào khóa

Thứ Ba, 16 tháng 10, 2018

Bài 12 – Sử dụng hàm

XEM MỤC LỤC CÁC BÀI VIẾT PHP


Sức mạnh thực sự của PHP là các hàm; với hơn 1000 hàm được xây dựng sẵn.

Hàm do người dùng tạo trong PHP

Bên cạnh các hàm được xây dựng sẵn của PHP, chúng ta có thể tạo hàm của riêng mình.

01 hàm là 01 khối các đoạn mã có thể dùng nhiều lần trong 01 chương trình.

01 hàm sẽ không được thực thi ngay khi trang web được tải xuống.

01 hàm sẽ chỉ thực thi khi được gọi đến trong chương trình.

Ghi chú: ứng dụng thuộc tính này của hàm, những gì không quá cần thiết trong trang web(như hiệu ứng động, quảng cáo,…) ta đưa vào hàm để khi tải trang web sẽ nhanh hơn.

Tạo hàm người dùng trong PHP

01 hàm người dùng được khai báo với từ khóa "function":

Cú pháp:
function ten_ham() {

    đoạn mã được thực thi;

}

Ghi chú: tên hàm có thể bắt đầu bằng chữ hoặc dấu _ (không phải bắt đầu bằng số).

Thứ Hai, 15 tháng 10, 2018

Bài 11 – Vòng lặp FOR

XEM MỤC LỤC CÁC BÀI VIẾT PHP



Vòng lặp for trong PHP thực thi 01 khối mã với số lần định trước.

Vòng lặp FOR trong PHP

Vòng lặp for được sử dụng khi bạn biết chắc số vòng lặp mà đoạn mã phải chạy.

Cú pháp:
for (giá trị số đếm ban đầu; kiểm tra số đếm; tăng số đếm) {

    đoạn mã sẽ thực thi;

}

Tham số:

Giá trị số đếm ban đầu: giá trị số đếm khi bắt đầu vòng lặp

Kiểm tra số đếm: kiểm tra số đếm mỗi vòng lặp.

Nếu giá trị là TRUE, vòng lặp tiếp tục.

Nếu giá trị là FALSE, vòng lặp dừng.

Tăng số đếm: tăng giá trị số đếm mỗi vòng lặp.

Chủ Nhật, 14 tháng 10, 2018

Bài 10 – Vòng lặp WHILE

XEM MỤC LỤC CÁC BÀI VIẾT PHP


Vòng lặp while trong PHP thực thi 01 khối mã nếu điều kiện là true.

Vòng lặp trong PHP

Thông thường khi bạn viết mã, bạn muốn cùng 01 khối mã chạy nhiều lần trong 01 dòng.

Thay vì phải viết nhiều dòng lệnh trong đoạn mã, chúng ta dùng vòng lặp để làm điều này.

Trong PHP, chúng ta có các loại vòng lặp sau:

while - loops thực thi khối mã nếu điều kiện là true

do...while - loops thực thi khối mã 01 lần , và sau đó lặp lại nếu điều kiện là true

for - loops thực thi khối mã lặp lại với số lần xác định trước

foreach - loops thực thi khối mã lặp đúng số phần tử trong 01 mảng

MYSQL – Bài 04 – Thêm dữ liệu


XEM MỤC LỤC CÁC BÀI VIẾT PHP


Thêm dữ liệu vào MySQL dùng MySQLi và PDO


Sau khi tạo xong cơ sở dữ liệu và bảng , chúng ta tiến hành thêm dữ liệu vào cho chúng.

Đây là 01 vài quy tắc cú pháp phải tuân theo:

·         Câu truy vấn SQL phải nằm trong cặp dấu ngoặc khi viết trong PHP.

·         Giá trị chuỗi bên trong câu truy vấn SQL phải nằm trong cặp dấu ngoặc đơn.

·         Giá trị số không nằm trong cặp dấu ngoặc.

·         Từ NULL không nằm trong cặp dấu ngoặc.

Câu lệnh INSERT INTO dùng để thêm mới các bảng ghi vào 01 bảng MySQL cú pháp như sau:

INSERT INTO tên_bảng (cột1, cột2, cột3,...)
VALUES (giá_trị1, giá_trị2, giá_trị3,...)

Để học sâu về câu lệnh SQL, các bạn vào đây SQL tutorial.

Trong bài trước chúng ta tạo 01 bảng rỗng có tên "MyGuests" có 05 cột: "id", "firstname", "lastname", "email" và "reg_date". Bây giờ, chúng ta sẽ điền dữ liệu vào bảng.

Ghi chú: Nếu 01 cột được thiết lập là AUTO_INCREMENT (Ví dụ như cột "id") hoặc TIMESTAMP (Ví dụ như cột "reg_date"), MySQL sẽ tự động thêm giá trị vào.

Các ví dụ sau thêm 01 bảng ghi mới vào bảng "MyGuests"

Thứ Bảy, 13 tháng 10, 2018

Bài 09 – Phát biểu SWITCH

XEM MỤC LỤC CÁC BÀI VIẾT PHP


Phát biểu switch được dùng để thực thi các hành động khác nhau tùy vào điều kiện.

Phát biểu switch trong PHP

Dùng phát biểu switch để chọn 01 khối thực thi trong đoạn mã.

Cú pháp:
switch (n) {


    case nhãn1:


        đoạn mã thực thi nếu n=nhãn1;


        break;


    case nhãn2:


        đoạn mã thực thi nếu n=nhãn2;


        break;


    case nhãn3:


        đoạn mã thực thi nếu n=nhãn3;


        break;


    ...


    default:


        đoạn mã thực thi nếu n không bằng nhãn nào;


}

Cách thức hoạt động: đầu tiên chúng ta có 01 biểu thức n (hầu hết các trường hợp thì đây là biến), được tính giá trị 01 lần duy nhất.

Giá trị của biểu thức n sau đó được so sánh với giá trị của từng case trong cấu trúc.

Nếu khớp 01 case, khối mã gắn liền sẽ thực thi.

Dùng phát biểu break để ngăn đoạn mã tự động chạy case tiếp theo.

Đoạn mã trong phát biểu default sẽ được dùng nếu không khớp case nào.

Thứ Sáu, 12 tháng 10, 2018

Bài 08 – Phát biểu điều kiện IF

XEM MỤC LỤC CÁC BÀI VIẾT PHP


Các phát biểu điều kiện dùng để xét các điều kiện thực hiện các hành động phù hợp.

Phát biểu điều kiện trong PHP

Rất hay sử dụng khi viết mã, khi bạn muốn thực hiện các hành động khác nhau tùy vào điều kiện.

Trong PHP, ta có các phát biểu điều kiện sau:

if – thực thi mã nếu điều kiện là true

if...else – thực thi mã nếu điều kiện là true và  đoạn mã khác nếu điều kiện là false

if...elseif....else – thực thi các đoạn mã khác nhau khi có >2 điều kiện

switch – chọn 01 trong các khối mã để thực thi

MYSQL – Bài 03 – Tạo bảng


XEM MỤC LỤC CÁC BÀI VIẾT PHP


01 bảng cơ sở dữ liệu có 01 tên duy nhất và chứa các dòng và cột.

Tạo 01 bảng MySQL dùng MySQLi và PDO


Câu lệnh CREATE TABLE được dùng để tạo bảng trong MySQL.

Chúng ta sẽ tạo 01 bảng có tên "MyGuests", có 05 cột: "id", "firstname", "lastname", "email" and "reg_date":

CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)

Thứ Năm, 11 tháng 10, 2018

Bài 07 – Toán tử

XEM MỤC LỤC CÁC BÀI VIẾT PHP


Toán tử trong PHP

Toán tử dùng để thực hiện các thao tác với biến và giá trị.

Trong PHP, Toán tử gồm các nhóm sau:

·         Toán tử TOÁN HỌC

·         Toán tử GÁN

·         Toán tử SO SÁNH

·         Toán tử TĂNG GIẢM

·         Toán tử LUẬN LÝ

·         Toán tử CHUỖI

·         Toán tử MẢNG

Toán tử toán học trong PHP

Trong PHP, toán tử toán học được dùng tính các phép toán thông thường như: CỘNG, TRỪ , NHÂN, CHIA…

Toán tử
Tên
Ví dụ
Kết quả
+
CỘNG
$x + $y
TỔNG của $x và $y
-
TRỪ
$x - $y
HIỆU của $x và $y
*
NHÂN
$x * $y
TÍCH của $x và $y
/
CHIA
$x / $y
THƯƠNG của $x và $y
%
LẤY DƯ
$x % $y
LẤY DƯ của phép chia $x và $y
**
$x ** $y
$x MŨ $y

MYSQL - Bài 02 – Tạo mới cơ sở dữ liệu


XEM MỤC LỤC CÁC BÀI VIẾT PHP


01 cơ sở dữ liệu chứa ít nhất 01 bang.

Bạn sẽ cần quyền tạo (CREATE) để tạo hay xóa 01 cơ sở dữ liệu MySQL (ở đây chúng ta đang học nên cứ dùng tài khoản root cho tiện)

Tạo 01 cơ sở dữ liệu MySQL sử dụng MySQLi và PDO

Câu lệnh CREATE DATABASE dùng để tạo 01 cơ sở dữ liệu trong MySQL.

Các ví dụ sau minh họa việc tạo 01 cơ sở dữ liệu tên "myDB":

Thứ Tư, 10 tháng 10, 2018

Bài 06 – Hằng số

XEM MỤC LỤC CÁC BÀI VIẾT PHP


Hằng số cũng giống như biến chỉ khác ở chỗ chúng không thể thay đổi giá trị cũng như tái định nghĩa.

Hằng số trong PHP

01 hằng số là 01 định danh (tên) định nghĩa 01 giá trị.

Giá trị hằng số là không thể thay đổi trong suốt đoạn mã.

Tên hằng số bắt đầu bằng chữ hoặc dấu gạch dưới (không có dấu $ trước tên hằng số).

Ghi chú: không giống như biến , hằng số tự động có phạm vi toàn cục (global) trong cả đoạn code.

MYSQL – Bài 01 – PHP kết nối đến MySQL

XEM MỤC LỤC CÁC BÀI VIẾT PHP


PHP 5 và các phiên bản sau này có thể làm việc với cơ sở dữ liệu MySQL qua 02 phương thức sau:

·         Phần mở rộng MySQLi (chữ "i" là viết tắt của chữ cải thiện - improved)

·         PDO (các đối tượng dữ liệu PHP)

Các phiên bản cũ (trước PHP5) dùng phần mở rộng MySQL . Tuy nhiên, phần mở rộng này đã ngưng sử dụng từ năm 2012.

Nên dùng MySQLi hay PDO?


Câu trả lời là "Thích gì dùng nấy".

Cả MySQLi và PDO có những ưu điểm riêng:

PDO có thể dùng với hơn 12 hệ cơ sở dữ liệu, trong khi MySQLi chỉ dùng với cơ sở dữ liệu MySQL.

Vì vậy, nếu bạn phải với PDO ta có thể chuyển đổi qua hệ cơ sở dữ liệu khác dễ dàng với việc thay đổi connection string và vài câu truy vấn. Với MySQLi, bạn phải viết lại hầu như toàn bộ mã các câu truy vấn đi kèm.

Cả 02 đều viết theo kiểu hướng đối tượng , nhưng MySQLi luôn yêu cầu phải có 01 procedural API.

Cả 02 hỗ trợ các câu lệnh cài đặt sẵn - Prepared Statements. Các câu lệnh này giúp tránh khỏi SQL injection, và chúng rất quan trọng trong việc bảo mật ứng dụng web.
Facebook Youtube RSS