Lập trình PHP cơ bản – Học lập trình, học sử dụng máy tính từ số 0 – ZeZo.dev https://zezo.dev Fri, 29 Nov 2024 17:37:07 +0000 vi hourly 1 https://wordpress.org/?v=6.7.1 https://zezo.dev/wp-content/uploads/2024/11/cropped-zzel-32x32.png Lập trình PHP cơ bản – Học lập trình, học sử dụng máy tính từ số 0 – ZeZo.dev https://zezo.dev 32 32 Hướng dẫn code upload file trong php bằng ajax có progress https://zezo.dev/view/huong-dan-code-upload-file-trong-php-bang-ajax-co-progress Fri, 29 Nov 2024 17:37:07 +0000 https://zezo.dev/?p=283 Bước 1: Chuẩn bị cấu trúc các file và thư mục như sau
├── index.html
├── upload.php
├── uploads/
├── js/
│   └── jquery.min.js
├── css/
│   └── style.css
└── images/

– File index.html để hiển thị form chọn file và hiển thị tiến trình upload
– File upload.php để xử lý lưu trữ file trên server
– Thư mục uploads/ để lưu trữ file
– Thư mục js/ chứa các file .js
– Thư mục css/ chứa các file định dạng .css
– Thư mục images/ chứa file ảnh hiển thị trên giao diện của ứng dụng

Bước 2: Trong file index.html

Thêm code hiển thị form để chọn file

<!-- File upload form -->
<form id="uploadForm" enctype="multipart/form-data">
    <label>Choose File:</label>
    <input type="file" name="file" id="fileInput">
    <input type="submit" name="submit" value="UPLOAD"/>
</form>

Thêm đoạn code hiển thị thanh tiến trình

<!-- Progress bar -->
<div class="progress">
    <div class="progress-bar"></div>
</div>

Tiếp theo là thêm đoạn code hiển thị trạng thái kết quả upload

<!-- Display upload status -->
<div id="uploadStatus"></div>

Và nhúng thư viện jquery vào để upload

<script src=”https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js”></script>

Code phần xử lý javascript

<script>
$(document).ready(function(){
    // File upload via Ajax
    $("#uploadForm").on('submit', function(e){
        e.preventDefault();
        $.ajax({
            xhr: function() {
                var xhr = new window.XMLHttpRequest();
                xhr.upload.addEventListener("progress", function(evt) {
                    if (evt.lengthComputable) {
                        var percentComplete = ((evt.loaded / evt.total) * 100);
                        $(".progress-bar").width(percentComplete + '%');
                        $(".progress-bar").html(percentComplete+'%');
                    }
                }, false);
                return xhr;
            },
            type: 'POST',
            url: 'upload.php',
            data: new FormData(this),
            contentType: false,
            cache: false,
            processData:false,
            beforeSend: function(){
                $(".progress-bar").width('0%');
                $('#uploadStatus').html('<img src="images/loading.gif"/>');
            },
            error:function(){
                $('#uploadStatus').html('<p style="color:#EA4335;">Lỗi upload???</p>');
            },
            success: function(resp){
                if(resp == 'ok'){
                    $('#uploadForm')[0].reset();
                    $('#uploadStatus').html('<p style="color:#28A74B;">Upload thành công!</p>');
                }else if(resp == 'err'){
                    $('#uploadStatus').html('<p style="color:#EA4335;">Chưa chọn file upload hoặc file không hợp lệ</p>');
                }
            }
        });
    });
	
    // File type validation
    $("#fileInput").change(function(){
        var allowedTypes = ['application/pdf', 'application/msword', 'application/vnd.ms-office', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'image/jpeg', 'image/png', 'image/jpg', 'image/gif'];
        var file = this.files[0];
        var fileType = file.type;
        if(!allowedTypes.includes(fileType)){
            alert('Please select a valid file (PDF/DOC/DOCX/JPEG/JPG/PNG/GIF).');
            $("#fileInput").val('');
            return false;
        }
    });
});
 </script>

Bước 3: Viết code phần server upload.php

