Thứ Bảy, 30 tháng 6, 2012

Ngày đầu tiên bán vé tàu tết qua mạng - Quá tải

Đúng 8 giờ ngày 15-11, Công ty Vận tải hành khách đường sắt Sài Gòn (VTHKĐSSG) bắt đầu đưa khoảng 40.000 - 45.000 vé tàu hỏa (đi các tỉnh phía Bắc) bán ra trong dịp Tết Nhâm Thìn lên website: www.vetau.com.vn để khách hàng truy cập đặt chỗ, mua vé.

Tuy nhiên theo ghi nhận của phóng viên Báo SGGP, website này đã bị "sập mạng" không thể đăng nhập, truy cập để thực hiện các quy trình đặt vé qua mạng như đã thông báo.

Hành khách mua vé tàu tết tại Ga Sài Gòn. Ảnh: Đức Trí .

Sập mạng

Mặc dù Công ty VTHKĐSSG thông báo 8 giờ sáng khách hàng mới truy cập vào website: www. vetau.com.vn để đặt chỗ vé tàu tết, nhưng ở hầu hết các điểm truy cập Internet công cộng, nhất là gần các trường đại học, khu công nghiệp mới 7 giờ sáng đã bắt đầu kín chỗ. Mọi người đã điền đầy đủ thông tin chờ sẵn đúng 8 giờ website bắt đầu "mở cửa" cho vào đặt chỗ.

Ngay sau vài phút truy cập vào địa chỉ www. vetau.com.vn đã xuất hiện dòng chữ "chức năng bạn thực hiện đang bị lỗi. Xin quý khách vui lòng liên hệ với quản trị website".

Chị Thân Thị Chi, nhân viên Công ty Casumina gần cầu Bình Lợi, cho biết: "Nghe thông tin ngày 15-11, ga Sài Gòn triển khai bán vé tàu tết qua mạng. Đúng 8 giờ 10 phút, tôi vào www. vetau.com.vn đặt mua vé về Nam Định ngày 26-1, nhưng mạng báo lỗi rồi đứng im. Sau đó, tôi thoát ra và tiếp tục đăng nhập vào trang này thì lúc chạy được lúc không. Đến gần 10 giờ, trang web này mới chạy được, nhưng khi đến phần đặt chỗ thì rất chậm và không thể nào đặt được chỗ dù đã cố gắng đặt nhiều lần".

Để tránh tình trạng nghẽn mạng do lượng người truy cập đông như mọi năm, năm nay Công ty VTHKĐSSG đã thuê đường truyền riêng của Newlife và nâng khả năng truy cập để nhiều người có thể cùng truy cập một lúc. Thế nhưng, vào sáng qua 15-11, ngày đầu tiên bán vé tàu tết đợt 1, nhiều hành khách khi đăng nhập vào hệ thống trang web nói trên để đặt chỗ thì màn hình máy tính chỉ hiện dòng chữ The service is unavailable (tạm dịch: dịch vụ này không sẵn sàng), sau đó là Not Found (không tìm thấy). Do nóng lòng tìm kiếm tấm vé về tết, nhiều hành khách đã xin nghỉ làm để chạy ra ga Sài Gòn dùng máy tính công cộng của ga với hi vọng đường truyền Internet mạnh hơn để vào trang web đăng kí mua vé tàu nhưng tình hình vẫn không khá hơn.

Người dân đặt mua vé tàu tết qua internet. Ảnh: Cao Thăng .

Đến hơn 9 giờ, mạng trang web trên mới vào được, nhưng nhiều hành khách khi đăng nhập vào mục chọn chỗ thì máy tính đứng im không thể đăng nhập chọn tiếp được. Anh Phạm Ngọc Long, ngụ quận Tân Bình, bức xúc: "Năm nào cũng vậy, ngành đường sắt thông báo bán vé tàu tết qua mạng rộng rãi và nâng cấp hệ thống đường truyền nhưng tình hình cũng không khá hơn năm rồi. Đến ngày, giờ quy định về bán vé tàu tết, hành khách vào mạng đăng kí là mạng "tắt ngấm" và phải chờ hàng giờ mới vào đăng kí được. Trong khi đó, số điện thoại của ga để hành khách liên hệ khi có sự cố nhờ tư vấn thì liên tục báo bận".

Khắc phục sự cố

Việc hàng trăm ngàn người cùng truy cập cùng một lúc vào website thì chuyện nghẽn mạng là đương nhiên. Nó cũng giống như các mạng điện thoại thường xuyên nghẽn mạng vào lúc giao thừa bước sang năm mới vì quá nhiều người nhắn tin hay gọi điện chúc nhau. Hiện Công ty VTHKĐSSG, đang yêu cầu phía đối tác quản lí phần mềm khắc phục sự cố.

Công ty VTHKĐSSG cho biết, về việc đặt chỗ, bán vé tàu Tết Nhâm Thìn 2012 qua website vetau.com.vn ngày 15-11, thời điểm trước 8 giờ hệ thống hoạt động bình thường, số lượng khách hàng online khoảng 3.000 người. Tại thời điểm 8 giờ số lượng khách hàng truy cập vào website tăng mạnh. Đúng 8 giờ phương án bán vé tàu tết được cập nhật vào hệ thống, số lượng khách hàng truy cập vào website tăng cao hơn nữa, khoảng 30.000 người, làm hạn chế tốc độ truy cập, số phiếu đặt chỗ khách hàng đặt thành công ít.

Công ty VTHKĐSSG phối hợp với đơn vị cung cấp dịch vụ điều chỉnh về mặt kĩ thuật hệ thống máy chủ, hệ thống hoạt động nhanh hơn, số phiếu đặt chỗ thành công tăng. Đến 10 giờ 45 phút hệ thống hoạt động trở lại bình thường, số phiếu đặt chỗ thành công là 1.697 phiếu, với số chỗ đặt là 8.951 chỗ. Đến 15 giờ số liệu phiếu đặt chỗ thành công là 7.343 phiếu, với số chỗ là 19.879 chỗ. Việc đặt chỗ, mua vé tàu qua website trong ngày 15-11-2011 đúng theo kế hoạch của Công ty VTHKĐSSG.

Hôm nay, ngày 16-11 còn khoảng 15.000 chỗ cho các ga từ Đông Hà đến Hà Nội. Kế hoạch bán vé cho hành khách đi từ ga Huế trở vào sẽ theo đúng kế hoạch (ngày 22-11-2011).

Theo kế hoạch bán vé tàu Tết Nguyên đán qua mạng của Công ty VTHKĐSSG, năm nay vé tàu tết được bán làm 3 giai đoạn. Cụ thể, từ ngày 15-11 đến 20-11, bán vé cho hành khách đến các ga từ Đông Hà trở ra đến Hà Nội (kể cả vé khứ hồi sau tết). Từ ngày 22-11 đến 27-11, bán vé cho hành khách đến các ga từ Huế trở vào Sài Gòn (kể cả vé khứ hồi sau tết). Từ ngày 1-12 đến 10-12 bán các chỗ còn lại từ Sài Gòn đến Hà Nội (nếu còn).

Theo thông báo của Ga Sài Gòn, mỗi account chỉ được đặt tối đa 3 phiếu đặt chỗ (chưa thanh toán tiền hoặc chưa trả lại chỗ). Mỗi phiếu tối đa 4 người đi tàu/lượt. Riêng khách hàng đặt chỗ đầu cơ, đặt chỗ ảo (không mua vé, không trả lại chỗ, khai báo tên, số giấy tờ không thực tế…) sẽ bị khóa tài khoản. Trong những trường hợp có biểu hiện nghi ngờ về việc đầu cơ vé, Công ty VTHKĐSSG có thể yêu cầu người đi mua vé/nhận vé xuất trình giấy tờ của người đặt chỗ. Khi có bằng chứng về việc đầu cơ vé, Công ty VTHKĐSSG sẽ hủy toàn bộ số phiếu đặt chỗ của khách hàng (người đặt chỗ), đồng thời khóa account của khách hàng này.

Ngoài cổng Ga Sài Gòn đã xuất hiện nhiều dân "phe" vé mời mọc khách. Những đối tượng này nhận mua vé trực tiếp hưởng tiền chênh lệch 250.000 đồng/vé so với giá vé gốc; hoặc có thể đến trực tiếp ga sẽ có người hướng dẫn và đưa lên tàu mà không cần vé, mỗi trường hợp phải trả thêm 200.000 đồng/người so với giá vé gốc.

