6/1/17

Tổng hợp hướng dẫn về xây dựng ứng dụng lập trình web PHP

Tổng hợp hướng dẫn về xây dựng ứng dụng lập trình web PHP
Trong bài này mình xin liệt kê các ứng dụng lập trình web PHP với các bạn của Vnfit.com gửi đến. Ứng dụng gồm các ứng dụng liên quan đến PHP, MySQL, javascrip, Jquery, Ajax… không liên quan đến các framework của PHP nhé. Ứng dụng giúp các bạn hiểu về nó nắm bắt được để xây dựng lại qua đó có thể áp dụng vào thực tế là các dự án mình đang triển khai nhé.

Lập trình ứng dụng với PHP

1. Ứng dụng đăng nhập, thoát với PHP và MySQL

2. Ứng dụng quản lý thành viên với PHP và MySQL

3. Ứng dụng thêm thành viên bằng PHP và MySQL

4. Ứng dụng sửa xóa thành viên bằng PHP và MySQL

5. Ứng dụng đếm số người Online bằng PHP

6. Hệ thống bình chọn bằng PHP và MySQL

7. Upload nhiều hình ảnh bằng PHP

8. Ứng dụng giỏ hàng bằng PHP phần 1

9. Ứng dụng giỏ hàng bằng PHP phần 2

10. Lấy feed post fanpage facebook với facebook api sdk php

11. Ứng dụng đăng nhập (Login) với facebook sử dụng PHP

12. Ứng dụng đăng nhập (Login) với Google account sử dụng PHP

13. Ứng dụng đăng nhập (Login) với Twitter sử dụng PHP

14. Ứng dụng Đăng nhập (login) với LinkedIn sử dụng PHP

15. Tìm kiếm với PHP và Ajax

16. Ứng dụng Sử dụng Google reCAPTCHA với PHP

17. Ứng dụng Autocomplete textbox sử dụng jQuery, PHP và MySQL

18. Tình khoảng cách giữa 2 địa điểm với Google Maps API và PHP

19. Kéo và thả tập tin tải lên bằng cách sử dụng PHP và DropzoneJS

20. Xuất dữ liệu sang Excel trong PHP

21. Ứng dụng Load more bằng cách sử dụng jQuery Ajax và PHP từ CSDL

22. Like và Unlike với jQuery, Ajax and PHP

23. Gửi email với nhiều file đính kèm trong PHP

24. Kéo và thả hình ảnh sắp xếp lại bằng cách sử dụng jQuery, Ajax, PHP & MySQL

[Ứng dụng php] Sử dụng Google reCAPTCHA với PHP

[Ứng dụng php] Sử dụng Google reCAPTCHA với PHP
Ứng dụng sử dụng Google reCAPTCHA với PHP mình sắp trình báy sau đây được đăng ký từ google:

Bước 1: các bạn cần đăng ký reCAPTCHA của google

Các bạn truy cập vào đường dẫn sau: https://www.google.com/recaptcha/admin#list. Dưới đây là giao diện của đăng ký recaptcha của google.

Bước 2: Lấy Site Key của bạn

Lấy site Key đăng ký của website của bạn.


Bước 3: Lấy Secret Key của bạn

Bước 4: Tạo form HTML với mã reCAPTCHA

Tạo file index.php với form HTMl như sau:

ind

Bước 5: PHP code cho ứng dụng Google reCAPTCHA với PHP