<?php 
$upload = 'err'; 
if(!empty($_FILES['file'])){ 
     
    // Thiết lập lựa chọn thư mục và kiểu file được phép upload
    $targetDir = "uploads/"; 
    $allowTypes = array('pdf', 'doc', 'docx', 'jpg', 'png', 'jpeg', 'gif'); 
     
    $fileName = basename($_FILES['file']['name']); 
    $targetFilePath = $targetDir.$fileName; 
     
    // Kiểm tra kiểu file hợp lệ hay không 
    $fileType = pathinfo($targetFilePath, PATHINFO_EXTENSION); 
    if(in_array($fileType, $allowTypes)){ 

        // Di chuyển file đã upload vào thư mục lưu trữ 
        if(move_uploaded_file($_FILES['file']['tmp_name'], $targetFilePath)){ 
            $upload = 'ok'; 
        } 
    } 
} 
echo $upload; 
?>

Cuối cùng là chạy và thử nghiệm.
Lưu ý: Code trên chỉ là demo đơn giản, một số tình huống bắt lỗi hay tùy biến khác bạn tự tùy chỉnh nhé.

]]>
Code mẫu phân biệt các loại vòng lặp trong PHP https://zezo.dev/view/code-mau-phan-biet-cac-loai-vong-lap-trong-php Fri, 29 Nov 2024 17:20:25 +0000 https://zezo.dev/?p=260 Ngôn ngữ lập trình PHP có sử dụng một số loại cấu trúc vòng lặp: for, while, do…while, foreach. Mỗi loại cấu trúc lặp có một ưu điểm riêng, tùy theo từng bài toán mà bạn có thể áp dụng loại vòng lặp nào.

 

Cấu trúc for

Đây là loại vòng lặp khi biết trước số lượng bước lặp và có nhu cầu sử dụng tới chỉ số thứ tự của bước lặp.

Cú pháp:

for(khởi_tạo_biến_chạy; điều_kiện_dừng_vòng_lặp; cách_tăng_giảm_biến_chạy){
    // các lệnh muốn lặp lại viết ở đây
}

Cấu trúc while

Đây là loại cấu trúc lặp dành cho trường hợp không cần quan tâm tới số lần lặp. Cấu trúc này sẽ kiểm tra điều kiện dừng trước khi thực hiện công việc.

while (biểu_thức_điều_kiện){
	// khối lệnh thực hiện khi điều kiện còn đúng
	// trong khối lệnh này bạn cần thay đổi giá trị nào đó để giá trị biểu thức điều kiện có sự thay đổi khi đạt giới hạn lặp
	// nếu không sẽ dẫn tới vòng lặp vĩnh viễn.
}

Cấu trúc do…while

Cũng giống cấu trúc while ở trên, cấu trúc này không cần quan tâm tới số lượng bước lặp. Nhưng ở cấu trúc này sẽ thực hiện công việc trước khi kiểm tra điều kiện. Như vậy nếu điều kiện sai ngay từ đầu thì cấu trúc này vẫn thực hiện khối lệnh 1 lần.

do {
	// khối lệnh thực hiện lặp lại
}while(biểu_thức_điều_kiện);

Cấu trúc foreach

Cấu trúc này thường dùng áp dụng duyệt mảng và không cần đếm số lượng phần tử trong mảng hoặc với mảng có chỉ số kết hợp (không phải số nguyên thông thường)

foreach(biến_mảng as key => value){
	// các lệnh thực hiện với key và value của từng phần tử trong mảng
}

 

Dưới đây là code mẫu thử nghiệm, bạn tạo 1 file php và thử nghiệm code dưới đây với các trường hợp:

– Chạy lần 1: Gán tất cả $i = 0  và xem kết quả.

– Chạy lần 2: Gán tất cả $i = 10 và xem kết quả.

 

<meta charset='utf-8' />
<?php
// In ra dãy số từ 1 -> 5;
echo '<h2>Lệnh while: </h2>';
$i = 10;
while($i <=5){
   echo $i .'----';
   $i ++;
}
echo '<h2>Lệnh do...while: </h2>';
$i = 10;
do{
   echo $i .'----';
   $i ++;
}while($i <=5);


echo '<h2>Lệnh for(...): </h2>';
for($i = 10; $i<= 5; $i++){
   echo $i .'----';
}


echo '<h2>Lệnh foreach: thường áp dụng cho mảng </h2>';
$mang = ['hoTen'=>'Nguyen Van A','tuoi'=>20];
foreach($mang as $k => $v){
	echo "  $k  ==> $v  <br>";
}

 

]]>
Bảng các hàm làm việc với thời gian trong PHP https://zezo.dev/view/bang-cac-ham-lam-viec-voi-thoi-gian-trong-php Fri, 29 Nov 2024 03:40:18 +0000 https://zezo.dev/?p=84  

