Thứ Ba, 6 tháng 8, 2013

Tạo và kết nối database bằng php

Đây là tổng hợp tài liệu học php & mysql từ cơ bản đến nâng cao, các bạn có thể tham khảo để tự học lập trình website với php & mysql. Nếu các bạn muốn được hướng dẫn học chi tiết về php & mysql có thể tham gia khóa học đào tạo lập trình web .
Bài 5: Tạo và kết nối database bằng php
Tạo một cơ sở dư liệu mysql:
Bạn mở trình duyệt và gõ địa chỉ sau: http://localhost/phpmyadmin
Gõ vào hộp Create new database tên database ở đây là guestbook và nhấn Create.
Tạo bảng guestbook bằng cách click chuột vào database vừa tạo trong tab structure nhập tên table là guestbook,  Number of fields là 5. Sau đó nhấn Go: Tạo các fields sau:
name varchar 50, location varchar 200, email varchar 100, url varchar 100, comments text.
Kết nối cơ sở dữ liệu bằng PHP:
Bởi vì PHP và MySQL hiện tại trên máy của bạn vẫn còn là hai thế giới tách biệt nhau. Do đó, muốn dùng PHP để làm việc được với CSDL bạn cần phải tạo ra sợi dây liên kết giữa hai chiến hữu này.
 <?
 mysql_connect("localhost", "root","") or
 die ("Could not connect to database");
 mysql_select_db("guestbook") or
 die ("Could not select database");
?>
Dòng đầu tiên thực hiện việc kết nối với Database Server đang nằm trên máy localhost, có username là root, password là rỗng.
Nếu kết nối thành công, nó sẽ thực hiện bước kế tiếp là kết nối với database nằm trong đó là guestbook bằng lệnh mysql_select_db().
Các bạn nên lưu ý là các lệnh trên bạn sử dụng thường xuyên cho mọi kết nối CSDL của bạn, do đó tôi khuyên bạn nên lưu nó vào một tập tin dbconnect.php sau này cần thì chỉ việc dùng lệnh include(dbconnect.php);
Viết trang submit dư liệu:Hãy bắt tay vào công việc đi thôi. bạn tạo một trang sign.php ở thư mục gốc của web local có nội dung như sau:
<h2>Sign my Guest Book!!!</h2>
<form method=post action="create_entry.php">
<b>Name:</b>
<input type=text size=40 name=name>
<br>
<b>Location:</b>
<input type=text size=40 name=location>
<br>
<b>Email:</b>
<input type=text size=40 name=email>
<br>
<b>Home Page URL:</b>
<input type=text size=40 name=url>
<br>
<b>Comments:</b>
<textarea name=comments cols=40 rows=4 wrap=virtual></textarea>
<br>
<input type=submit name=submit value=”Sign!”>
<input type=reset name=reset value=”Start Over”>
</form>
Tạo một trang create_entry.php ở thư mục gốc có nội dung như sau như sau:
<?php
include(“dbconnect.php”); // ket noi co so du lieu
$name = $_POST["name"];
$location = $_POST["location"];
$email = $_POST["email"];
$url = $_POST["url"];
$comments = $_POST["comments"];
if ($submit == “Sign!”)
{
 $query = “insert into guestbook  (name,location,email,url,comments)
 values ('$name', '$location', '$email', '$url', '$comments')”;
 mysql_query($query) ordie (mysql_error());
?>
 <h2>Thanks!!</h2>
 <h2><a href=”view.php”>View My Guest Book!!!</a></h2>
<?php
}
else
{
     include(“sign.php”);
}
?>

Được rồi, bạn thử gõ địa chỉ sau vào trình duyệt http://localhost/sign.php, nhập thông tin và nhấn submit.

Tìm hiểu về cookie qua các ví dụ

Bài 4: Cách tạo, lấy và xóa thông tin trong cookies 
Có tất cả 3 khâu chính trong việc xử lý cookie ở PHP và các ngôn ngữ khác. Nó bao gồm:
  • Tạo cookies.
  • Lấy thông tin của cookies.
  • Xóa cookies.