<?php
if(isset($_POST['submit'])):
if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])):
//Nhập secret key
$secret = 'Nhập secret key';
//Xác minh dữ liệu
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
$responseData = json_decode($verifyResponse);
$name = !empty($_POST['name'])?$_POST['name']:'';
$email = !empty($_POST['email'])?$_POST['email']:'';
$message = !empty($_POST['message'])?$_POST['message']:'';
if($responseData->success):
$to = 'vnfitcom@gmail.com';
$subject = 'Tiêu đề liên hệ';
$htmlContent = "
<h1>Chi tiết liên hệ</h1>
<p><b>Tên: </b>".$name."</p>
<p><b>Email: </b>".$email."</p>
<p><b>Nội dung: </b>".$message."</p>
";
// Luôn đặt content-type khi gửi email HTML
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= 'From:'.$name.' <'.$email.'>' . "\r\n";
//gửi email
@mail($to,$subject,$htmlContent,$headers);
$succMsg = 'Gửi liên hệ thành công.';
$name = '';
$email = '';
$message = '';
else:
$errMsg = 'Xác minh Robot không thành công, vui lòng thử lại.';
endif;
else:
$errMsg = 'Vui lòng click vào hộp reCAPTCHA.';
endif;
else:
$errMsg = '';
$succMsg = '';
$name = '';
$email = '';
$message = '';
endif;
?>

Bước 6: Test trên web với kết quả thu được

Bài trên mình đã hướng dẫn các bạn tạo Google reCAPTCHA với PHP các bạn có thể thực hành trên website của mình.

[Ứng dụng PHP] Forms – Validate E-mail và URL

[Ứng dụng PHP] Forms – Validate E-mail và URL
1. Validate Form với input text

$txtname = test_input($_POST["txtname"]);
if (!preg_match("/^[a-zA-Z ]*$/",$txtname)) {
$nameErr = "Chỉ nhập chữ cái";
}

2. Validate E-mail

$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Định dạng email không hợp lệ";
}

3. Validate URL

$website = test_input($_POST["website"]);
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "Không đúng định dạng URL";
}

4. Validate Text, E-mail, và URL

<?php
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Yêu cầu nhập tên";
} else {
$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$nameErr = "Chỉ nhập chữ cái.";
}
}

if (empty($_POST["email"])) {
$emailErr = "Email không để trống";
} else {
$email = test_input($_POST["email"]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Không đúng định dạng Email";
}
}

if (empty($_POST["website"])) {
$website = "";
} else {
$website = test_input($_POST["website"]);
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "Không đúng định dạng URL";
}
}

if (empty($_POST["comment"])) {
$comment = "";
} else {
$comment = test_input($_POST["comment"]);
}

if (empty($_POST["gender"])) {
$genderErr = "Nhập giới tính";
} else {
$gender = test_input($_POST["gender"]);
}
}
?>

Trên đây là hướng dẫn Validate E-mail và URL của chúng tôi.

[Ứng dụng php] Load more bằng cách sử dụng jQuery Ajax và PHP từ CSDL

[Ứng dụng php] Load more bằng cách sử dụng jQuery Ajax và PHP từ CSDL
Trong bài mình sẽ hướng dẫn các bạn xây dựng ứng dụng load more bằng cách sử dụng jQuery Ajax và PHP từ CSDL gồm các bước sau:

Bước 1: Tạo CSDL “dbtest” và bảng “program”

Các bạn tạo một CSDL “dbtest” trong phpMyAdmin và bảng “program” như sau:

Bước 2: Insert nội dung vào bảng

Insert nội dung vào bảng để tý nữa test. Chúng ta insert nội dung các ngôn ngữ như sau:

Bước 3: Tạo file “config.php“

Tạo file config.php để kết nối đến CSDL của bạn.


<?php
$db_host = 'localhost';
$db_user = 'root';
$db_pass = '';
$db_name = 'dbtest';
//kết nối CSDL
$con = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
?>

Bước 4: Tạo file “index.php” với các nội dung như sau

Javascript Code

Trong này tôi sử dụng thư viện của Jquery cùng với là khi click thì sẽ load đến file ajax_more để lấy dữ liệu đổ về.

jsc

PHP code

php1

CSS code