STT Hàm Chức năng
1 getdate() Lấy thời gian hiện tại được thiết lập ở máy chủ
2 date_default_timezone_get() Trả về kết quả múi giờ đã được thiết lập trước
3 date_default_timezone_set Thiết lập múi giờ
4 time() Trả về số giây từ thời điểm hiện tại so với 01/01/1970
5 mktime() Trả về số giây tại một thời điểm nào đó so với 01/01/1970
6 date() Định dạng cách hiển thị thời gian
7 checkdate(month, day, year) Kiểm tra ngày hợp lệ
8 strtotime() Chuyển đổi chuỗi thời gian (ở định dạng English) về giá trị timestamp
9 date_parse_from_format($format, $date) Chuyển đổi chuỗi thời gian $date về mảng thời gian theo định dạng $format

 

]]>
Bảng tổng hợp hàm làm việc với số trong PHP https://zezo.dev/view/bang-tong-hop-ham-lam-viec-voi-so-trong-php Fri, 29 Nov 2024 03:39:46 +0000 https://zezo.dev/?p=82  

STT Hàm Chức năng
1 is_numberic() Kiểm tra biến có lưu giá trị kiểu Number hay không
2 is_int Kiểm tra biến có lưu giá trị kiểu Integer hay không
3 is_float Kiểm tra biến có lưu giá trị kiểu Float hay không
4 range($start, $length, $loop) Tạo ra một dãy số với số bắt đầu và số kết thúc được cho trước
5 round() Làm tròn đến số nguyên gần nhất
6 ceil() Làm tròn đến số nguyên gần nhất và lớn nhất
7 floor() Làm tròn đến số nguyên gần nhất và nhỏ nhất
8 min() Lấy giá trị nhỏ nhất trong các số được truyền vào
9 max() Lấy giá trị lớn nhất trong các số được truyền vào
10 rand(min, max) Lấy giá trị ngẫu nhiên được trả về nằm trong đoạn [min,max]
11 number_format() Định dạng cách hiển thị giữa các phần nghìn trong 1 số
12 abs($number) Trả vê giá trị tuyệt đối của một số nào đó
13 pow(x, y) Trả về kết quả là x mũ y
14 sqrt($number) Tính căn bậc hai của $number

 

]]>
Bảng tổng hợp các hàm làm việc với chuỗi trong PHP https://zezo.dev/view/bang-tong-hop-cac-ham-lam-viec-voi-chuoi-trong-php Fri, 29 Nov 2024 03:38:57 +0000 https://zezo.dev/?p=80 Chuỗi trong PHP được đánh dấu bởi ký tự ” hoặc ký tự ‘.

STT Hàm Chức năng
1 strlen() Lấy chiều dài của chuỗi (tổng số ký tự có trong chuỗi)
2 mb_strlen() Lấy chiều dài của chuỗi UTF-8
3 str_word_count() Đếm số từ có trong chuỗi
4 strtoupper($str) Chuyển đổi chữ thường thành chữ HOA
5 strtolower($str) Chuyển đổi chữ HOA thành chữ thường
6 ucfirst($str) Chuyển đổi ký tự đầu tiên đầu tiên trong chuỗi thành chữ hoa
7 lcfirst($str) Chuyển đổi ký tự đầu tiên đầu tiên trong chuỗi thành chữ thường
8 ucwords($str) Chuyển đổi tất cả các ký tự đầu tiên của các từ trong một chuỗi thành chữ in hoa
9 stripos() Tìm kiếm chỉ số xuất hiện đầu tiên của một từ nào đó trong chuỗi
10 strripos() Tìm kiếm chỉ số xuất hiện cuối cùng của một từ nào đó trong chuỗi
11 strrev() Đảo ngược một chuỗi
12 substr() Trích xuất nội dung nào đó trong chuỗi
13 ltrim($str, $params) Xóa các ký nằm bên trái của một chuỗi nào đó
14 rtrim($str, $params) Xóa các ký nằm bên phải của một chuỗi nào đó
15 trim($str, $params) Xóa các ký nằm bên phải và bên trái của một chuỗi nào đó
16 implode ($str, $array) Chuyển các giá trị của mảng $array thành một chuỗi bao gồm các phần tử cách nhau bởi ký tự $str
 

17

 

explode ($delimiter, $str)

Chuyển một chuỗi thành một mảng. Tách chuỗi dựa vào

$delimiter, mỗi đoàn tách ra sẽ thành một phần tử của mảng mới