Theo SGGP

Thứ Sáu, 29 tháng 6, 2012

MySQL - Căn Bản

Giới Thiệu:

MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng.
Vì MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh.Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet.
MySQL miễn phí hoàn toàn cho nên bạn có thể tải về MySQL từ trang chủ. Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OS X, Unix, FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS, ... MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL). MySQL được sử dụng cho việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác, nó làm nơi lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl,...


Cài Đặt: www.google.com



Cách Khởi Động Và Sử Dụng MySQL:
Chúng ta sử dụng command như sau:
mysql –h host –u username –p;
•    -h : sau do nhập tên host
•    -u : sau đó nhập username
sau do nhap password.
Ví dụ : với localhost, username = root , pass= rỗng
 mysql –h localhost –u root –p;


Lệnh Cơ Bản:
create databases name_data;     : tạo mới 1 data có với tên là "name_data"
Demo: tạo data có tên là "thang_cu" .Ta thực hien như sau: mở MySQL consolo trong WampServer -> nhập tên user và password vào, gõ vào lệnh "show databases;" để xem trong MySQL có những database nào, kế đến bạn gõ tiếp lệnh tạo database " create database thang_cu; " rồi "Enter" , nếu thành công ( đúng cú pháp, không bị trùng tên ) nó sẽ hiện ra dòng thông báo " Query Ok, 1 row acffected (0.00 sec). Tiếp theo là bạn kiểm tra xem mình có thật sự tạo thành công 1 data không bằng cách gõ lệnh "show databases;"
 Hình minh họa Demo trên :

create table name_table (column 1 ,column 2, .. ,column n); : tạo mới 1 table có tên là " name_table " , trong table này bạn phải nhập tên tương ứng côt nha ! ( column 1 : tên cột thứ nhất  kiểu DL , .. , column n : tên cột thứ n  kiểu DL )
Demo: tạo 1 table có tên là "ly_lich", table này có 2 cột : cột thứ nhất tên " ten " kiểu DL là " varchar " có
25 ký tự, cột thứ 2 có tên "nam_sinh" kiểu DL là " int" có 4 chữ số.
Để làm điều này, ta trước tiên phải chọn "data" là "thang_cu" chứa "table" của "ly_lich". Dùng lệnh "use name_data;" để chọn data .
Minh họa bởi hình sau:

Tiếp đến bạn gõ lệnh tạo table : "create table ly_lich (ten varchar(25),nam_sinh int(4));" ->Enter. Nếu thành công thì sẽ có thông báo : "Query Ok, ... "
Để xem trong data "thang_cu" có bao nhiêu table bạn dùng lệnh : "show tables;".
Để xem trong table "ly_lich" có bao nhiêu cột bàn dùng lệnh: "decsribe name_table;"
Hình minh họa:

alter table name_table add name_column+type  after name_column_befor; :lệnh này sẽ thêm 1 cột vào bảng có tên "name_table" , cột mới thêm vào có tên là " name_column" ( +kiểu DL của cột mới thêm vào nũa nha !), cột mới thêm vào nằm sau cột "name_column_befor"
Demo: thêm vào table "ly_lich" 1 cột có tên "que_quan" có kiểu DL là "varchar" tối đa  là 30 ký tự, thêm vào phía sau cột "nam_sinh".
Ta thực hiện như sau: "alter table ly_lich add column `que_quan` varchar(30) after `nam_sinh`;" -> "Enter". Nếu thành công  sẽ có thông báo :"Query Ok,  ... " . Để kiểm tra kết quả bạn dùng lệnh " describe ly_lich" .
Hình minh họa:

insert into name_table (name_column 1, .. , name_column n) values (value_column1, .. , value_column n); : lệnh này chèn giá trị "value_column 1", ... vào cột tương ứng "name_column 1", ... của table có tên "name_table". nếu giá trị của cột là chuỗi ký tự ta phải để trong ' ' (phím chứ dấu ngoăc kép gần phím Enter,  không phải ` ` phím bên trái số 1 nha !).
Demo: trong table "ly_lich" hãy nhập giá trị "cu_ngay" cho cột "ten", 2000 cho cột "nam_sinh", "hoc mon" cho cột "que_quan".
Ta thực hiện như sau: insert into ly_lich (ten, nam_sinh, que_quan) values ('cu_ngay', 2000, 'hoc mon'); -> Enter . Nếu thành công thì sẽ có thông báo : "Query Ok, 1 row affected (  số giây     sec)".

select name_table.name_column_1, ... , name_table.name_column_n from name_table; : xuất ra màn hình giá trị cột thứ " name_column_1" , .. ,"name_column_n" của table có tên là "name_table".
Demo:xuất ra màn hình cột "ten"  của table "ly_lich".
Ta thục hiện như sau: select ly_lich.ten from ly_lich; ->Enter . Nế thành công thì có thông báo :" số row in set  (số sec)".
Hình minh họa:

select name_table_a.name_column_1, ..., name_table_a.name_column_n, name_table_b.name_column_1, .., name_table_b.name_column_n from name_table_a, name_table_b where name_table_a.name_column_i=name_table_b.name_column_j; : xuất ra màn hình giá trị cột với điều kiện là giá trị cột i của "table_a" = giá trị cột j của "table_b" .
Demo: tạo table "ly_lich_a" sao cho cột "ten" có tên là "cu_ngay" như hình sau:
 Hình minh họa:


Demo: xuất ra màn hình lý lịch những người nào có tên giống nhau .
Ta thực hiện như hình sau: select ly_lich.ten, ly_lich.nam_sinh, ly_lich.que_quan,  ly_lich_a.ten, ly_lich_a.nam_sinh, ly_lich_a.que_quan from ly_lich, ly_lich_a where ly_lich.ten=ly_lich_a.ten; ->Enter. Nếu thành công thì nó sẽ hiện ra bảng kết quả và 1 dòng thông báo: " số row in set (số sec) ".
Hình minh họa:


select name_table.name_column_1, ..., name_table.name_column_n from name_table limit fisrt_number, number; :xuất ra màn hình giá trị cột bắt đầu từ dòng thứ "fisrt_number" , số dòng xuất ra là "number".
Demo: giả sử ta có bảng DL  là : "ly_lich" như ở trên. Xuất ra màn hình lý lịch 1 người đầu tiên, 2 người đầu tiên, người thứ 2.
Ta thực hiện như  sau: xuất 1 người đầu tiên : select ly_lich.ten, ly_lich.nam_sinh, ly_lich.que_quan from ly_lich limit 0,1; ->Enter
Hình minh họa :


select name_table.name_column_1, .. ,n from name_table where name_table.name_search_column like '%keyword'  order by name_table.name_search_column asc | desc; : xuất DL ra màn hình thỏa DK có cột "nam_table.name_search_column" có ký tự giống ký tự "keyword" theo thứ tự từ trên xuống ( ASC) hoặc từ dưới lên (DESC) ( DK where name_table.name_search_column like '%keyword' có thể bỏ đi ).
Demo: không dùng DK "where name_table.name_search_column like '%keyword' ". Giả sử ta có bảng DL "ly_lich" như ở trên, bây h xuất ra màn hình theo thứ tự từ trên xuống, từ dưới lên.
Ta thực hiện như sau: select ly_lich.ten, ly_lich.nam_sinh, ly_lich.que_quan from ly_lich order by ly_lich.ten asc; ->Enter.
Hình minh họa:

update name_table set name_column='new_valuse' where (name_column_ID='keyword') ; : cập nhật giá trị mới "new_value" cho "name_column" của bảng "name_table" khi giá trị "name_column_ID" bằng giá trị "keyword", nếu mệnh đề "where" trở về sau bỏ đi thì nó sẽ cạp nhật cả bảng.
Demo: giả sử ta có table "ly_lich" như ở trên, h ta muốn cập nhật lại năm sinh của "cu_ngay" là 1990.
Ta thực hiện như sau: update ly_lich set nam_sinh=1990 where (ten='cu_ngay'); ->Enter
Hình minh họa:

delete from name_table where (name_column_ID='keyword'); : xóa dòng nào có cột "name_column_ID" bằng "keyword" của bảng "name_table", nếu không có mệnh đề "where" thì xóa hết bảng.
Demo: giả sử có bảng "ly_lich" như trên, bây h ta muốn xóa dòng nào có cột "ten" là "cu_ngay" của bảng "ly_lich".
Ta  thực hiện : delete from ly_lich where(ten='cu_ngay'); ->Enter.
Hình minh họa:


Tham khảo thêm: w3schools

MySQL - Nâng Cao

Đây là phần tiếp theo của phần trước " MySQL - Căn Bản"
Tạo cấu trúc database như sau: ( xem lại phần trước)
Hình minh họa:

Tạo table "person" có cấu trúc như sau:( xem phần trước cách tạo mới 1 table)
Hình minh họa:

Trong table "person" nhập giá trị như sau: ( xem phần trước cách nhập liệu cho table )
Hình minh họa:

Ok, vậy là xong các bước chuẩn bi, bây h tiến hành các thao tác nha !



select *from table_name; : lệnh này sẽ xuất ra màn hình giá trị của toàn table  "name_table".
Demo: hãy xuất toàn bộ  table "person".
Thực hiện: select *from person; ->Enter
Hình minh họa:

select distinct column_name from table_name; : lệnh này xuất ra màn hình  giá trị của cột "name_table"
Demo: hãy xuất ra màn hình cột "City" của table "prson".
Thực hiện : select distinct Address from
Hình minh họa:

select  *from table_name where coluomn_name like 'keyword%' ; : lệch này sẽ in ra màn hình những dòng mà có cột "Address" có ký tự đầu tiên là " keyword".
Demo: hãy xuất ra màn hình những dòng của table "person" có cột "Address" chứa ký tự đàu tiên là "T".
Thực hiện: select *from person where Address like 'T%'; ->Enter .
Hình minh họa:

select *from table_name where column_name like '%keyword' ; : lêch này sẽ trích những dòng của table "table_name" có cột "column_name" chứa ký tự cuối cùng bằng 'keyword'.
Demo: hãy trích những dòng của tble "person" có cột "City" mà ký tự cuối cùng là "nes".
Thực hiện: select *from person where City like '%nes' ;->Enter .
Hinh minh họa:

select *from table_name where column_name like '%keyword%' ; : lệnh này sẽ trích những dòng thuộc table "table_name" mà cột "column_name" có chứa từ "keyword" ở phía trong.
Demo: trích từ table "person" những dòng sao cho cột "City" có chứa từ "ndn" ("van").
Thực hiện: select *from person where City '%ndn%' ; ->Enter.
Hình minh họa:

select *from table_name where column_name like 'keyword1_keyword2_keyword3' ; : trích những dòng của table "table_name" sao cho cột "column_name" có hầu hết các ký tự giốnng "keyword1_keyword2_keyword3" chỉ có 2 ký tự ở 2 vị trí "_" là không quan tâm.
Demo: trích từ table "person" những dòng có cột "LastName" có  ký tự đâu tiên"H" , ký tự thứ 3 "n", 2 ký tự cuối cùng là "en".
Thực hiện: select *from person where LastName like 'H_n_en' ; ->Enter.
Hình minh họa:

select *from table_name where column_name in ('keyword_i', ... , 'keyword_j') ; : lệcnh này sẽ trích xuất những dòng thuộc table " table_name" sao cho cột "column_name" có giá trị là "keyword_i", .. ,"keyword_j".
Demo: trích những dòng của table "person"  sao cho  cột "LastName" có giá trị là "Hansen","Pettersen".
Thực hiện: select *from person where LastName in ('Hansen','Pettersen') ; ->Enter.
Hình minh họa:



Thứ Năm, 28 tháng 6, 2012

Facebook tiến hành điều tra vi rút ảnh khiêu dâm

Facebook cho biết họ đang tìm hiểu các tin tức về việc hình ảnh khiêu dâm và bạo lực đã được đăng lên mạng xã hội này.

Những hình ảnh này được cho là đã xuất hiện thông qua mục cập nhật tin tự động (newsfeeds) của người dùng.

Theo trang công nghệ ZDNet, các hình ảnh này lây lan thông qua một loại virus "đường dẫn rác" ("linkspam"), dụ dỗ người dùng bấm vào đường dẫn có vẻ như nói về một chuyện vô hại.

Một số người dùng nói họ đã đóng tài khoản trên Facebook sau khi thấy những hình ảnh đáng sợ trên trang cá nhân của mình

Một nữ phát ngôn viên của Facebook nói: "[Chúng tôi] nhận thức nội dung của các các báo cáo này và chúng tôi đang điều tra vụ việc".

Hàng ngàn thành viên của Facebook đã đăng tải các bình luận về sự cố này trên Twitter.

"Đã phát hiện ra một trang web khiêu dâm, có tên là Facebook, " một người dùng viết.

"Facebook cần phải có hành động về các hình ảnh khiêu dâm đã được chỉnh sửa bằng photoshop, " một người khác viết.

Nhiều người khác phàn nàn họ đã nhìn thấy những hình ảnh giữa động vật với người, và một số người nói thêm rằng bởi vậy họ đã quyết định khóa bỏ tài khoản của mình.

Một số người đang kết nối vụ tấn công này với nhóm hacker Anonymous sau khi có một đoạn băng hình được tung lên YouTube, đe dọa sẽ "giết chết" mạng xã hội Facebook.

Tuy nhiên, các chuyên gia thì đặt câu hỏi cho tính xác thực của đoạn video.

Phản ứng

Hãng chuyên về bảo mật trên Internet, Sophos nói những hình ảnh đã "tràn ngập" trên mạng xã hội Facebook trong chừng 24 giờ qua.

Chuyên gia cao cấp chuyên tư vấn công nghệ của hãng, Graham Cluely nói hiện chưa rõ các nội dung xấu được phát tán theo hình thức nào, nhưng nói thêm rằng Facebook co thể phải đương đầu với hậu quả lâu dài.

"Những vấn đề như thế này nhiều khả năng sẽ khiến người dùng tránh xa mạng xã hội này, " ông viết trên một blog của công ty.

"Facebook cần nhanh chóng xử lí vấn đề và ngăn chặn tình trạng tương tự xảy ra trên quy mô như vậy một lần nữa. "

Mạng xã hội này đòi hỏi các thành viên đăng kí phải tối thiểu là 13 tuổi.

Các chuyên gia nói rằng công ty có thể cần phải ra cảnh báo về nguy cơ những người dùng ít tuổi nhất có thể nhìn được các hình ảnh xấu đó.

"Ban lãnh đạo Facebook phải có trách nhiệm khuyến khích các đối tượng vị thành niênnếu nhìn thấy những hình ảnh đó thì cần trao đổi với gia đình hoặc với chuyên gia tư vấn học đường, " Sally Leivesley, Giám đốc điều hành quản lí của NewRisk đồng thời là chuyên gia tư vấn về việc kiểm soát quản lí khủng hoảng nói.

Theo VTCnews

Thứ Tư, 27 tháng 6, 2012

PHP - AJAX