<style type="text/css">
body {
font: normal 13px arial,sans-serif;
}
.tutorial_list{
margin-bottom:20px;
}
div.list_item {
border-left: 4px solid #7ad03a;
padding: 1px 12px;
background-color:#F1F1F1;
-webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
}
div.list_item {
margin: 5px 15px 2px;
}
div.list_item p {
margin: .5em 0;
padding: 2px;
font-size: 13px;
line-height: 1.5;
}
.list_item a {
text-decoration: none;
padding-bottom: 2px;
color: #0074a2;
-webkit-transition-property: border,background,color;
transition-property: border,background,color;-webkit-transition-duration: .05s;
transition-duration: .05s;
-webkit-transition-timing-function: ease-in-out;
transition-timing-function: ease-in-out;
}
.list_item a:hover{
text-decoration:underline;
}
.show_more_main {
margin: 15px 25px;
}
.show_more {
background-color: #f8f8f8;
background-image: -webkit-linear-gradient(top,#fcfcfc 0,#f8f8f8 100%);
background-image: linear-gradient(top,#fcfcfc 0,#f8f8f8 100%);
border: 1px solid;
border-color: #d3d3d3;
color: #333;
font-size: 12px;
outline: 0;
}
.show_more {
cursor: pointer;
display: block;
padding: 10px 0;
text-align: center;
font-weight:bold;
}
.loding {
background-color: #e9e9e9;
border: 1px solid;
border-color: #c6c6c6;
color: #333;
font-size: 12px;
display: block;
text-align: center;
padding: 10px 0;
outline: 0;
font-weight:bold;
}
.loding_txt {
background-image: url(loading_16.gif);
background-position: left;
background-repeat: no-repeat;
border: 0;
display: inline-block;
height: 16px;
padding-left: 20px;
}

</style>

Bước 5: Tạo file “ajax_more.php” với nội dung sau

Kết quả thu được khi chạy chương trình:

Trên đây là ứng dụng load more bằng cách sử dụng jQuery Ajax và PHP từ CSDL.

[Ứng dụng PHP] Thêm thành viên với PHP và MySQL

[Ứng dụng PHP] Thêm thành viên với PHP và MySQL
Trong ứng dụng trước đăng nhập với PHP và MySQL mình đã hướng dẫn các bạn. Trong bài này mình sẽ hướng dẫn các bạn làm chức năng thêm thành viên với PHP và MySQL. Để làm chức năng thêm thành viên với PHP và MySQL các bạn làm các bước sau.

Tạo fiel “add_user.php“

Bước 1: Tạo kết nối đến CSDL

Trong bước này mình sẽ kết nối CSDL của mình là “dbtest” và bảng mình sử dụng là bảng user ở bài trước

//Cấu hình CSDL
 define('DB_HOST', 'localhost'); // Tên host
 define('DB_NAME', 'dbtest'); // Tên DB
 define('DB_USER','root');
 define('DB_PASSWORD','');
 // kết nối CSDL
 $con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Không thể kết nối tới MySQL: " . mysql_error());
 $db=mysql_select_db(DB_NAME,$con) or die("Không thể kết nối tới MySQL: " . mysql_error());

Bước 2: Tạo 1 form thêm thành viên với HTML

12



Bước 3: Check session Use và Pas

Ta cần kiểm tra xem hõ đã đăng nhập chưa để được truy cập vào trang thêm thành viên với check sau:


<?php
session_start();
if(!empty($_SESSION['Use']) and !empty($_SESSION['Pas']))
{
 // tại đây thực thi các hoạt động khi đăng nhập thành công.
}
else
{
 header("location: login.html");
 exit();
}
?>

Ở đây nếu đăng nhập thành công thì lưu session là use và pas để kiểm tra xem nếu có 2 session này thì cho thực hiện thêm thành viên còn không thì trả về trang login.html

Bước 4: Tạo hàm “add” thành viên


function add()
 {
 if(!empty($_POST['user']) and !empty($_POST['pass']) and !empty($_POST['active']))
 {
 $user = $_POST['user'];
 $active = $_POST['active'];
 if($_POST['pass'] == $_POST['re_pass'])
 {
 $pass = $_POST['pass'];

 $query = mysql_query("SELECT * FROM user where username = '$_POST[user]'") or die(mysql_error());
 if(mysql_num_rows($query) != "")
 {
 echo "Xin lỗi tên đăng nhập đã tồn tại";
 }
 else
 {
 $query1 = mysql_query("insert into user(username,password,active) values('".$user."','".$pass."','".$active."')") or die(mysql_error());
 echo "Đã thêm thành công";
 }
 }
 else{
 echo "Mật khẩu và xác nhận mật khẩu không đúng";
 }
 }
 else
 {
 echo "Chưa điền thông tin vào";
 }

 }

Bước 5: chạy và được kết quả

add

Code hoàn chỉnh


<?php
 session_start();
 //Cấu hình CSDL
 define('DB_HOST', 'localhost'); // Tên host
 define('DB_NAME', 'dbtest'); // Tên DB
 define('DB_USER','root');
 define('DB_PASSWORD','');
 // kết nối CSDL
 $con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Không thể kết nối tới MySQL: " . mysql_error());
 $db=mysql_select_db(DB_NAME,$con) or die("Không thể kết nối tới MySQL: " . mysql_error());
 // Hàm thêm thành viên
 function add()
 {
 if(!empty($_POST['user']) and !empty($_POST['pass']) and !empty($_POST['active'])) // kiểm tra xem user, pass, active có rỗng ko
 {
 $user = $_POST['user']; // gán user
 $active = $_POST['active']; // gán active
 if($_POST['pass'] == $_POST['re_pass']) // kiểm tra xem pass và re_pass có trùng nhau ko
 {
 $pass = $_POST['pass']; // gán pass
 $query = mysql_query("SELECT * FROM user where username = '$_POST[user]'") or die(mysql_error()); // select user ra để kiểm tra trùng tên
 if(mysql_num_rows($query) != "")
 {
 echo "Xin lỗi tên đăng nhập đã tồn tại";
 }
 else
 {
 $query1 = mysql_query("insert into user(username,password,active) values('".$user."','".$pass."','".$active."')") or die(mysql_error()); // insert dữ liệu
 echo "Đã thêm thành công";
 }
 }
 else{
 echo "Mật khẩu và xác nhận mật khẩu không đúng";
 }
 }
 else
 {
 echo "Chưa điền thông tin vào";
 }

 }
?>

<?php
 if(!empty($_SESSION['Use']) and !empty($_SESSION['Pas']))
 {
?>
<fieldset style="width:30%">
 <legend>Thêm thành viên</legend>
 <form action='add_user.php' method='POST'>
 Tên đăng nhập: <br><input type='text' name='user' size='40' /><br />
 Mật khẩu: </br><input type='password' name='pass' size='40' /> <br />
 Nhập lại mật khẩu: <br><input type='password' name='re_pass' size='40' /><br />
 <br>
 Active: <select name='active'>
 <option value='1'>Active</option>
 <option value='2'>No Active </option>
 </select>
 <br />
 <br />
 <input type='submit' name='adduser' value='Thêm thành viên' />
 </form>
 </legend>
</fieldset>

<?php
 // Kiểm tra xem đã submit chưa
 if(isset($_POST['adduser']))
 {
 add();
 }
 }
 else
 {
 header("location: login.html");
 exit();
 }
?>

Code trên mình đã comment đầy đủ để các bạn dễ hiểu. Bạn nào chưa hiểu comment ở dưới nhé.

Vậy mình đã hướng dẫn các bạn hoàn thành chức năng Thêm thành viên với PHP và MySQL. Các bạn code như trên hoặc download ở dưới mình sẽ update lên sau.

Tổng hợp: Lộ trình tự học lập trình web bằng PHP và MySQL

Tổng hợp: Tổng hợp hướng dẫn về xây dựng ứng dụng lập trình web PHP

Link Download:

Chân thành cảm ơn các bạn theo dõi. Nếu thấy hay xin chia sẻ và like bài viết của mình.

[Ứng dụng PHP] Quản lý thành viên với PHP và MySQL

[Ứng dụng PHP] Quản lý thành viên với PHP và MySQL
Trong bài này mình xin trình bày đến các bạn ứng dụng Quản lý thành viên với PHP và MySQL ở bài trước mình đã hướng dẫn các bạn cách login và thêm thành viên, ở bài này mình xin hướng dẫn các bạn sau khi đăng nhập sẽ là danh sách quản lý thanh viên trong quản trị. Với các bước sau:

Tạo file list_user.php với các nội dung như sau:

Bước 1: Tạo kết nối đến CSDL

Trong bước này mình sẽ kết nối CSDL của mình là “dbtest” và bảng mình sử dụng là bảng user ở bài trước.

//Cấu hình CSDL
define('DB_HOST', 'localhost'); // Tên host
define('DB_NAME', 'dbtest'); // Tên DB
define('DB_USER','root');
define('DB_PASSWORD','');
// kết nối CSDL
$con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Không thể kết nối tới MySQL: " . mysql_error());
$db=mysql_select_db(DB_NAME,$con) or die("Không thể kết nối tới MySQL: " . mysql_error());

Bước 2: Check session Use và Pas

Ta cần kiểm tra xem hõ đã đăng nhập chưa để được truy cập vào trang thêm thành viên với check sau:

<?php
session_start();
if(!empty($_SESSION['Use']) and !empty($_SESSION['Pas']))
{
// tại đây thực thi các hoạt động khi đăng nhập thành công.
}
else
{
header("location: login.html");
exit();
}
?>

Bước 3: Viết hàm “list_all()” để lấy dữ liệu


function list_all()
{
$query = mysql_query("select * from user order by id DESC") or die(mysql_error());
if(mysql_num_rows($query) == "")
{
echo "<tr><td>";
echo "Không có dữ liệu";
echo "</td></tr>";
}
else
{
$i=0;
while($row=mysql_fetch_array($query))
{
$i++;
echo "<tr>";
echo "<td>$i</td>";
echo "<td>$row[username]</td>";
if($row['active']==1)
{
echo "<td>Kích hoạt</td>";
}
else{
echo "<td>Chưa kích hoạt</td>";
}
echo "<td><a href='edit_user.php?userid=$row[id]'>Edit</a></td>";
echo "<td><a href='del_user.php?userid=$row[id]'>Del</a></td>";
echo "</tr>";
}
}
}

Code hoàn chỉnh

{html]

<?php
session_start();
//Cấu hình CSDL
define(‘DB_HOST’, ‘localhost’); // Tên host
define(‘DB_NAME’, ‘dbtest’); // Tên DB
define(‘DB_USER’,’root’);
define(‘DB_PASSWORD’,”);
// kết nối CSDL
$con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die(“Không thể kết nối tới MySQL: ” . mysql_error());
$db=mysql_select_db(DB_NAME,$con) or die(“Không thể kết nối tới MySQL: ” . mysql_error());
// Hàm list all
function list_all()
{
$query = mysql_query(“select * from user order by id DESC”) or die(mysql_error());
if(mysql_num_rows($query) == “”)
{
echo “<tr><td>”;
echo “Không có dữ liệu”;
echo “</td></tr>”;
}
else
{
$i=0;
while($row=mysql_fetch_array($query))
{
$i++;
echo “<tr>”;
echo “<td>$i</td>”;
echo “<td>$row[username]</td>”;
if($row['active']==1)
{
echo “<td>Kích hoạt</td>”;
}
else{
echo “<td>Chưa kích hoạt</td>”;
}
echo “<td><a href=’edit_user.php?userid=$row[id]‘>Edit</a></td>”;
echo “<td><a href=’del_user.php?userid=$row[id]‘>Del</a></td>”;
echo “</tr>”;
}
}
}
?>
<?php
if(!empty($_SESSION['Use']) and !empty($_SESSION['Pas']))
{
?>
<table align=’center’ width=’400′ border=’1′>
<tr>
<td>STT</td>
<td>Tên đăng nhập</td>
<td>Active</td>
<td>Edit</td>
<td>Del</td>
</tr>

<?php
list_all();
}
else
{
header(“location: login.html”);
exit();
}
?>

[/html]

Chạy chương trình và được kết quả:

Trên đây là hướng dẫn về Ứng dụng PHP Quản lý thành viên với PHP và MySQL.

[Ứng dụng php] phân trang với Ajax jquery và PHP

[Ứng dụng php] phân trang với Ajax jquery và PHP

Để phân trang với Ajax Jquery và PHP trong CSDL MySQM bạn cần tạo ra 1 CSDL có dữ liệu ban đầu, để xây dưng chương trình cần các bước sau:

Bước 1: Tạo CSDL “dbtest” và bảng “program”

Các bạn tạo một CSDL “dbtest” trong phpMyAdmin và bảng “program” như sau:

Bước 2: Insert nội dung vào bảng

Insert nội dung vào bảng để tý nữa test. Chúng ta insert nội dung các ngôn ngữ như sau:

Bước 3: Tạo file “config.php“

Tạo file config.php để kết nối đến CSDL của bạn.


<?php
$db_host = 'localhost';
$db_user = 'root';
$db_pass = '';
$db_name = 'dbtest';
$item_per_page = 5; //mỗi item trên 1 trang
//kết nối CSDL
$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);
?>

Bước 4: Tạo file “index.php” để đổ dữ liệu load Ajax vào đây

Javascript

Mình sẽ sử dụng phương pháp của jQuery load() để thực hiện việc gọi Ajax vào file PHP.

js1

HTML

Ở đây mình sẽ tạo ra để load dữ liệu ajax từ php vào thẻ div của HTML


<div class="loading-div"><img src="ajax-loader.gif" ></div>
<div id="results"><! - Nội dung sẽ được trả ở đây -></div>

CSS

CSS cho phân trang và dữ liệu của mình

<style>
body,td,th {
font-family: Georgia, "Times New Roman", Times, serif;
color: #333;
}
.contents{
margin: 20px;
padding: 20px;
list-style: none;
background: #F9F9F9;
border: 1px solid #ddd;
border-radius: 5px;
}
.contents li{
margin-bottom: 10px;
}
.loading-div{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.56);
z-index: 999;
display:none;
}
.loading-div img {
margin-top: 20%;
margin-left: 50%;
}