18 str_repeat($str,n) Lặp lại chuỗi $str với số lần lặp là n
19 chr() Trả về ký tự tương ứng với mã ASCII được truyền vào
20 ord() Trả về giá trị ASCII của ký tự đầu tiên trong chuỗi
21 parse_str() Chuyển các nội dung truy vấn vào các biến hoặc mảng
22 parse_url() Truy xuất các thành phần protocol, domain name, path, .. của một URL nào đó
23 strcmp($str1, $str2) So sánh hai chuỗi $str1 và $str2 với nhau
24 substr_compare ($str1, $str2, $start, $length) Lấy $length phần tử từ vị trí $start trong chuỗi $str1 say đó so sánh với chuỗi $str2
25 str_pad

($str, $length, $padString, $padType)

Tăng độ dài của chuỗi $str thành $length với các ký tự mới được thêm vào là $pad_string (với cơ chế thêm là $padType)
26 str_shuffle() Sắp xếp ngẫu nhiên thứ tự các ký tự trong chuỗi
27 str_replace ($find, $replace, $string) Tìm kiếm và thay thế giá trị $find trong chuỗi $string bằng giá trị $replace
28 substr_count

($string, $substring, $start, $length)

Lấy $length phần tử từ vị trí $start trong chuỗi $str và thống kê số lần xuất hiện của $substring trong chuỗi vừa lấy trên
29 str_split($str, $lenght) Cắt chuỗi thành từng phần tử trong mảng, mỗi phần tử có độ dài là $length ký tự
30 addslashes($str) Thêm ký tự \ vào trước các ký tự: nháy đơn (‘), nháy đôi (“), gạch chéo (\) và NULL
31 addcslashes($str, $character) Thêm ký tự \ vào trước ký tự $character
32 stripslashes ($str, $character) Hiển thị chuỗi không có các ký tự gạch chéo được tạo bởi hàm addslashes
33 stripcslashes ($str, $character) Hiển thị chuỗi không có các ký tự gạch chéo được tạo bởi hàm addcslashes
34 htmlspecialchars ($str) Chuyển đổi các ký tự được quy định trước & ” ‘ < > sang giá trị HTML entities
35 htmlspecialchars_decode ($str) Chuyển đổi các giá trị HTML entities được gọi bởi hàm htmlspecialchars ($str) về giá trị ban đầu
36 htmlentities($str) Chuyển đổi các ký tự sang giá trị HTML entities
37 html_entity_decode($str) Chuyển đổi các giá trị HTML entities được gọi bởi hàm htmlentities($str) về giá trị ban đầu
38 get_html_translation_table() Xem danh sách các giá trị HTML entities
39 strip_tags() Loại bỏ các thẻ HTML

 

]]>
Bảng tổng hợp các hàm làm việc với mảng trong PHP https://zezo.dev/view/bang-tong-hop-cac-ham-lam-viec-voi-mang-trong-php Fri, 29 Nov 2024 03:37:17 +0000 https://zezo.dev/?p=78

1. Khái niệm:

Mảng là một biến đặc biệt và có thể lưu trữ nhiều giá trị (còn biến thường chỉ lưu 1 giá trị). Trong PHP có loại mảng: mảng chỉ số nguyên, mảng chỉ số kết hợp và mảng đa chiều.

  Mảng số nguyên Mảng kết hợp Mảng đa chiều
Tên gọi khác Mảng liên tục Mảng không liên tục Mảng lồng
 

Đặc điểm

 

Chí số của mảng là số

 

Chí số của mảng là chuỗi hoặc số

Mỗi phần tử trong mảng chính có thể là một mảng và mỗi phần tử trong mảng con cũng có thể là một mảng
In mảng Câu lệnh for Câu lệnh foreach  

2. Các hàm xử lý mảng:

 

STT Hàm Chức năng
1 print_r ($array) Xem cấu trúc của mảng
2 count ($array) Trả về giá trị kiểu số nguyên là số phần tử của mảng
3 array_values ($array) Trả về một mảng liên tục có các phần tử có giá trị là giá trị lấy từ các phần tử của mảng $array
4 array_keys ($array) Trả về một mảng liên tục có các phần tử có giá trị là khóa lấy từ các phần tử của mảng $array.
5 array_pop ($array) Loại bỏ phần tử cuối cùng của mảng. Hàm trả về phần tử cuối cùng đã được loại bỏ.
6 array_shift ($array) Loại bỏ phần tử đầu tiên của mảng. Hàm trả về phần tử đầu tiên đã được loại bỏ.
7 array_unique ($array) Loại bỏ những phần tử trùng nhau trong mảng và trả về mảng mới
8 unset() Xóa phần tử ở vị trí bất kỳ của mảng
9 array_push