Bạn tạo file cookie.php có code như sau:
(Code hoàn chỉnh trong việc tạo và lấy thông tin của 1 cookie bất kỳ)
PHP Code:
<?php
function create_cookie($name, $value = ”"){
$expires = time() + 60*60*24*365;
setcookie($name, $value, $expires,”/”,”");
}
function get_cookie($name){
if (isset($_COOKIE[$name]))
{
return urldecode($_COOKIE[$name]);
}
else
{
return FALSE;
}
}
?>
I. Tạo cookie:
Bạn tạo file login.php có code như sau:
PHP Code:
<?php
require_once(“cookie.php”);
$name = ”lyhuuloi”;
$password = ”123456″;
create_cookie(“member_name”, $name);
create_cookie(“member_pwd”, $password);
print ”Cookie đã được tạo.”;
?>
Sau khi tạo file login.php, bạn chạy file này để tạo cookie.
II. Lấy thông tin cookie:
Như trong ví dụ trên, ta sẽ trực tiếp lấy thông tin của 2 cookies là: member_name và member_pwd. Bạn tạo fileindex.php có code như sau:
PHP Code:
<?php
require_once(“cookie.php”);
$cookie = array();
$cookie['member_name'] = get_cookie(‘member_name’);
$cookie['member_pwd'] = get_cookie(‘member_pwd’);
print ”Chào bạn, {$cookie['member_name']}. Bạn có mật khẩu là: {$cookie['member_pwd']}”;
?>
III. Xóa cookie:
Để xóa cookie ta cũng làm như tạo cookie. Để xóa cookie ta chỉ cần thiết lập giá trị là 0 (Số không) cho các cookies cần xóa. Bạn tạo file del_cookie.php có code như sau:
PHP Code:
<?php
require_once(“cookie.php”);
create_cookie(“member_name”, 0);
create_cookie(“member_pwd”, 0);
print ”Cookie đã được xóa. <a xhref=’index.php’>Trở về</a>.”;
?>

Kết hợp php và mysql trong ứng dụng website

Bài 3: Kết hợp php và mysql trong ứng dụng website
Trong bài này ta sẽ tìm hiểu cách sử dụng mysql kết hợp với PHP để xuất ra dữ liệu như thế nào.

Để làm việc với mysql và PHP chúng ta cần nắm 6 hàm cơ bản:

1- Kết nối cơ sở dữ liệu:

Cú pháp:

mysql_connect("hostname","user","pass")

2- Lựa chọn cơ sở dữ liệu:

Cú pháp:

mysql_select_db("tên_CSDL")

Ví dụ:

$conn=mysql_connect("localhost","root","root") or die(" khong the ket noi");
mysql_select_db("demo");

3- Thực thi câu lệnh truy vấn:

Cú pháp:

mysql_query("Câu truy vấn ở đây");

4- Đếm số dòng dữ liệu trong bảng:

Cú pháp:

mysql_num_rows();

5- Lấy dữ liệu từ bảng đưa vào mảng:

Cú pháp:

mysql_fetch_array();

6- Đóng kết nối cơ sở dữ liệu:

Cú pháp:

mysql_close();

Ví dụ áp dụng:

Tạo cơ sở dữ liệu dựa trên từng đoạn code sau:

mysql -hlocalhost -uroot -proot
mysql>create database demo_mysql;
mysql> use demo_mysql;
mysql>create table user(id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(50) NOT NULL, password CHAR(50) NOT NULL, PRIMARY KEY(id));

Tạo trang test.php. Đầu tiên chúng ta sẽ kết nối cơ sở dữ liệu.

<?
$conn=mysql_connect("localhost", "root", "root") or die("can't connect database");
mysql_select_db("demo_mysql",$conn);
?>

Tiếp đến viết câu truy vấn lấy ra tất cả user từ database.

<?
$sql="select * from user";
$query=mysql_query($sql);
?>

Kiểm tra xem trong bảng dữ liệu đã tồn tại user nào chưa ?. Nếu chưa thì xuất ra thông báo lỗi, ngược lại thì đưa chúng vào mảng và lặp cho đến hết bảng dữ liệu.

<?
if(mysql_num_rows($query) == 0)
{
echo "Chua co du lieu";
}
else
{
while($row=mysql_fetch_array($query))
{
echo $row[username] ." - ".$row[password]."<br />";
}
}
?>

Và cuối cùng chúng ta đóng kết nối và kết thúc thao tác xử lý.

<?
mysql_close($conn);
?>

Và cuối cùng là file hoàn chỉnh của ứng dụng trên:

<?
$conn=mysql_connect("localhost", "root", "root") or die("can't connect database");
mysql_select_db("demo_mysql",$conn);
$sql="select * from user";
$query=mysql_query($sql);
if(mysql_num_rows($query) == 0)
{
echo "Chua co du lieu";
}
else
{
while($row=mysql_fetch_array($query))
{
echo $row[username] ." - ".$row[password]."<br />";
}
}
mysql_close($conn);

?>

Thứ Hai, 5 tháng 8, 2013

Biến trong php

Biến là gì ?

Ngay cái tên thôi mình cũng nghĩ đến cái gì đó biến đổi thường xuyên, một điều riêng duy nhất của biến là « có thể thay đổi được » ! Nhưng cụ thể biến là gì ?
Một biến, là một thông tin được chứa tạm thời trong bộ nhớ, nó không tồn tại lâu. Biến (hay thông tin) trong PHP chỉ tồn tại trong thời gian server phát sinh trang web (xem chương 1). Sau khi đã phát sinh xong trang web, tất cả các biến đều bị xóa đi vì chúng không còn dùng để làm gì nữa. Biến không phải như một file được chứa trong ổ cứng mà chỉ là một thông tin nhỏ tạm thời.
Chính bạn là người tạo ra biến khi cần dùng đến.
Một biến gồm 2 thành phần:
  • Tên biến: để nhận ra nó là gì, dùng để làm gì, bạn nên cho nó một cái tên dễ nhận biết một chút, ví dụ như “tuoi_cua_toi”
  • Giá trị của biến: là thông tin mà biến chứa, giá trị của biến có thể thay đổi, ví dụ “21 tuoi”.

Ở đây tôi đã cho một ví dụ về một biến có tên là “tuoi_cua_toi”, biến này có giá trị là “21 tuoi”.
Mình có thể sửa đổi khi cần đến giá trị của biến, hay thực hiện vài thao tác trên biến,… Khi đó mình sẽ gọi (tên) biến ra, và biến sẽ lịch sự cho mình biết giá trị của nó. 
Ví dụ một thời điểm nào đó, bạn gọi:
    -Ê biến tuoi_cua_toi, chú chứa cái gì đó?
    -21 tuoi
    -Cảm ơn nghen!
Bạn sẽ thấy mấy thứ nhăng nhít này (ngay khi nó còn mơ hồ, chưa rõ nghĩa lắm) sẽ rất cần thiết cho trang web của bạn!
Ví dụ bạn muốn lấy tên hoặc nickname của một thành viên nào đó, bạn sẽ dùng một biến ten_thanh_vien chẳng hạn, rồi bạn chứa tên một thành viên nào đó trong biến này (khoai lang chẳng hạn). Rồi khi thành viên này đăng nhập vào trang web hay diễn đàn của bạn, bạn sẽ cho in ra hàng này: Xin chào Khoai lang!
Hẳn bạn đã biết làm sao để in ra text rồi nhỉ? Lệnh echo mà tôi đã nói ở chương trước sẽ giúp bạn chuyện này dễ dàng.
Bây giờ chúng ta hãy xem làm sao để sử dụng biến trong PHP nhé!

Gán và hiển thị

Bây giờ mình sẽ thử gán một giá trị cho biến, rồi hiển thị (in) ra giá trị đó. Bạn sẽ hiểu rõ hơn cách sử dụng biến.
Gán một giá trị cho một biến:
Ví dụ, nếu mình gõ vào như sau:
<?php
$ten_thanh_vien = “Khoai Lang”;
?> 

Nếu viết như vậy, bạn đã tạo ra một biến tên là “ten_thanh_vien” và biến này chứa giá trị là “Khoai Lang”!
Chú ý: Tên biến không thể chứa khoảng trắng, thay vì khoảng trắng bạn nên dùng dấu gạch dưới (underscore) _ dấu này nằm chung với phím số 8 trên bàn phím đấy. Nên tránh gõ dấu hay bất cứ kí hiệu nào khác cho biến, PHP không thích lắm, trái lại trong phần giá trị của biến bạn có thể viết bất cứ thứ gì bạn muốn!
Có vài kí hiệu mới nhỉ? Trước hết là dấu đô la ($), nó phải luôn luôn được đặt ở đầu tên biến. Đó là dấu hiệu để PHP nhận ra “à, thằng này là một biến đây!”. Không những PHP mà bạn cũng nhận ra nó là một biến khi bạn đọc code ở đâu đó khi bạn thấy dấu $ . 
Kế đến là dấu bằng (=) dùng để chỉ phép gán, giống như trong Pascal mình hay dùng dấu mũi tên <-- để gán giá trị cho một biến ấy mà.Ví dụ viết $a<-- 15 thì có nghĩa là mình gán giá trị 15 cho biến a, trong php thì viết là $a = 15;. Nói nôm na gán cũng như áp đặt cho biến một giá trị nào đó. (mà mình có thể thay đổi nếu cần) 
Tiếp theo là một giá trị của biến được gán vào, chữ Khoai lang được đặt trong dấu ngoặc kép vì nó là giá trị kiểu text. Và cuối cùng xin đừng quên dấu chấm phẩy (;) để kết thúc một câu lệnh.
Cụ thể mà nói thì code này sẽ hiển thị ra như thế nào?
Chả ra gì cả! Bởi bạn chưa dùng lệnh echo mà, cho tới giờ PHP chỉ tạo ra một biến và gán cho nó một giá trị rồi giữ tạm thời trong bộ nhớ thôi, chứ chưa làm gì khác!
Biến không nhất thiết phải chứa text, mà mình có thể gán cho nó một giá trị số hay giá trị logic (đúng sai) cũng được!
Mình hãy cho 3 ví dụ về 3 kiểu “dữ liệu” khác nhau mà biến có thể chứa nhé!
  • text: Cái này tôi vừa cho ví dụ, để cho biến một giá trị text, mình đặt nó trong dấu ngoặc kép như vầy:
    <?php $ten_thanh_vien = “Khoai Lang”; ?>
  • số: chỉ khác với text ở chỗ là mình không cần phải đặt vào giữa hai dấu ngoặc kép thôi:
    <?php $so_anh_em = 5; ?>
  • giá trị logic: chỉ có hai giá trị là ĐÚNG (true) hoặc SAI (false). Để phân biệt với giá trị text, mình không gõ dấu ngoặc kép cho true và false, ví dụ:
    <?php
    $toi_rat_gioi_php = false;
    $toi_la_beginner = true;
    ?>
Bạn sẽ hiểu rõ hơn về giá trị logic này trong chương sử dụng điều kiện.
Hiển thị (in ra) giá trị của một biến :
Đơn giản chỉ dùng lệnh echo mà bạn đã biết, ví dụ :
<?php
echo  "$ten_thanh_vien " ;
?>

Nó in ra cái gì vậy? Tuyệt, tuyệt, nó in ra “khoai lang” kìa! 
Bạn hãy thử cho vài giá trị khác nhau bắt nó in ra thử xem!
Với cấu trúc lệnh echo, bạn không nhất thiết chỉ in ra giá trị của biến, ví dụ:
<?php
$ten_thanh_vien = “Khoai Lang”;
echo "xin chao $ten_thanh_vien ! ";
?>

Nó sẽ in ra : xin chao khoai lang!
Bạn hãy thử cho thêm vài biến bên trong echo xem sao!

Vài tính toán đơn giản


Mình khoan tính toán cái gì ngoằn ngoèo rắc rối vội, chỉ đơn giản cộng trừ nhân chia thôi nhé!
Mình sẽ chỉ làm việc với những biến chứa giá trị số, đây là 4 kí hiệu cần biết : +, -, *, / (chắc bạn không lạ gì chúng phải không?)
Vài ví dụ:
<?php
$num = 2+4;// $num nhận giá trị là 6
$num = 5-1;// $num nhận giá trị là 4
$num = 3*4;// $num nhận giá trị là 12
$num = 10/2;// $num nhận giá trị là 5
// phức tạp tí xíu nhé
$num = 3*5+1;// $num nhận giá trị là 16
$num = (1+2)*2;// $num nhận giá trị là 6
?>

Đây là những tính toán với nhiều biến:
<?php
$num = 10;
$result = ($num +5)*$num// $result sẽ nhận giá trị là 150
?>

Bạn thử kiểm chứng lại xem (dùng lệnh echo in chúng ra như đã làm ở trên). 

Chuyển biến

Một thú vị của PHP: mình có thể chuyển một biến từ trang này sang trang khác!
Bạn sẽ thấy điều này vô cùng tiện lợi, ví dụ chuyển biến $ten_thanh_vien từ trang này sang trang khác! Như tôi đã nói, biến sẽ bị hủy đi sau khi trang web được phát sinh xong. Vậy làm sao lấy biến $ten_thanh_vien vào trang khác được???

Vận chuyển bằng cách thay đổi address

Bạn có bao giờ thấy một địa chỉ (address) dài ngoằn như thế này chưa:
http://daotaolaptrinh.edu.vn/chia-se.html
Mấy biến của bạn nằm trong đó đấy! Đây là một cách chuyển biến từ trang này sang trang khác!
Nó hoạt động thế nào ta?
Như bạn đã biết, để tạo một link trong HTML, mình dùng tag <a>, chẳng hạn:
<a href="http://daotaolaptrinh.edu.vn/chia-se.html"> click here to access my site </a>
Sau chữ info.php, bạn đánh một dấu chấm hỏi (?), kế tiếp là tên biến, rồi dấu bằng, rồi giá trị của biến
http://daotaolaptrinh.edu.vn/chia-se.html
Cái này sẽ tạo tự động một biến đặt biệt tên là $_GET[“ngay”] có giá trị là 27
Nếu bạn muốn tạo thêm biến khác, bạn chỉ cần đặt vào dấu & rồi tên biến mới, dấu bằng, giá trị của nó!
Chú ý, trong code HTML bạn không được gõ trực tiếp dấu &, mà thay bằng code của HTML tương ứng (&amp;)
Ví dụ:
http://daotaolaptrinh.edu.vn/chia-se.html&amp;thang=08&amp;nam=2007&amp;title=informations 
Tất cả kí hiệu &amp; sẽ được trình duyệt của bạn chuyển thành & 
Ở đây, 4 biến đặc biệt đã được tạo :
  • $_GET[‘ngay’] có giá trị là 27
  • $_GET[‘thang’] có giá trị là 08
  • $_GET[‘nam’] có giá trị là 2007
  • $_GET[‘title’] có giá trị là « informations »
Tôi nhận thấy rằng mấy biến này có hình dạng kì cục quá ! Nhưng đừng vì vậy mà bạn nản lòng dừng lại nhé !
Mình hãy làm một ví dụ nhỏ để bạn thấy nó sẽ cho ra kết quả cụ thể như thế nào !
Để thực hiện, mình cần 2 trang :
Một trang chứa cái tag <a href="http://daotaolaptrinh.edu.vn/chia-se.html"> click here to access my site </a>
Một trang để lấy biến và giá trị của nó được chuyển đến!
Code : HTML
<p>
    Trang này chỉ chứa mã HTML.<br>
    Đây là 3 link dẫn đến trang cible.php, Với các biến có giá trị khác nhau :
</p>
<p>
   <a href="cible.php?ho=Nguyen&ten=Tra">Link dẫn đến trang cible.php?ho=Nguyen&ten=Tra</a><br>
   <a href="cible.php?ho=Tran&ten=Truong">Link dẫn đến trang cible.php?ho=Tran&ten=Truong </a><br>
   <a href="cible.php?ho=Thai&ten=Long">Link dẫn đến trang cible.php?ho=Thai&ten =Long </a><br>
</p>

Code : PHP
<p>Xin chào !</p>
<p>Họ của bạn là <?php echo $_GET['ho']; ?> , và tên của bạn là <?php echo$_GET['ten']; ?> .</p>
<p>Thử một cái khác đi, <a href="diemdanh.php">click here</a> để trở lại trang diemdanh.php </p>
Phào, bạn thấy sao ? Dễ chịu chứ nhỉ ? 
Bạn bắt đầu để ý một điều thú vị của php rằng : source code của trang cible.php có chút xíu, mà trang web lại hiện ra mỗi lần mỗi khác ! 
Tạm dừng ở đây để xem bạn tự test vài ví dụ nữa để làm quen với cách chuyển đổi biến kiểu này nhé !

Chuyển biến bằng trình đơn (formulaire ; form)

Một cách khác để chuyển biến từ trang này sang trang khác là dùng trình đơn (form), với những vùng gõ text, những ô vuông để chọn, những nút options,…
Tôi dành hẳn một chương để nói về mấy vụ form này (phần III), coi vậy chứ cũng rắc rối lắm. Còn bây giờ mình hãy làm những cái đơn giản nhưng thường gặp thôi nhé !
Cái đơn giản nhất là vùng text.
Bạn đã gõ text vào vùng text trên một trang web lần nào chưa ? Tôi dám cá là nhiều lắm rồi, bạn gõ vô tội vạ bất cứ thứ gì có thể gõ được khi comment trong blog của tui đó mà ! Ha ha, đùa tí thôi !
Như vậy là bạn đã biết vùng text là cái gì rồi đấy, mục đích của mình bây giờ là làm sao để thu lại những gì mà ai đó đã gõ vào !
Làm như hồi nãy, mình cần một trang trên là diemdanh.php có vùng text để gõ text vào, và một trang tên là cible.php để hiển thị ra cái gì mình đã gõ !
Code : HTML
<p>
    Trang này cũng chỉ chứa code HTML.<br>
    Hãy cho biết tên của bạn :
</p>
<form action="cible.php" method="post">
<p>
<input type="text" name="ten" /> <input type="submit" value="Send" />
</p>
</form>
Code : PHP
<p>Xin chào !</p>
<p>Hê hê, tôi biết bạn tên gì rồi. Bạn tên là <?php echo $_POST['ten']; ?>chứ gì !</p>
<p>Nếu bạn muốn đổi tên, <a href="diemdanh.php">click vào đây</a> để trỡ lại trang diemdanh.php</p>
Chú ý : nếu mình muốn thu lại giá trị từ một form, mình dùng biến $_POST['xxxx']
Nếu muốn thu hồi giá trị từ một address, mình dùng biến $_GET['xxxx']
Bạn hãy thử cho quen với cách thu hồi biến kiểu form này đi nhé ! Chúc vui vẻ với những cái tên quái gở mà bạn sắp phát minh ra ! Nhưng hãy nhớ mục đích của mình là hiểu được cơ chế hoạt động của nó !
Ở đây chỉ có mỗi một thứ cần hiểu là « action » chỉ ra trang web sẽ hiển thị ra những gì mình sắp gõ vào khi mình nhấp vào nút Send, còn tên của vùng text sẽ là tên biến được tạo !
<input type="text" name="ten" />
Tên của vùng text ở đây là “ten”. Trong trang cible.php, một biến $_POST['ten'] sẽ được tạo và sẽ mang giá trị là những gì bạn gõ vào trong vùng text.