/* Pagination style */
.pagination{margin:0;padding:0;}
.pagination li{
display: inline;
padding: 6px 10px 6px 10px;
border: 1px solid #ddd;
margin-right: -1px;
font: 15px/20px Arial, Helvetica, sans-serif;
background: #FFFFFF;
box-shadow: inset 1px 1px 5px #F4F4F4;
}
.pagination li a{
text-decoration:none;
color: rgb(89, 141, 235);
}
.pagination li.first {
border-radius: 5px 0px 0px 5px;
}
.pagination li.last {
border-radius: 0px 5px 5px 0px;
}
.pagination li:hover{
background: #CFF;
}
.pagination li.active{
background: #F0F0F0;
color: #333;
}
</style>

Bước 5: Tạo file “fetch_pages.php”

Trong file này mình chia làm 2 phần là 1 phần xử lý và 1 hàm phân trang với PHP

Hàm phân trang

Bước 6: Kết quả khi chạy chương trình:

Trên đây là hướng dẫn xây dựng ứng dụng php phân trang với Ajax jquery và PHP của mình. Code mình sẽ upload sau gửi các bạn.

[Ứng dụng PHP] Xếp hạng sao với jQuery, Ajax và PHP

[Ứng dụng PHP] Xếp hạng sao với jQuery, Ajax và PHP
Trong bài này mình xin giới thiệu đến các bạn ứng dụng Xếp hạng sao với jQuery, Ajax và PHP với giao diện như sau:

Bước 1: Tạo CSDL “dbtest” và bảng “rating”


CREATE TABLE IF NOT EXISTS `rating` (
`rating_id` int(11) NOT NULL,
`post_id` int(11) NOT NULL,
`rating_number` int(11) NOT NULL,
`total_points` int(11) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1 = Block, 0 = Unblock'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Bài 2: Tạo file “config.php“

<?php
//cấu hình CSDL
$dbHost = 'localhost';
$dbUsername = 'root';
$dbPassword = '';
$dbName = 'dbtest';
//kết nối CSDL
$db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
if($db->connect_errno):
die('Kết nối thất bại:'.$db->connect_error);
endif;
?>

Bước 3: Tạo file “index.php” với nội dung sau

javascript

j12

HTML


<h1>Xếp hạng sao với jQuery, Ajax và PHP</h1>
<input name="rating" value="0" id="rating_star" type="hidden" postID="1" />
<div class="overall-rating">(Đánh giá trung bình <span id="avgrat"><?php echo $ratingRow['average_rating']; ?></span>
Dựa trên <span id="totalrat"><?php echo $ratingRow['rating_number']; ?></span> Lượt)</span></div>

CSS


.vnfit_rating_widget{
padding: 0px;
margin: 0px;
float: left;
}
.vnfit_rating_widget li{
line-height: 0px;
width: 28px;
height: 28px;
padding: 0px;
margin: 0px;
margin-left: 2px;
list-style: none;
float: left;
cursor: pointer;
}
.vnfit_rating_widget li span{
display: none;
}
.overall-rating{font-size: 14px;margin-top: 5px;color: #8e8d8d;}



Bước 4: Tạo file “rating.php” để lấy dữ liệu CSDL


<?php
include_once 'config.php';
if(!empty($_POST['ratingPoints'])){
$postID = $_POST['postID'];
$ratingNum = 1;
$ratingPoints = $_POST['ratingPoints'];
//Kiểm tra hàng đánh giá với cùng một ID bài
$prevRatingQuery = "SELECT * FROM post_rating WHERE post_id = ".$postID;
$prevRatingResult = $db->query($prevRatingQuery);
if($prevRatingResult->num_rows > 0):
$prevRatingRow = $prevRatingResult->fetch_assoc();
$ratingNum = $prevRatingRow['rating_number'] + $ratingNum;
$ratingPoints = $prevRatingRow['total_points'] + $ratingPoints;
//Cập nhật đánh giá dữ liệu vào cơ sở dữ
$query = "UPDATE post_rating SET rating_number = '".$ratingNum."', total_points = '".$ratingPoints."', modified = '".date("Y-m-d H:i:s")."' WHERE post_id = ".$postID;
$update = $db->query($query);
else:
//insert đánh giá dữ liệu vào cơ sở dữ
$query = "INSERT INTO post_rating (post_id,rating_number,total_points,created,modified) VALUES(".$postID.",'".$ratingNum."','".$ratingPoints."','".date("Y-m-d H:i:s")."','".date("Y-m-d H:i:s")."')";
$insert = $db->query($query);
endif;
//Lấy chi tiết từ cơ sở dữ liệu đánh giá
$query2 = "SELECT rating_number, FORMAT((total_points / rating_number),1) as average_rating FROM post_rating WHERE post_id = ".$postID." AND status = 1";
$result = $db->query($query2);
$ratingRow = $result->fetch_assoc();
if($ratingRow){
$ratingRow['status'] = 'ok';
}else{
$ratingRow['status'] = 'err';
}
//Trả dữ liệu đánh giá vào Json
echo json_encode($ratingRow);
}
?>

Bước 5: Tạo file “rating.js”


(function(a){
a.fn.vnfit_rating_widget = function(p){
var p = p||{};
var b = p&&p.starLength?p.starLength:"5";
var c = p&&p.callbackFunctionName?p.callbackFunctionName:"";
var e = p&&p.initialValue?p.initialValue:"0";
var d = p&&p.imageDirectory?p.imageDirectory:"images";
var r = p&&p.inputAttr?p.inputAttr:"";
var f = e;
var g = a(this);
b = parseInt(b);
init();
g.next("ul").children("li").hover(function(){
$(this).parent().children("li").css('background-position','0px 0px');
var a = $(this).parent().children("li").index($(this));
$(this).parent().children("li").slice(0,a+1).css('background-position','0px -28px')
},function(){});
g.next("ul").children("li").click(function(){
var a = $(this).parent().children("li").index($(this));
var attrVal = (r != '')?g.attr(r):'';
f = a+1;
g.val(f);
if(c != ""){
eval(c+"("+g.val()+", "+attrVal+")")
}
});
g.next("ul").hover(function(){},function(){
if(f == ""){
$(this).children("li").slice(0,f).css('background-position','0px 0px')
}else{
$(this).children("li").css('background-position','0px 0px');
$(this).children("li").slice(0,f).css('background-position','0px -28px')
}
});
function init(){
$('<div style="clear:both;"></div>').insertAfter(g);
g.css("float","left");
var a = $("<ul>");
a.addClass("vnfit_rating_widget");
for(var i=1;i<=b;i++){
a.append('<li style="background-image:url('+d+'/widget_star.gif)"><span>'+i+'</span></li>')
}
a.insertAfter(g);
if(e != ""){
f = e;
g.val(e);
g.next("ul").children("li").slice(0,f).css('background-position','0px -28px')
}
}
}
})(jQuery);

Kết quả thu được là:

k123

Trên đây là hướng dẫn tạo xếp hạng với Jquery, Ajax và PHP cho các bạn.

[Ứng dụng php] đăng nhập (Login) với Twitter sử dụng PHP

[Ứng dụng php] đăng nhập (Login) với Twitter sử dụng PHP
Trong bài này mình xin hướng dẫn đến các bạn làm chức năng đăng nhập với Twitter sử dụng ngôn ngữ PHP. Dưới đây là mô hình của nó.

Cấu trúc của dự án:

Bước 1: Tạo Twitter Apps

Truy cập vào: https://apps.twitter.com/app/new đăng nhập tài khoản Twitter

Tạo app twitter với thông số sau:

Name: Tên ứng dụng của bạn. Điều này được hiển thị cho người dùng trong khi cho phép.
Description: Mô tả ứng dụng của mình.
Website: website của mình.
Callback URL(*): Sau khi authorization, URL này được gọi với oauth_token.
Bước 2: Tạo CSDL


CREATE TABLE `users` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `oauth_provider` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
 `oauth_uid` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
 `username` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
 `fname` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
 `lname` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
 `locale` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
 `oauth_token` text COLLATE utf8_unicode_ci NOT NULL,
 `oauth_secret` text COLLATE utf8_unicode_ci NOT NULL,
 `picture` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
 `created` datetime NOT NULL,
 `modified` datetime NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

Bước 3: Kết nối CSDL

Mở file includes/functions.php kết nối CSDL:


function __construct(){
 //Config database
 $dbServer = 'localhost';
 $dbUsername = 'root';
 $dbPassword = '';
 $dbName = 'vnfit_tw';

 //kết nối CSDL
 $con = mysqli_connect($dbServer,$dbUsername,$dbPassword,$dbName);
 if(mysqli_connect_errno()){
 die("Failed to connect with MySQL: ".mysqli_connect_error());
 }else{
 $this->connect = $con;
 }
}

Bài 4: Tạo config với TW

Mở file config.php rồi truy cập vào site https://apps.twitter.com vào app bạn vừa taoh để lấy các thông số.


define('CONSUMER_KEY', 'KEY cho Twitter ');
define('CONSUMER_SECRET', 'Twitter Consumer Secret');
define('OAUTH_CALLBACK', 'http://localhost/login_with_twitter_using_php/process.php');

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