($array, $val1, $val2, … , $valn)

Thêm một hoặc nhiều phần tử vào cuối mảng $array. Hàm trả về kiểu số nguyên là số lượng phần tử của mảng $array mới
10 array_unshift

($array, $val1, $val2, … , $valn)

Thêm một hoặc nhiều phần tử vào đầu mảng $array. Hàm trả về kiểu số nguyên là số lượng phần tử của mảng $array mới
 

11

 

array_reverse ($array)

Đảo ngược vị trí các phần tử của mảng, phần tử cuối trở thành phần tử đầu tiên, phần tử kế cuối trở thành phần tử thứ nhì, … kết quả trả về là một mảng mới
12 array_flip ($array) Trả về một mảng có khóa và giá trị được hoán đổi cho nhau so với mảng $array (giá trị thành khóa và khóa thành giá trị)
13 array_sum ($array) Tính tổng các phần tử trong mảng
14 min ($array) Xác định phần tử nhỏ nhất trong mảng
15 max ($array) Xác định phần tử lớn nhất trong mảng
16 array_count_values(array) Thống kê số lần xuất hiện của các phần tử trong mảng
17 array_merge

($array1, $array2, …, $arrayn)

Nhập 2 hay nhiều mảng thành một mảng duy nhất và trả về mảng mới
18 array_rand ($array, $number) Lấy ngẫu nhiên $number phần tử từ mảng $array và đưa vào màng mới (lấy giá trị khóa)
19 array_search ($value, $array) Tìm phần tử mang giá trị $value trong mảng $array. Trả về khóa của phần tử tìm được.
20 array_key_exists ($key, $array) Kiểm tra khóa $key có tồn tại trong mảng $array hay không? Nếu có trả về giá trị true.
21 in_array ($value, $array) Kiểm tra giá trị $value có tồn tại trong mảng $array hay không? Nếu có trả về giá trị true.
 

22

array_slice ($array, $begin. $finish) Trích lấy 1 đoạn phần tử của mảng $array từ vị trí $begin đến vị trí

$finish. Phần tư đầu tiên (chỉ số 0), phần tử cuối cùng (chỉ số -1 hay count($array) – 1)

23 array_change_key_case ($array, case) Chuyển đồi các key trong mảng thành chữ hoa hoặc chữ thường
24 implode ($str, $array) Chuyển các giá trị của mảng $array thành một chuỗi bao gồm các phần tử cách nhau bởi ký tự $str
25 explode ($delimiter, $str) Chuyển một chuỗi thành một mảng. Tách chuỗi dựa vào $delimiter, mỗi đoàn tách ra sẽ thành một phần tử của mảng mới
26 current($array) Truy xuất phần tử hiện tại của mảng
27 end($array) Truy xuất phần tử cuối cùng của mảng
28 next($array) Truy xuất phần tử sau phần tử hiện tại của mảng
29 prev($array) Truy xuất phần tử trước phần tử hiện tại của mảng
30 reset() Quay về vị trí phần tử đầu tiên trong mảng
31 serialize ($value) Chuyển chuỗi/mảng/đối tượng $value thành một chuỗi đặc biệt để lưu vào cơ sở dữ liệu
32 unserialize ($value) Chuyển chuỗi đặc biệt được tạo từ serialize($value) về trạng thái ban đầu
33 shuffle ($array) Tạo ra mảng mới (mảng liên tục) với thứ tự các phần tử trong mảng bị thay đổi
34 compact() Tạo ra mảng mới từ các biến có sẵn
35 range() Sử dụng hàm range để tạo ra các phần tử của mảng
 

36

array_combine ($keys, $values) Tạo một mảng mới có khóa được lấy từ mảng $keys và giá trị được lấy từ mảng $values theo tuần tự (Yêu cầu số phần tử ở 2 mảng phải bằng nhau)
37 array_diff ($array1, $array2) Trả về một mảng bao gồm các phần tử có giá trị tồn tại trong mảng

$array1 nhưng không tồn tại trong mảng $array2

38 array_diff _key ($array1, $array2) Trả về một mảng bao gồm các phần tử có khóa tồn tại trong mảng

$array1 nhưng không tồn tại trong mảng $array2

39 array_diff_assoc ($array1, $array2) Trả về một mảng bao gồm các phần tử có khóa tồn tại trong mảng

$array1 nhưng không tồn tại trong mảng $array2