Tạo ra ứng dụng tương tác:
Demo: Ứng dụng thường thấy nhất là "Search" của Web như "google" khi bạn nhập từ vào ô tìm kiếm thì no lập tức đưa ra từ gợi ý. Tương tự như chức Search của các Web mà ta thường gặp. Để làm điều ấy ta có 2 file : 1.  "search.html" có nhiệm vụ hiện ra khung Search và đưa ra  gợi ý, kết quả ; 2. "check_search.php" kiểm tra từ nhầp vào có trong CSDL không .
1.  "search.html"
<html>
<head>
<script type="text/javascript">
function showHint(str)
{
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","gethint.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<p><b>Start typing a name in the input field below:</b></p>
<form>

First name: <input type="text" onkeyup="showHint(this.value)" size="20" />
</form>
<p>Suggestions: <span id="txtHint"></span></p>
</body>
</html>
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","gethint.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<p><b>Start typing a name in the input field below:</b></p>
<form>
Key Search: <input type="text" onkeyup="showHint(this.value)" size="20" />
</form>
<p>Suggestions: <span id="txtHint"></span></p>
</body>
</html>
First name: <input type="text" onkeyup="showHint(this.value)" size="20" />
</form>
<p>Suggestions: <span id="txtHint"></span></p>
</body>
</html>
2. "check_search.php"
<?php
// Fill up array with names
$a[]="Anna";
$a[]="Brittany";
$a[]="Cinderella";
$a[]="Diana";
$a[]="Eva";
$a[]="Fiona";
$a[]="Gunda";
$a[]="Hege";
$a[]="Inga";
$a[]="Johanna";
$a[]="Kitty";
$a[]="Linda";
$a[]="Nina";
$a[]="Ophelia";
$a[]="Petunia";
$a[]="Amanda";
$a[]="Raquel";
$a[]="Cindy";
$a[]="Doris";
$a[]="Eve";
$a[]="Evita";
$a[]="Sunniva";
$a[]="Tove";
$a[]="Unni";
$a[]="Violet";
$a[]="Liza";
$a[]="Elizabeth";
$a[]="Ellen";
$a[]="Wenche";
$a[]="Vicky";
//get the q parameter from URL
$q=$_GET["q"];
//lookup all hints from array if length of q>0
if (strlen($q) > 0)
{
$hint="";
for($i=0; $i<count($a); $i++)
{
if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
{
if ($hint=="")
{
$hint=$a[$i];
}
else
{
$hint=$hint." , ".$a[$i];
}
}
}
}
// Set output to "no suggestion" if no hint were found
// or to the correct values
if ($hint == "")
{
$response="no suggestion";
}
else
{
$response=$hint;
}
//output the response
echo $response;
?>
Lấy CSDL :
Demo: giả sử ta có bảng CSDL có tên là "user" như sau:
Bây h làm sao ta lấy thông tim của 1 user và in nó ra màn hinh . Để làm được điều ấy thì cũng đơn giản thôi, ta tạo  fiel "show_user.html" để in thông tin user, và file "get_user.php" để lấy thông tin từ CSDL.
1. "show_user.html"
<html>
<head>
<script type="text/javascript">
function showUser(str)
{
if (str=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","
get_user.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form>
<select name="users" onchange="showUser(this.value)">
<option value="">Select a person:</option>
<option value="1">Peter Griffin</option>
<option value="2">Lois Griffin</option>
<option value="3">Glenn Quagmire</option>
<option value="4">Joseph Swanson</option>
</select>
</form>
<br />
<div id="txtHint"><b>Person info will be listed here.</b></div>
</body>
</html>
2. "get_user.php"
<?php
$q=$_GET["q"];
$con = mysql_connect('localhost', 'cu_ti', 'te');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("ajax_demo", $con);
$sql="SELECT * FROM
user WHERE id = '".$q."'";
$result = mysql_query($sql);
echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
<th>Hometown</th>
<th>Job</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['FirstName'] . "</td>";
echo "<td>" . $row['LastName'] . "</td>";
echo "<td>" . $row['Age'] . "</td>";
echo "<td>" . $row['Hometown'] . "</td>";
echo "<td>" . $row['Job'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($con);
?>
Demo: lấy CSDL từ fiel xml . giả sử ta có fiel "cd_catalog.xml" có nội dung như sau:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<CATALOG>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD> 
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tyler</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
<TITLE>Greatest Hits</TITLE>
<ARTIST>Dolly Parton</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>RCA</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1982</YEAR>
</CD>
<TITLE>1999 Grammy Nominees</TITLE>
<ARTIST>Many</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Grammy</COMPANY>
<PRICE>10.20</PRICE>
<YEAR>1999</YEAR>
</CD>
<CD>
<TITLE>For the good times</TITLE>
<ARTIST>Kenny Rogers</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>Mucik Master</COMPANY>
<PRICE>8.70</PRICE>
<YEAR>1995</YEAR>
</CD>
<CD>

<TITLE>For the good times</TITLE>
<ARTIST>Kenny Rogers</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>Mucik Master</COMPANY>
<PRICE>8.70</PRICE>
<YEAR>1995</YEAR>
</CD> 
<TITLE>The very best of</TITLE>
<ARTIST>Cat Stevens</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>Island</COMPANY>
<PRICE>8.90</PRICE>
<YEAR>1990</YEAR>
</CD>
<CD>
<TITLE>Stop</TITLE>
<ARTIST>Sam Brown</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>A and M</COMPANY>
<PRICE>8.90</PRICE>
<YEAR>1988</YEAR>
</CD>

<CD>
<TITLE>Midt om natten</TITLE>
<ARTIST>Kim Larsen</ARTIST>
<COUNTRY>EU</COUNTRY>
<COMPANY>Medley</COMPANY>
<PRICE>7.80</PRICE>
<YEAR>1983</YEAR>
</CD>

<CD>
<TITLE>Red</TITLE>
<ARTIST>The Communards</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>London</COMPANY>
<PRICE>7.80</PRICE>
<YEAR>1987</YEAR>
</CD>
<CD>
<TITLE>Unchain my heart</TITLE>
<ARTIST>Joe Cocker</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>EMI</COMPANY>
<PRICE>8.20</PRICE>
<YEAR>1987</YEAR>
</CD>
</CATALOG>
File "show_CD.html" : để in thông tin CD ra màn hình.
<html><head>
<script type="text/javascript">
function showCD(str)
{
if (str=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","
get_CD.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form>
Select a CD:
<select name="cds" onchange="
show_CD(this.value)">
<option value="">Select a CD:</option>
<option value="Bob Dylan">Bob Dylan</option>
<option value="Bonnie Tyler">Bonnie Tyler</option>
<option value="Dolly Parton">Dolly Parton</option>
</select>
</form>
<div id="txtHint"><b>CD info will be listed here...</b></div>
</body>
</html>
Fiel "get_CD.php" để lấy thông tin CD từ file "cd_catalog.xml"
<?php
$q=$_GET["q"];
$xmlDoc = new DOMDocument();
$xmlDoc->load("cd_catalog.xml");
$x=$xmlDoc->getElementsByTagName('ARTIST');
for ($i=0; $i<=$x->length-1; $i++)
{
//Process only element nodes
if ($x->item($i)->nodeType==1)
{
if ($x->item($i)->childNodes->item(0)->nodeValue == $q)
{
$y=($x->item($i)->parentNode);
}
}
}
$cd=($y->childNodes);
for ($i=0;$i<$cd->length;$i++)
{
//Process only element nodes
if ($cd->item($i)->nodeType==1)
{
echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
echo($cd->item($i)->childNodes->item(0)->nodeValue);
echo("<br />");
}
}
?>
Tham khảo thêm : w3schools

XML


XML (viết tắt từ tiếng Anh eXtensible Markup Language, "Ngôn ngữ Đánh dấu Mở rộng") là ngôn ngữ đánh dấu với mục đích chung do W3C đề nghị, để tạo ra các ngôn ngữ đánh dấu khác. Đây là một tập con đơn giản của SGML, có khả năng mô tả nhiều loại dữ liệu khác nhau. Mục đích chính của XML là đơn giản hóa việc chia sẻ dữ liệu giữa các hệ thống khác nhau, đặc biệt là các hệ thống được kết nối với Internet. Các ngôn ngữ dựa trên XML (thí dụ: RDF, RSS, MathML, XHTML, SVG, GML và cXML) được định nghĩa theo cách thông thường, cho phép các chương trình sửa đổi và kiểm tra hợp lệ bằng các ngôn ngữ này mà không cần có hiểu biết trước về hình thức của chúng.
Vào giữa những năm 1990, các chuyên gia SGML đã có kinh nghiệm với World Wide Web (vẫn còn khá mới vào thời đó). Họ tin tưởng rằng SGML có thể cung cấp giải pháp cho các vấn đề mà Web đang gặp phải. Jon Bosak đưa ra ý kiến W3C nên tài trợ một chương trình mang tên "SGML trên Web".
XML cung cấp một phương tiện dùng văn bản (text) để mô tả thông tin và áp dụng một cấu trúc kiểu cây cho thông tin đó. Tại mức căn bản, mọi thông tin đều thể hiện dưới dạng text, chen giữa là các thẻ đánh dấu (markup) với nhiệm vụ ký hiệu sự phân chia thông tin thành một cấu trúc có thứ bậc của các dữ liệu ký tự, các phần tử dùng để chứa dữ liệu, và các thuộc tính của các phần tử đó. Về mặt đó, XML tương tự với các biểu thức S (S-expression) của ngôn ngữ lập trình LISP ở chỗ chúng đều mô tả các cấu trúc cây mà trong đó mỗi nút có thể có một danh sách tính chất của riêng mình.
Đơn vị cơ sở của XML là các ký tự theo định nghĩa của Universal Character Set (Bộ ký tự toàn cầu). Các ký tự được kết hợp theo các tổ hợp chuỗi hợp lệ để tạo thành một tài liệu XML. Tài liệu này gồm một hoặc nhiều thực thể, mỗi thực thể thường là một phần nào đó của các ký tự thuộc tài liệu, được mã hóa dưới dạng một chuỗi các bit và lưu trữ trong một tệp văn bản (text file).
Các tệp XML có thể dùng cho nhiều loại dữ liệu đa phương tiện. RFC3023 định nghĩa các loại "application/xml" và "text/xml", với ý rằng dữ liệu được biểu diễn bằng XML mà không nói gì đến ngữ nghĩa của dữ liệu.
Sự phổ biến của các phần mềm soạn thảo văn bản (word processor) đã hỗ trợ việc soạn thảo và bảo trì tài liệu XML một cách nhanh chóng. Trước XML, có rất ít ngôn ngữ mô tả dữ liệu với các đặc điểm đa năng, thân thiện với giao thức Internet, dễ học và dễ tạo. Thực tế, đa số các định dạng trao đổi dữ liệu thời đó đều chuyện dụng, có tính độc quyền, và có định dạng nhị phân (chuỗi bit thay vì chuỗi ký tự) khó dùng chung giữa các ứng dụng phần mềm khác nhau hay giữa các hệ nền (platform) khác nhau. Việc tạo và bảo trì trên các trình soạn thảo thông dụng lại càng khó khăn.
Bằng cách cho phép các tên dữ liệu, cấu trúc thứ bậc được phép, và ý nghĩa của các phần tử và thuộc tính có tính chất mở và có thể được định nghĩa bởi một giản đồ tùy biến được, XML cung cấp một cơ sở cú pháp cho việc tạo lập các ngôn ngữ đánh dấu dựa XML theo yêu cầu. Cú pháp chung của các ngôn ngữ đó là cố định — các tài liệu phải tuân theo các quy tắc chung của XML, bảo đảm rằng tất cả các phần mềm hiểu XML ít ra cũng phải có khả năng đọc (phân tích cú pháp - parse) và hiểu bố cục tương đối của thông tin trong các tài liệu đó. Giản đồ chỉ bổ sung một tập các ràng buộc cho các quy tắc cú pháp. Các giản đồ thường hạn chế tên của phần tử và thuộc tính và các cấu trúc thứ bậc được phép, ví dụ, chỉ cho phép một phần tử tên 'ngày sinh' chứa một phần tử tên 'ngày' và một phần tử có tên 'tháng', mỗi phần tử phải chứa đúng một ký tự. Đây là điểm khác biệt giữa XML và HTML. HTML có một bộ các phần tử và thuộc tính không mềm dẻo, chỉ có một tác dụng và nói chung là không thể dùng cho mục đích khác.
XML không hạn chế về việc nó được sử dụng như thế nào. Mặc dù XML về cơ bản là dạng text, các phần mềm với chức năng trừu tượng hóa nó thành các định dạng khác giàu thông tin hơn đã nhanh chóng xuất hiện, quá trình trừu tượng hóa này được thực hiện chủ yếu qua việc sử dụng các giản đồ định hướng kiểu dữ liệu (datatype-oriented schema) và khuôn mẫu lập trình hướng đối tượng (mà trong đó, mỗi tài liệu XML được thao tác như là một đối tượng). Những phần mềm như vậy có thể coi XML như là dạng text đã được tuần tự hóa chỉ khi nó cần truyền dữ liệu qua mạng.







PHP - MySQL

Kết nối CSDL:
Để làm việc với CSDL thì ta phải kết nối với CSDL đó, sau khi kết nối thành công rồi thì phải đóng kết nối lại. Ok
Cấu trúc kết nối CSDL:
            mysql_connect(servername,username,password);
Demo: giả sử chúng ta muốn kết nối sever trên " localhost" , tên server la " cu_ti", password  là "te" thì ta làm như sau: ( nhớ sau khi kết nối phải đống lại )
<?php
$con = mysql_connect("localhost","cu_ti","te");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
// some code
mysql_close($con);
?>
Tạo CSDL: để tao CSDL trong My SQL ta sử dụng cấu trúc sau:
        CREATE DATABASE database_name

Demo: giả sử ta tạo 1 bảng (table) có tên là "person", có 3 cột (column) : "FirtsName"  kiểu DL la char với độ dài 20 kí tự, "LastName" có kiểu DL la char với độ dài là 20 kí tự, "Age" có kiểu DL là int .
<?php
$con = mysql_connect("localhost","cu_ti","te");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
// Create database
if (mysql_query("CREATE DATABASE my_db",$con))
{
echo "Database created";
}
else
{
echo "Error creating database: " . mysql_error();
}
// Create table
mysql_select_db("my_db", $con);
$sql = "CREATE TABLE person
(
FirstName varchar(20),
LastName varchar(20),
Age int
)";
// Execute query
mysql_query($sql,$con);
mysql_close($con);
?>
Chèn CSDL: Dùng cấu trúc sau:
INSERT INTO table_name
VALUES (value1, value2, value3,...)
hoặc:
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)
Demo: giả sử ta có bảng CSDL như trên , bây h ta muốn nhập dữ liệu vào bảng đó. FirstName là: cu_ngay, cu_queo, LastName là : do, deo, Age : 17, 18 thì ta làm như sau:
<?php
$con = mysql_connect("localhost","cu_ti","te");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
mysql_query("INSERT INTO persons (FirstName, LastName, Age)
VALUES ('cu_ngay', 'do',17)");
mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('cu_queo', 'deo',18)");
mysql_close($con);
?>
Demo: giả sử nhập liệu từ Form của trang HTML  có tên "insert.html", sau khi nhấp nust " submit"  thì dữ liệu sẽ được chèn vào bảng DL ở trang "insert.php"

"insert,html" :
<html>
<body>
<form action="insert.php" method="post">
Firstname: <input type="text" name="firstname" />
Lastname: <input type="text" name="lastname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>
"insert.php" :
<?php
$con = mysql_connect("localhost","cu_ti","te");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$sql="INSERT INTO persons (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con);
?>
Xuất DL : Xuất  ra màn hình  (  cả table) .
Cấu trúc:
SELECT column_name(s)
FROM table_name
Demo: giả sử ta xuất kết quả của bảng DL trên ra màn hình, ta làm như sau:
<?php
$con = mysql_connect("localhost","cu_ti","te");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT * FROM persons");
echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['FirstName'] . "</td>";
echo "<td>" . $row['LastName'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($con);
?>
Xuất DL  Có DK :  tức là ta chỉ xuất những dòng nào của table thỏa điều kiện mà thôi.
Cấu trúc:
SELECT column_name(s)
FROM table_name
WHERE column_name operator value
Demo: xuất DL có "FirstName" là "cu_ngay".
<?php
$con = mysql_connect("localhost","cu_ti","te");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT * FROM persons
WHERE FirstName="cu_ngay");
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'] . " " . $row['LastName'];
echo "<br />";
}
?>
Xuất DL Theo Thứ Tự: tức là xuất DL tăng hoặc giảm theo value của 1 cột nào đó.
Cấu trúc:
SELECT column_name(s)
FROM table_name
ORDER BY column_name(s) ASC|DESC
Demo: xuất DL của bảng trên theo thứ tự tuổi (Age) tăng dần (ASC).
<?php
$con = mysql_connect("localhost","cu_ti","te");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT * FROM persons ORDER BY
Age");
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'];
echo " " . $row['LastName'];
echo " " . $row['Age'];
echo "<br />";
}
mysql_close($con);
?>
Cập nhật DL : tức là sau khi ta chỉnh  sửa (edit) DL thì ta phải cập nhật lạ DL.
Cấu trúc:
UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value
Demo: giả sử ta có bảng DL như trên, bây h muốn sửa lại tuổi của tên " cu_ngay do" là 19 thì ta làm như sau:
<?php
$con = mysql_connect("localhost","cu_ti","te");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
mysql_query("UPDATE persons SET
Age=19
WHERE FirstName='cu_ngay' AND LastName='do'");
mysql_close($con);
?>
Xóa DL: tức là xóa bỏ một số dòng DL của 1 table.
Cấu trúc:
DELETE FROM table_name
WHERE some_column = some_value
Demo: ta có bảng DL như ở trên xóa bỏ những tên nào có "LastName" là "do", thì ta làm như sau:
<?php
$con = mysql_connect("localhost","cu_ti","te");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
mysql_query("DELETE FROM persons WHERE
LastName='do'");
mysql_close($con);
?>

PHP- Upload File

Việc upload  1 file khá quan trong trong 1 số trang web, như diễnn đàn, forum, ...
Đầu tiên tạo 1 form  HTML  đẻ uplaod file như sau:
<html>
<body>
<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
Sau đó chúng ta dùng các hàm sau kiểm tra file upload:
$_FILES["file"]["name"] : tên file upload
$_FILES["file"]["type"] : kiểu / loại file upload
$_FILES["file"]["size"] : kích thươt file upload
$_FILES["file"]["tmp_name"] : thư mục chứa file upload
$_FILES["file"]["error"] : thông báo lỗi
File "upload_file.php" : có nội dung như sau:
<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Stored in: " . $_FILES["file"]["tmp_name"];
}
}
else
{
echo "Invalid file";
}
?>
Sau đó lưu fiel upload vao thư mực " upload" :

<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";


    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>



PHP - Mail Form

Trong PHP ta dùng hàm mail() để gủi Email, có cấu trúc như sau:
mail(to,subject,message,headers,parameters)
Trong đó: "to": địa chỉ Email cần gửi đến, "subject": chủ đề Email, "message" : nội dung Email, "headerr" : gửi đi phần head, "parameters": lấy giá trị .
Demo: Gủi Email
<html>
<body>
<?php
if (isset($_REQUEST['email']))
//if "email" is filled out, send email
{
//send email
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail("someone@example.com", $subject,
$message, "From:" . $email);
echo "Thank you for using our mail form";
}
else
//if "email" is not filled out, display the form
{
echo "<form method='post' action='mailform.php'>
Email: <input name='email' type='text' /><br />
Subject: <input name='subject' type='text' /><br />
Message:<br />
<textarea name='message' rows='15' cols='40'>
</textarea><br />
<input type='submit' />
</form>";
}
?>
</body>
</html>


Demo: kiểm tra email gửi có hợp lệ không
<html>
<body>
<?php
function spamcheck($field)
{
//filter_var() sanitizes the e-mail
//address using FILTER_SANITIZE_EMAIL
$field=filter_var($field, FILTER_SANITIZE_EMAIL);
//filter_var() validates the e-mail
//address using FILTER_VALIDATE_EMAIL
if(filter_var($field, FILTER_VALIDATE_EMAIL))
{
return TRUE;
}
else
{
return FALSE;
}

if (isset($_REQUEST['email']))
{//if "email" is filled out, proceed
//check if the email address is invalid
$mailcheck = spamcheck($_REQUEST['email']);
if ($mailcheck==FALSE)
{
echo "Invalid input";
}
else
{//send email
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail("someone@example.com", "Subject: $subject",
$message, "From: $email" );
echo "Thank you for using our mail form";
}
}
else
{//if "email" is not filled out, display the form
echo "<form method='post' action='mailform.php'>
Email: <input name='email' type='text' /><br />
Subject: <input name='subject' type='text' /><br />
Message:<br />
<textarea name='message' rows='15' cols='40'>
</textarea><br />
<input type='submit' />
</form>";
}

?>
</body>
</html>



Trẻ em biết nhiều kĩ năng công nghệ hơn là kĩ năng sống

Hãng bảo mật AVG vừa tiết lộ một bí mật về trẻ em trong lĩnh vực công nghệ hiện nay mà khi nghe đến các bậc cha mẹ cũng phải khá bất ngờ và thú vị.

Theo AVG, trẻ em có độ tuổi trung bình 11 trang bị rất nhiều kĩ năng dành cho người lớn khi nói đến công nghệ. Nói cách khác, chúng có thể thực hiện bất kì nhiệm vụ nào của người trưởng thành khi nói đến việc lướt web, tải về một tiện ích hoặc thậm chí còn có thể giải quyết các vấn đề máy tính phức tạp.

Cuộc khảo sát được thực hiện trên 4.000 phụ huynh có trẻ nhỏ tại 10 quốc gia. Kết quả nghiên cứu cho thấy có 7% phụ huynh cho rằng con của họ biết nhiều về Internet hơn là những gì mà họ biết.

Đầu năm nay, AVG cũng phát hành một nghiên cứu cho thấy trẻ em có thể thực hiện nhiều kĩ năng công nghệ cao hơn so với các kĩ năng sống cơ bản. Trong thực tế, 58% trẻ em trong độ tuổi từ 2-5 có thể chơi một trò chơi cơ bản trên máy tính, nhưng chỉ có 52% biết đạp xe đạp. Và mặc dù 63% trẻ em có thể sử dụng một máy tính nhưng chỉ có 20% trẻ là có thể tự bơi và 11% có thể biết buộc dây giày.

Tất cả những kiến thức công nghệ có thể chứng minh rằng những đứa trẻ đã bắt đầu mạo hiểm vào web. Trong nhiều năm nay, các tổ chức phụ huynh, chuyên gia an ninh mạng,... đã khuyến cáo các bậc cha mẹ nên giám sát con cái họ khi chúng sử dụng Internet và hạn chế không cho chúng tiếp xúc với các trang web chứa nội dung không lành mạnh.

Theo AVG, 72% các bậc cha mẹ thừa nhận rằng mình đã để con cái của họ xem những gì họ đang làm trên web. Không những vậy, 41% cha mẹ cho phép trẻ có thể sử dụng máy tính trong phòng ngủ của chúng và chỉ ra rằng họ không có biện pháp giám sát trẻ nhỏ sử dụng máy tính.

Không những vậy, 62% bậc cha mẹ cho phép trẻ em 10-13 tuổi có thể truy cập vào các trang mạng xã hội. Và mặc dù Facebook cho phép trẻ có độ tuổi 13 trở lên mới có thể sử dụng mạng xã hội nhưng 47% bậc cha mẹ nói rằng họ đã cho con mình tiếp xúc với mạng xã hội khi mới được 10 tuổi, con số này nhảy lên 53% với trẻ 11 tuổi.

JR Smith, Giám đốc điều hành của AVG cho biết rằng người lớn còn phải mất nhiều năm để tiếp xúc với công nghệ, nhưng trẻ em hiện nay chúng có thể điều hướng các tình huống mạng xã hội một cách dễ dàng, thậm chí là khá hoàn hảo.

Báo cáo cũng chỉ ra rằng, 43% trẻ em trong độ tuổi tử 10-13 dành hơn 2 giờ/ngày cho việc nhắn tin văn bản.

Theo CNET

Thứ Ba, 26 tháng 6, 2012

Trường đại học cũng đăng kí tên miền sex

Hệ thống tên miền dành cho nội dung khiêu dâm. xxx sẽ được triển khai rộng rãi từ ngày 6/12 nhưng đã thu hút nhiều khách hàng ít được mong đợi như các doanh nghiệp, trường học...

Trong số đó có thể kể đến missouri.xxx và missouritigers.xxx thuộc về "chủ nhân" là Đại học Missouri-Columbia hay washu.xxx, washingtonuniversity.xxx và wustl.xxx của Đại học Washington...

Tuy nhiên, người ta sẽ không thể tìm thấy những bức ảnh "mát mẻ" trên các trang này bởi đây chỉ là một hành động để bảo vệ thương hiệu của họ. Chẳng hạn, Đại học Washington trùng tên với nhân vật Washu trong serie truyện tranh nhạy cảm của Nhật nên khả năng họ vô tình trở thành nạn nhân là rất cao.

"Chúng tôi không muốn ai đó lấy tên trường để đăng kí tên miền .xxx rồi phát tán các nội dung không mong đợi. Chỉ có Chúa mới biết họ định đưa những gì lên đó", Terry Robb, Giám đốc công nghệ thông tin của Đại học Missouri-Columbia (Mỹ), giải thích.

Tên miền .xxx đang gây phiền toái cho cả các tổ chức không liên quan. Ảnh: FSC .

Domain cấp cao .xxx được tổ chức tên miền quốc tế ICANN phê chuẩn đầu năm nay với mục đích tạo "khoảng trời riêng" hay "khu đèn đỏ" cho ngành công nghiệp nội dung người lớn. Tuy nhiên, trước nỗi lo bị lợi dụng, tên miền thu hút cả những khách hàng tưởng chừng không liên quan như các viện hàn lâm, công ty hoạt động trong lĩnh vực công nghệ, xe hơi,... và sắp tới có thể sẽ là cả các nhân vật nổi tiếng.

"Mỗi tên miền .xxx có giá chỉ 200 USD. Tôi không thấy có bất cứ lí do gì các tổ chức lại không đầu tư đăng kí một vài domain để bảo vệ danh tiếng chính họ", Greg Jackson, Phó chủ tịch Educause, tổ chức phi lợi nhuận chuyên thúc đẩy ứng dụng công nghệ trong giáo dục, cho hay.

Ủng hộ quan điểm này, Đại học dược St. Louis College of Pharmacy cũng đã mua tên miền stlcop.xxx. Stlcop không phải cái tên dễ nhớ với một website khiêu dâm, nhưng "bạn biết đấy, chúng ta nên chọn giải pháp an toàn hơn là hối tiếc về sau", đại diện của trường này nhấn mạnh.

Việc khởi tạo tên miền cấp cao .xxx (ngang hàng với các domain như .com, .net,... ) đã gây ra cuộc tranh cãi kéo dài gần 7 năm. Nhiều người hi vọng việc phân loại sẽ giúp các nhà quản lí ngăn nhân viên xem nội dung xấu trong giờ làm việc và bố mẹ dễ dàng bảo vệ con cái trước những nguy hiểm rình rập trên Internet hơn.

Tuy nhiên, có ý kiến cho rằng hành động này không khác nào "vẽ đường cho hươu chạy" vì việc tìm kiếm web sex sẽ đơn giản hơn. Những người hoạt động trong lĩnh vực này lại lo sợ .xxx sẽ khiến cho việc chặn nội dung người lớn triệt để hơn, gây ảnh hưởng đến công việc kinh doanh của họ.

70% độc giả VnExpress.net ủng hộ sự ra đời của tên miền .xxx.

ICM Registry, công ty chịu trách nhiệm quản lí domain nhạy cảm này, cho hay họ đã nhận được 900.000 đơn "đặt chỗ" địa chỉ web chứa đuôi tên miền này tính đến cuối tháng 7/2011.

Theo VnExpress

Thứ Hai, 25 tháng 6, 2012

Diễn đàn gặp họa vì fan cuồng khẩu chiến

Sự lên ngôi của iPhone, Android phone kéo theo hàng triệu fan công nghệ và cũng từ ấy nổ ra hàng tỉ cuộc khẩu chiến mỗi khi có một thông tin bất lợi cho bất kì phe nào.

Không khó để đọc được những comment quá khích kiểu này tại các diễn đàn công nghệ.

Gạch, đá bay khắp forum

iPhone và các dòng điện thoại Android hay Windows Phone là những dòng sản phẩm công nghệ được ưa chuộng trên thế giới và Việt Nam không nằm ngoại lệ. Số lượng người dùng ngày một tăng, đồng nghĩa với việc các diễn đàn, cộng đồng fan của các thiết bị này cũng tăng nhanh theo cấp số.

Bên cạnh những thành viên tích cực với những đóng góp các bài viết hướng dẫn, thủ thuật cũng như cách đánh giá vấn đề một cách khách quan thì cũng còn đó những anti-fan quá khích đầy "máu lửa", sẵn sàng nhảy bổ vào bất cứ chủ đề nào lỡ "chê" sản phẩm ruột của mình.

Dọc các diễn đàn Tinhte, Cộng đồng Sohoa hay VoZ, đâu đâu cũng thấy topic lập lên của các phe ủng hộ và phản đối. Các cuộc khẩu chiến này thường xoay quanh các chủ đề Apple – Samsung hay Android – iOS, và thường nó diễn ra vô tận bởi phe nào cũng cho rằng mình đúng, sản phẩm mình tôn thờ là. .. số 1.

Nhẹ thì trích dẫn lại bài của nhau để bóc mẽ, nặng nề thì "tôm cá", "mày tao", "ngu dốt", bay ra ào ào khiến ngay cả những bên không liên quan cũng cảm thấy nóng mặt. Đến mức nhiều chủ đề vừa lập ra chưa đầy 24 giờ đã quá 30 trang với hàng trăm post và nếu Admin không can thiệp bằng cách khóa lại thì nó còn kéo dài đến vô tận.

Anh Quang Hà, thành viên mạng Tinhte cho biết: "Hôm trước mình mới đẩy lên 1 tin bài về việc Samsung thua kiện Apple tại Úc. Vừa post lên diễn đàn là lập tức đã có iFan nhảy vào comment với lời lẽ cực đoan theo kiểu 'đáng đời bọn sao chép, kiện cho tiệt đường làm ăn', và sau đó là những cuộc cãi vã dài vài chục trang trong chủ đề này".

Cuộc đua công nghệ giữa các hãng di động cũng như những thương vụ cạnh tranh trên thị trường đã tạo nên một bức tranh sôi động của thế giới công nghệ nhưng từ đó cũng tạo ra những "Chí Phèo" online kiểu mới, vốn là những fan cuồng của các thương hiệu sản xuất thiết bị.

Chỉ cần 1 topic lập ra với những thông tin tiêu cực về sản phẩm mình đang sử dụng hoặc có cảm tình là bất cần đúng sai, liền ngay sau đó "gạch đá" online bay vèo vèo giữa các bên.

Điểm hài hước là, có những thành viên khi tham gia comment trong các chủ đề này cũng chưa chắc đã từng sử dụng thiết bị Android nào nhưng cứ vì tâm lí bày đàn mà nhảy vào chê ỏng chê eo khi so với các thiết bị khác.

Anh Hải, admin diễn đàn công nghệ kể lại: "Có những thành viên còn quá khích đến mức sau màn đấu khẩu về HĐH di động trên diễn đàn thì quay ra mạt sát nhau ở bất cứ chỗ nào có mặt nhau. Vậy là vô hình chung các chủ đề trao đổi trở thành các bãi chiến trường với lời lẽ thô tục và không còn mang tính học hỏi, giao lưu".

Một điểm dễ thấy là, phần lớn các cộng đồng mạng Việt Nam vẫn chủ yếu mang tính bầy đàn và "hung hăng" một cách quá đáng. Chưa nói đến các chủ đề của các phe anti-fan lập ra khiêu khích nhau thì ngay cả với những bài viết biên dịch lại từ báo nước ngoài của những thành viên trung lập cũng trở thành nơi đấu khẩu của các dân "Pro" công nghệ nhưng lắm mồm và cực đoan.

Cuộc chiến giữa các fan cũng không kém phần khốc liệt so với sự đối đầu của các hãng sản xuất.

Fan cuồng cãi nhau, ngư ông đắc lợi

Ngư ông ở đây được hiểu là các nhà sản xuất và phân phối. Việc càng nhiều khẩu chiến, càng nhiều tranh cãi thì các nhà sản xuất càng được lợi bởi sản phẩm, thương hiệu được nhắc đến nhiều hơn, có lợi hơn về truyền thông.

Trong khi đó, các "Chí Phèo" online thì lại chẳng nhận ra rằng mình đang sôi máu, nóng mặt vì những thứ vô bổ và mất đi lí trí để suy xét, chỉ thấy khen/chê là nhảy vào quăng gạch bất kể đúng sai.

Trong nhiều trường hợp, các cuộc khẩu chiến được châm ngòi bởi những nickname mới toe và vô hình chung các thành viên khác lao vào mà không biết rằng mình đang dính bẫy của các nhân viên truyền thông của các hãng.

Phần thiệt hại chỉ có các quản trị diễn đàn gánh bởi ngoài việc các thành viên quá khích lăng mạ, xúc phạm nhau phải xử lí câu chữ để đảm bảo tính "sạch sẽ" của diễn đàn thì họ còn tốn tài nguyên dung lượng hosting.

Đồ công nghệ cũng là một thứ vật chất có yêu, có ghét, và vì vậy lẽ dĩ nhiên trong những cuộc so sánh đối đầu sẽ không bao giờ có hồi kết. Các hãng ngoài việc tạo sóng về dư luận thì cũng có được những ghi nhận, phản hồi hoàn toàn miễn phí để từ đó làm truyền thông, marketing cho sản phẩm mới.

Có lẽ đến giờ này mới hiểu tại sao Facebook không có nút Dislike (Không thích) như người ta kì vọng, bởi lẽ nếu xuất hiện chức năng này, mỗi note, mỗi comment trên các kênh truyền thông sẽ trở thành thảm họa khi người người đua nhau ấn nút "ghét".

Việc sành và sính đồ số thì rõ ràng không thể có một quy chuẩn chung, nhưng xét về mặt đạo đức, rõ ràng những "fan cuồng" nên có một cách nhìn nhận công tâm cũng như bình tĩnh hơn để tránh những tranh luận vô bổ và trở thành công cụ cho kẻ khác đắc lợi.

Theo VietNamNet

jQuery

Giới thiệu:

JQuery thư viện JavaScriptđa trình duyệt được thiết kế để đơn giản hóa lập trình phía máy người dùng của HTML  Đó là phát hành vào tháng 1 năm 2006 tại BarCamp NYC bởi John Resig. Được sử dụng bởi hơn 52% trong 10.000 truy cập nhiều nhất các trang web, jQuery là phổ biến nhất của thư viện JavaScript trong sử dụng ngày nay .
jQuery là miễn phí, mã nguồn mở phần mềm, kép cấp phép theo MIT Giấy phép GNU General Public License, phiên bản 2  jQuery của được để làm cho nó dễ dàng hơn để di chuyển một tài liệu, chọn DOM các yếu tố, tạo ra hoạt hình s, xử lý Sự kiện, và phát triển Ajax (lập trình) | Ajax ứng dụng . jQuery cũng cung cấp khả năng cho các nhà phát triển để tạo ra plug-in s trên đầu trang của thư viện JavaScript. Điều này cho phép các nhà phát triển để tạo ra trừu tượng hóa ở mức độ thấp tương tác và hình ảnh động, hiệu ứng tiên tiến và vật dụng cao cấp, chủ đề có thể. Cách tiếp cận mô-đun để thư viện jQuery cho phép tạo ra các công cụ mạnh mẽ và năng động web và các ứng dụng web.

Cách dùng:
Ta có 2 cách khai báo thư viện jQuery như sau:
C1: Dùng thư viện trực tuyến
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js">
</script>
</head>
C2: Tải thư viện jQuery về rồi để vào thư mục web ( Link:jQuery ,-> save as -> name: jquery.js)
<head>
<script type="text/javascript" src="jquery.js"></script>
</head>
Demo:
     <html>
<head><script type="text/javascript" src="jquery.js"></script><script type="text/javascript">$(document).ready(function(){  $("button").click(function(){    $("p").hide();  });});</script></head>
<body><h2>This is a heading</h2><p>This is a paragraph.</p><p>This is another paragraph.</p><button>Click me</button></body></html>
JQuery Events:
Xử lý sự kiện khi click
Cú pháp:

          $("button").click(function() {..some code... } )
$("p").hide();
Demo:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("p").hide();
});
});
</script>
</head>
<body>
<h2>This is a heading</h2>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button>Click me</button>
</body>
</html>

Ngoài thu viện chuẩn, chúng ta cũng có thể tạo ra cái mang phong cách riêng ta, khi do ta khai bao như sau:
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="my_jquery_functions.js"></script>
</head>
JQuery Effects:
jQuery hide(): khi ta click thì con trỏ " this" gọi phương thức " hide()" , những gì thuộc biến "p" sẽ thực thi " ẩn đi".
Demo:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("p").click(function(){
$(this).hide();
});
});
</script>
</head>
<body>
<p>Hay Clck de thay co su thay doi.</p>
<p>Click B!</p>
<p>Click A!</p>
</body>
</html>

Demo:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(".ex .hide").click(function(){
$(this).parents(".ex").hide("slow");
});
});
</script>
<style type="text/css">
div.ex
{
background-color:#e5eecc;
padding:7px;
border:solid 1px #c3c3c3;
}
</style>
</head>
<body>
<h3>Island Trading</h3>
<div class="ex">
<button class="hide">Hide me</button>
<p>Contact: Helen Bennett<br />
Garden House Crowther Way<br />
London</p>
</div>
<h3>Paris spécialités</h3>
<div class="ex">
<button class="hide">Hide me</button>
<p>Contact: Marie Bertrand<br />
265, Boulevard Charonne<br />
Paris</p>
</div>
</body>
</html>
jQuery slideToggle(): Dùng ẩn hiện 1 đối tượng nào đó

Demo:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$(".flip").click(function(){
$(".panel").slideToggle("slow");
});
});
</script>
<style type="text/css">
div.panel,p.flip
{
margin:0px;
padding:5px;
text-align:center;
background:#e5eecc;
border:solid 1px #c3c3c3;
}
div.panel
{
height:120px;
display:none;
}
</style>
</head>
<body>
<div class="panel">
<p>Because time is valuable, we deliver quick and easy learning.</p>
<p>At W3Schools, you can study everything you need to learn, in an accessible and handy format.</p>
</div>
<p class="flip">Show/Hide Panel</p>
</body>
</html>
jQuery fadeTo(): Ẩn đi 1 vùng nằm trong "style"
Demo:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("div").fadeTo("slow",0.25);
});
});
</script>
</head>
<body>
<div style="background:yellow;width:300px;height:300px">
<button>Click to Fade</button>
</div>
</body>
</html>
jQuery Callback:  dùng cấu trúc sau: $(selector).hide(speed,callback) , trong đó " selector" thuộc tính chọn, " speed" số giây ẩn đối tượng, "callback" hàm.
Demo:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("p").hide(1000,function(){
alert("The paragraph is now hidden");
});
});
});
</script>
</head>
<body>
<button>Hide</button>
<p>This is a paragraph with little content.</p>
</body>
</html>
Demo:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("p").hide(1000);
alert("The paragraph is now hidden");
});
});
</script>
</head>
<body>
<button>Hide</button>
<p>This is a paragraph with little content.</p>
</body>
</html>
jQuery HTML: dùng cấu trúc :$(selector).html(content), trong đó : thay những gì ở "selector" bằng thẻ html " content".