40 array_intersect ($array1, $array2) Trả về một mảng bao gồm các phần tử giống nhau về giá trị giữa 2 mảng $array1 và $array2
41 array_intersect_key ($array1, $array2) Trả về một mảng bao gồm các phần tử giống nhau về khóa giữa 2 mảng

$array1 và $array2

42 array_intersect_assoc ($array1, $array2) Trả về một mảng bao gồm các phần tử giống nhau về khóa và giá trị giữa 2 mảng $array1 và $array2
43 array_walk () Gửi các giá trị của mảng đến một hàm nào đó để xử lý và nhận kết quả trả về là một mảng mới
44 array_map () Gửi các giá trị của một hay nhiều mảng đến một hàm nào đó để xử lý và nhận kết quả trả về là một mảng mới
45 array_slice

(array, offset ,length,preserve)

Trích xuất lấy một đoạn phần tử của mảng tử từ vị trí bắt đầu offset (vị trí bắt đầu trong mảng là 0) và lấy length phần tử.
46 array_splice

(array1, offset ,length, array2)

Xóa bỏ một đoạn phần tử của mảng array1 tử từ vị trí bắt đầu và lấy length phần tử. Sau đó thay thế các phần tử bị loại bỏ bằng mảng array2
47 sort(array) Sắp xếp các phần tử trong mảng array tăng dần theo giá trị
48 rsort(array) Sắp xếp các phần tử trong mảng array giảm dần theo giá trị
49 ksort(array) Sắp xếp các phần tử trong mảng array tăng dần theo khóa
50 krsort(array) Sắp xếp các phần tử trong mảng array giảm dần theo khóa

 

]]>
Giới thiệu về PHP https://zezo.dev/view/gioi-thieu-ve-php https://zezo.dev/view/gioi-thieu-ve-php#respond Thu, 28 Nov 2024 07:32:24 +0000 https://zezo.dev/?p=30 Bạn cần học lập trình để tự xây dựng website cho riêng mình?

Bạn là Sinh viên, Học sinh cần học để hoàn thành chương trình học?

Bạn cần tìm việc làm mới để thay đổi công việc?

Có nhiều người suy nghĩ đặt câu hỏi học cái gì dễ làm web và học cái gì dễ kiếm việc mà lương cao?

Những câu hỏi đó thì tôi không đưa ra câu trả lời ở đây mà sau khi bạn học lập trình xong bạn sẽ tự có câu trả lời nhé. Ở đây tôi chỉ nói ngắn gọn: Bạn mới học lập trình web thì nên học PHP để hiểu được sâu rộng hơn về mô hình hoạt động của dịch vụ web. Sau đó bạn phát triển lên học một PHP Framework như Laravel … để làm nhanh ứng dụng cho ra sản phẩm tốt.

Có nhiều ngôn ngữ lập trình có thể xây dựng website nhưng tùy bạn lựa chọn nhé.

Cơ hội việc làm và thu nhập thì xin thưa với bạn là: Nếu bạn làm tốt sẽ không thiếu cơ hội và không lo bị nghèo…

PHP (Hypertext Preprocessor) là gì?

Là một ngôn ngữ lập trình kịch bản chạy ở phía máy chủ web. Khách hàng, người sử dụng trang web sẽ không thể nhìn thấy mã code PHP do bạn viết ra mà chỉ nhìn thấy các thẻ HTML tĩnh.

PHP được phát triển tối ưu tốc độ xử lý và tiết kiệm tài nguyên cho máy chủ. Là ngôn ngữ lập trình mã nguồn mở nên được phát triển sử dụng tự do, miễn phí hoàn toàn. Có nhiều tiện ích, thư viện phát triển bằng PHP được phát hành miễn phí. Chi phí hosting, server để chạy ứng dụng web bằng PHP rất rẻ vì tốn ít tài nguyên.

Thời điểm hiện tại là năm 2020, PHP đã có phiên bản 7.4 với nhiều tính năng tối ưu về cách viết code và tốc độ xử lý.

Học PHP cần chuẩn bị những gì?

1. Bạn cần chuẩn bị kiến thức tối thiểu về HTML, CSS, JavaScript cơ bản

2. Bạn cần cài phần mềm webserver để chạy script PHP. ngày nay đơn giản hơn bạn có thể cài Xampp để thực hành

Bạn tham khảo hướng dẫn cài đặt phần mềm Xampp ở đây

3. Soan thảo code thì bạn có thể dùng bất kỳ phần mềm soạn thảo code nào cũng được: sublime text, notepad++, visual studio code, phpstorm, netbeans….

OK đến giờ bạn đã có công cụ để làm việc. Hãy bắt đầu làm việc với PHP thông qua từng bài trong TUT này nhé. Bạn nên xem lần lượt không nên bỏ qua bài nhé.

Chúc các  bạn thành công!

]]>
https://zezo.dev/view/gioi-thieu-ve-php/feed 0
[PDO] – Tạo file kết nối CSDL từ PHP tới MySQL https://zezo.dev/view/pdo-tao-file-ket-noi-csdl-tu-php-toi-mysql https://zezo.dev/view/pdo-tao-file-ket-noi-csdl-tu-php-toi-mysql#respond Thu, 28 Nov 2024 07:28:43 +0000 https://zezo.dev/?p=28 Thông thường, 1 website chúng ta chỉ nên viết câu lệnh kết nối CSDL 1 lần và có thể bạn lưu vào 1 file riêng rồi include vào các file php mà có nhu cầu kết nối CSDL hoặc bạn có thể đưa lệnh kết nối CSDL vào một hàm rồi gọi ở những nơi các bạn cần dùng…

Để kết nối CSDL bạn cần có các thông tin để kết nối:

$host = 'localhost';
$db_user = 'root';
$db_passwd = '';
$db_name = 'Ten_CSDL';

$objConn = null;

Tùy theo cài đặt máy chủ mà bạn có các giá trị thông số khác nhau.

Tiếp đến bạn cần có 1 biến để lưu đối tượng kết nối CSDL (PDO) khi nào cần dùng sẽ gọi ra sử dụng. Giả sử đặt tên là $objConn 

Tiếp đến là các câu lệnh thực hiện kết nối theo cấu trúc sau:

$objConn = new PDO("mysql:host=$host;dbname=$db_name", $db_user, $db_passwd);

$objConn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

Dòng thứ nhất là tạo đối tượng kết nối, chỉ ra cho PDO biết là bạn cần làm việc với tên CSDL là mysql. Các ký hiệu bạn viết cho đúng chính tả và thứ tự.

Dòng thứ hai là thiết lập chế độ báo lỗi khi câu lệnh truy vấn của bạn bị sai hoặc xảy ra lỗi quá trình thực thi câu lệnh SQL: Chuyển cơ chế lỗi thành cơ chế ngoại lệ.

Sử dụng try…catch để bắt ngoại lệ

Tiếp đến bạn hãy đặt 2 lệnh trên vào trong cặp truy /catch để bắt ngoại lệ khi có lỗi xảy ra.

 

try{
    $objConn = new PDO("mysql:host=$host;dbname=$db_name", $db_user, $db_passwd);

    $objConn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

    echo "Ket noi CSDL thanh cong!";

}catch(Exception $e){
    die( $e->getMessage()  );
}

Code đầy đủ

Toàn bộ code trên bạn để trong 1 file là db.php. Sau này dùng ở đâu thì bạn include file này vào là có đối tượng PDO để dùng.

Dưới đây là code hoàn chỉnh, bạn hãy chạy thử file này, nếu thành công sẽ có thông báo Kết nối CSDL thành công.


<?php
$host = 'localhost';
$db_user = 'root';
$db_passwd = '';
$db_name = 'demo_db';

$objConn = null;

try{
    $objConn = new PDO("mysql:host=$host;dbname=$db_name", $db_user, $db_passwd);

    $objConn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

    echo "Ket noi CSDL thanh cong!";

}catch(Exception $e){
    die( $e->getMessage()  );
}

 

]]>
https://zezo.dev/view/pdo-tao-file-ket-noi-csdl-tu-php-toi-mysql/feed 0
Bắt đầu học Lập trình PHP https://zezo.dev/view/bat-dau-hoc-lap-trinh-php https://zezo.dev/view/bat-dau-hoc-lap-trinh-php#respond Thu, 28 Nov 2024 07:27:11 +0000 https://zezo.dev/?p=24 Học lập trình PHP để làm gì?

PHP là một ngôn ngữ lập trình mã nguồn mở (giống như tiếng Việt là một ngôn ngữ dùng để giao tiếp). PHP có bộ ký hiệu, bộ từ khóa và các quy tắc sắp xếp bộ ký hiêu và từ khóa để tạo thành một chương trình có thể chạy thực hiện các công việc theo yêu cầu của Lập trình viên.  Học lập trình PHP sẽ giúp bạn biết cách xây dựng trang những trang web quảng bá tin tức, sản phẩm, quản lý…  Trang web xây dựng bằng PHP sẽ chạy ở máy chủ riêng được chia sẻ một địa chỉ (domain hoặc IP) để khách có thể vào xem bằng phần mềm duyệt web như: chrome, cốc cốc, edge, safari, firefox…

 