Demo:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("p").html("W3Schools");
});
});
</script>
</head>
<body>
<h2>This is a heading</h2>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button>Click me</button>
</body>
</html>
Demo:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("p").append(" <b>W3Schools</b>.");
});
});
</script>
</head>
<body>
<h2>This is a heading</h2>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button>Click me</button>
</body>
</html>
Demo:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("p").after(" W3Schools.");
});
});
</script>
</head>
<body>
<h2>This is a heading</h2>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button>Click me</button>
</body>
</html>
jQuery và CSS:  có các phương thức sau:
css(name): trả ve giá tri thuộc tính
css(name,value): lấy  thuộc tính và giá trị
css(properties); lấy nhiều thuộc tính và giá trị


Demo:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("div").click(function(){
$("p").html($(this).css("background-color"));
});
});
</script>
</head>
<body>
<div style="width:100px;height:100px;background:#ff0000"></div>
<p>Click in the red box to return the background color.</p>
</body>
</html>

Demo:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("p").css("background-color","yellow");
});
});
</script>
</head>
<body>
<h2>This is a heading</h2>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button>Click me</button>
</body>
</html>
Demo:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("p").css({"background-color":"yellow","font-size":"200%"});
});
});
</script>
</head>
<body>
<h2>This is a heading</h2>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button>Click me</button>
</body>
</html>
Demo:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("#div1").height("200px");
});
});
</script>
</head>
<body>
<div id="div1" style="background:yellow;height:100px;width:100px">HELLO</div>
<div style="background:yellow;height:100px;width:100px">W3SCHOOLS</div>
<button>Click me</button>
</body>
</html>
Demo:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("#div2").width("300px");
});
});
</script>
</head>
<body>
<div style="background:yellow;height:100px;width:100px">HELLO</div>
<div id="div2" style="background:yellow;height:100px;width:100px">W3SCHOOLS</div>
<button>Click me</button>
</body>
</html>

jQuery và Ajax: có 2 phương thức sau:

$(selector).load(url,data,callback): 
$.ajax(options):
Demo: tạo file "test1.txt" để ở thư mục web, file chứa cái khỉ khô gì cũng được tùy you, sau khi nhấp" Change Content " thi nó sẽ in nọi dung file "test1.txt" ra màn hình.
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("div").load('test1.txt');
});
});
</script>
</head>
<body>
<div><h2>Let AJAX change this text</h2></div>
<button>Change Content</button>
</body>
</html>

Demo: giống như trên nhưng có tí khác
<html><head><script type="text/javascript" src="jquery.js"></script><script type="text/javascript">$(document).ready(function(){$("button").click(function(){ $.ajax({url:"test1.txt", success:function(result){ $("div").html(result); }});});});</script></head><body><div><h2>Let AJAX change this text</h2></div><button>Change Content</button></body></html>
Tham khảo thêm : w3schools