Học lập trình PHP có khó không?

Có khó và không khó!

Khó vì người mới học sẽ mơ hồ chưa hiểu cách hoạt động và cách lắp ghép code.

Không khó đối với những người có một chút kiến thức về lập trình cơ bản , biết một chút về html/css/javascript…

Học lập trình PHP cần điều kiện kiến thức gì gì?

Nên có kiến thức về lập trình cơ bản, nếu chưa có thì cũng có thể bắt đầu từ đầu với PHP nhưng sẽ vất vả hơn một chút.

Nên có kiến thức về HTML, CSS, Javascript, MySQL để hỗ trợ cho quá trình thực hành. Nếu chưa có thì cũng cần nghiên cứu song song với học PHP.

Học lập trình PHP cần có công cụ gì?

1. Phần mềm tạo máy chủ web:

Xampp https://www.apachefriends.org/download.html

hoặc ZWebserver https://zezo.dev/view/zwebserver-may-chu-web-php-mysql-apache-danh-cho-windows/

hoặc bất kỳ phần mềm hỗ trợ tạo máy chủ web php nào đó trên internet.

2. Phần mềm soạn thảo code:

Visual studio code https://code.visualstudio.com/download

hoặc phpstorm https://www.jetbrains.com/phpstorm/

hoặc sublimetext https://www.sublimetext.com/download

hoặc bất kỳ phần mềm soạn thảo code nào khác

3. Phần mềm xem web

chrome https://www.google.com/intl/vi_vn/chrome/

cốc cốc https://coccoc.com/

hoặc trình duyệt khác tùy theo nhu cầu của bạn

Học lập trình PHP bắt đầu như thế nào?

  1. Chuẩn bị máy tính tốt và cài đặt các phần mềm cần thiết. Không yêu cầu máy tính cấu hình quá cao
  2. Học theo tài liệu mẫu và bắt đầu từ việc tìm hiểu cách tạo file, cách chạy 1 file php đơn giản
  3. Tìm hiểu về biến, hằng, cách in biến ra màn hình
  4. Tìm hiểu về kiểu dữ liệu, toán tử
  5. Tìm hiểu về chuỗi và các hàm làm việc với chuỗi
  6. Tìm hiểu các cấu trúc điều khiển: if, if … else, switch, for, while, do…while, foreach….
  7. Tìm hiểu về cách viết hàm: hàm có tham số, không có tham số, có trả về dữ liệu, không trả về dữ liệu
  8. Tìm hiểu về mảng, các hàm làm việc với mảng
  9. Tìm hiểu về lớp và đối tượng, thuộc tính và phương thức, hàm khởi tạo và hàm hủy
  10. Tìm hiểu về POST – GET – REQUEST
  11. Tìm hiểu về SESSION, COOKIE
  12. Tim hiểu về include, require, require_once, include_once
  13. Tìm hiểu về cách upload 1 file, upload nhiều file
  14. Tìm hiểu về thao tác với File, file_get_content, file_put_content…
  15. Tìm hiểu về CURL tương tác với trang web khác
  16. Tìm hiểu về MySQL và cách sử dụng phpMyAdmin
  17. Tìm hiểu kỹ thuật tương tác PHP với MySQL bằng PDO hoặc MySQLi
  18. … đến đây thì bạn có thể tự tìm hiểu thêm cái gì bạn thích vì hiểu hết các phần trên bạn sẽ tự nghĩ ra được nhiều cái mới.

Tiếp theo sẽ học những gì?

Sau khi làm được website bạn có thể nghiên cứu sâu về javascript để làm frontend đẹp hơn, và có thể nghiên cứu thêm về quản trị server hosting, học cách đưa website lên hosting, mua tên miền và quản lý tên miền.

Học quản trị server thì nên tìm hiểu Ubuntu server hoặc Centos vì đa số các hệ thống hỗ trợ PHP sẽ sử dụng hệ điều hành lõi Linux. Máy chủ windows thường tốn ram và tài nguyên khác nên không phù hợp với giải pháp mã nguồn mở.

]]>
https://zezo.dev/view/bat-dau-hoc-lap-trinh-php/feed 0