Olympic - Euro 2012, Movie Online, Tools, Info Tech, Programing, Sport. Make Money, Ebooks
Monday, July 23, 2012
Lệnh AND và OR trong SQL (SQL p4)
Hai toán tử AND và OR nối hai hoặc nhiều điều kiện trong mệnh đề WHERE lại với nhau.
Toán tử AND sẽ hiển thị 1 dòng nếu TẤT CẢ các điều kiện đều thoả mãn. Toán tử OR hiển thị một dòng nếu BẤT KỲ điều kiện nào được thoả.
Bảng dữ liệu dùng trong ví dụ
LastName FirstName Address City
Hansen Ola Timoteivn 10 Sandnes
Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes
Sử dụng AND để tìm những người có tên là Tove và họ là Svendson:
SELECT * FROM Persons
WHERE FirstName = 'Tove'
AND LastName = 'Svendson'
Kết quả trả về:
LastName FirstName Address City
Svendson Tove Borgvn 23 Sandnes
Sử dụng OR để tìm những người có tên là Tove hoặc họ là Svendson:
SELECT * FROM Persons
WHERE firstname = 'Tove'
OR lastname = 'Svendson'
Kết quả trả về:
LastName FirstName Address City
Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes
Bạn cũng có thể sử dụng kết hợp AND và OR cùng với dấu ngoặc đơn để tạo nên các câu truy vấn phức tạp:
SELECT * FROM Persons WHERE
(FirstName = 'Tove' OR FirstName = 'Stephen')
AND LastName = 'Svendson'
Kết quả trả về:
LastName FirstName Address City
Svendson Tove Borgvn 23 Sandnes
Svendson Stephen Kaivn 18 Sandnes
Saturday, July 21, 2012
Câu lệnh UPDATE trong SQL (SQL p9)
Cú pháp:
UPDATE tên_bảng
SET tên_cột = giá_trị_mới
WHERE tên_cột = giá_trị
Ví dụ: bảng Person của ta như sau:
LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Storgt 67
Giả sử ta muốn bổ xung thêm phần tên cho người có họ là Rasmussen:
UPDATE Person SET FirstName = 'Nina'
WHERE LastName = 'Rasmussen'
Ta sẽ có kết quả như sau:
LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Storgt 67
Bây giờ ta lại muốn đổi tên và địa chỉ:
UPDATE Person
SET Address = 'Stien 12', City = 'Stavanger'
WHERE LastName = 'Rasmussen'
Kết quả sẽ là:
LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Stien 12 Stavanger
Câu lệnh DELETE trong SQL (SQL p10)
DELETE FROM tên_bảng
WHERE tên_cột = giá_trị
Ví dụ: Bảng Person của ta như sau:
LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Rasmussen Nina Stien 12 Stavanger
Ta xoá người có tên là Nina Rasmussen:
DELETE FROM Person WHERE LastName = 'Rasmussen'
Kết quả sau khi xoá:
LastName FirstName Address City
Nilsen Fred Kirkegt 56 Stavanger
Đôi khi ta muốn xoá tất cả dữ liệu trong bảng nhưng vẫn giữ lại bảng cùng với cấu trúc và tất cả các thuộc tính của bảng, ta có thể dùng câu lệnh:
DELETE FROM table_name
hoặc
DELETE * FROM table_name
Mệnh đề GROUP BY, mệnh đề HAVING trong SQL (SQL p13)
GROUP BY…
Mệnh đề GROUP BY…được thêm vào SQL bởi vì các hàm tập hợp (như SUM) trả về một tập hợp của các giá trị trong cột mỗi khi chúng được gọi, và nếu không có GROUP BY ta không thể nào tính được tổng của các giá trị theo từng nhóm riêng lẻ trong cột.
Cú pháp của GROUP BY như sau:
SELECT tên_cột, SUM(tên_cột) FROM tên_bảng GROUP BY tên_cột
Ví dụ sử dụng GROUP BY:
Giả sử ta có bảng Sales như sau:
Company Amount
W3Schools 5500
IBM 4500
W3Schools 7100
Câu lệnh SQL sau:
SELECT Company, SUM(Amount) FROM Sales
sẽ trả về kết quả:
Company SUM(Amount)
W3Schools 17100
IBM 17100
W3Schools 17100
Kết quả trả về ở trên đôi khi không phải là cái mà ta mong đợi. Ta thêm mệnh đề GROUP BY vào trong câu lệnh SQL:
SELECT Company, SUM(Amount) FROM Sales
GROUP BY Company
và kết quả trả về lần này sẽ là:
Company SUM(Amount)
W3Schools 12600
IBM 4500
Kết quả này đúng là cái mà ta mong muốn.
HAVING…
Mệnh đề HAVING…được thêm vào SQL vì mệnh đề WHERE không áp dụng được đối với các hàm tập hợp (như SUM). Nếu không có HAVING, ta không thể nào kiểm tra được điều kiện với các hàm tập hợp.
Cú pháp của HAVING như sau:
SELECT tên_cột, SUM(tên_cột) FROM tên_bảng
GROUP BY tên_cột
HAVING SUM(tên_cột) điều_kiện giá_trị
Ta sử dụng lại bảng Sales ở trên. Câu lệnh SQL sau:
SELECT Company, SUM(Amount) FROM Sales
GROUP BY Company
HAVING SUM(Amount) > 10000
sẽ trả về kết quả:
Company SUM(Amount)
W3Schools 12600
Gửi thư trong ASP.NET use C #
Failed to send email is 1 job normal date and write ra 1 program send thư real simple but not ai also known. Minh xin Giới Thiệu with you lớp Email this.
bằng cách sử dụng hệ thống;
bằng cách sử dụng System.Data;
sử dụng System.Configuration;
bằng cách sử dụng System.Web;
sử dụng System.Web.Security;
bằng cách sử dụng System.Web.UI;
sử dụng System.Web.UI.WebControls,
sử dụng System.Web.UI.WebControls. WebParts
sử dụng System.Web.UI.HtmlControls;
bằng cách sử dụng System.Net.Mail; EmailClass không gian tên { public class Email { công cộng chuỗi Send_Email (string SendFrom, chuỗi SendTo, chuỗi Subject, Body chuỗi) { thử { System.Text.RegularExpressions. regex regex = new System.Text.RegularExpressions.Regex (@ "\ w + ([- + '.] \ w +) * @ \ w + ([.] \ w +) * \ \ w + ([-] \ w + ) * "); bool result = Regex.IsMatch (to), nếu (kết quả == false) { trở lại "address email is not valid"; } khác { System.Net.Mail.SmtpClient smtp = new SmtpClient () System.Net.Mail.MailMessage msg = new MailMessage (SendFrom, Send To, Subject, Body); msg.IsBodyHtml = true; smtp.Host = "smtp.gmail.com" ;/ / Use SMTP of the gmail smtp.Send (msg); trở lại "Email has been sent to:" "." + SendTo +; } } catch { return ""; } } công chuỗi Send_Email_With_Attachment (: SendTo chuỗi, chuỗi SendFrom, chuỗi Subject, Body chuỗi, chuỗi AttachmentPath)
{
thử
{
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex (@ "\ w + ([- + \ w +) * @ \ w + ([-] \ w +) * \ \ w + ([-] \ w +) * ").;
chuỗi từ = SendFrom;
string = SendTo;
chuỗi chủ đề = Tiêu đề;
chuỗi cơ thể = cơ thể;
bool kết quả = Regex.IsMatch (để);
nếu (kết quả == false)
{
trở lại "address email is not valid.";
}
khác
{
thử
{
MailMessage em = new MailMessage (từ, chủ đề, cơ thể);
đính kèm đính kèm = đính kèm (AttachmentPath);
em.Attachments.Add (đính kèm);
em.Bcc.Add (từ);
System.Net.Mail.SmtpClient smtp = new SmtpClient ();
smtp.Host = "smtp.gmail.com" ;/ / For example process using SMTP of the gmail
smtp.Send (em);
return "";
}
catch (Exception ex)
{
trở lại ex.Message;
}
}
}
catch (Exception ex)
{
trở lại ex.Message;
}
}
công chuỗi Send_Email_With_BCC_Attachment (: SendTo chuỗi, chuỗi SendBCC, SendFrom chuỗi, chuỗi Subject, Body chuỗi, chuỗi AttachmentPath)
{
thử
{
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex (@ "\ w + ([- + '] \ w +) * @ \ w + ([-] \ w +) * \ \ w + ([-] \ w +) * ");....
chuỗi = SendFrom;
chuỗi = SendTo; / / Danh list email is short way nhau bởi mark ","
chuỗi chủ đề = Tiêu đề;
chuỗi cơ thể = cơ thể;
chuỗi bcc = SendBCC;
bool kết quả = true;
String [] ALL_EMAILS = to.Split (';');
foreach (string EmailAddress trong ALL_EMAILS)
{
kết quả = Regex.IsMatch (EmailAddress),
nếu (kết quả == false)
{
trở lại "address email is not valid.";
}
}
nếu (kết quả == true)
{
thử
{
MailMessage em = new MailMessage (từ, chủ đề, cơ thể);
đính kèm đính kèm = đính kèm (AttachmentPath);
em.Attachments.Add (đính kèm);
em.Bcc.Add (bcc ), System.Net.Mail.SmtpClient smtp = new SmtpClient (); smtp.Host = "smtp.gmail.com" ;/ / For example process of the use SMTP gmail smtp.Send (em); return ""; } bắt (Exception ex) { trở lại ex.Message; } } khác { return ""; } } catch (Exception ex) { trở lại ex.Message; } } } }
Kết nối Database Access bằng Dreamweaver (ASP)
Tạo ứng dụng Web ASP có kết nối cơ sở dữ liệu bằng Dreamweaver MX
Hiện nay, đa số các Website đều có kết nối đến cơ sở dữ liệu (CSDL, database) dựa trên các ngôn ngữ phía chủ (server side) như ASP, PHP, JSP… Điều này làm tăng khả năng tương tác giữa trang Web với người dùng, đồng thời cho phép Webmaster (người quản trị trang Web) cập nhật thông tin một cách dễ dàng. Tuy nhiên, để thiết kế những Website như thế đòi hỏi bạn phải có những kiến thức nhất định về lập trình Web và CSDL. May mắn thay, với Dreamweaver MX (DW MX), những người thiết kế Web nghiệp dư chỉ biết HTML thuần túy vẫn có thể tự tạo cho mình những Website tương tác dễ dàng thông qua các thao tác trực quan và dễ hiểu.
Bài này sẽ hướng dẫn bạn từng bước tạo một Website ASP đơn giản có tích hợp CSDL bằng DW MX. Qua đó bạn có thể áp dụng vào Website của mình để nó ngày càng chuyên nghiệp hơn.
Chuẩn bị trước khi thiết kế
Bạn phải “sắm sửa” các thứ như sau:
- Một ứng dụng Web Server (trình chủ Web) để thử nghiệm trang Web như PWS (Personel Web Server) hay IIS (Internet Information Server).
- Hệ CSDL như MS Access, SQL Server, Oracle…Ở đây, ta sẽ chọn hệ CSDL MS Access cho đơn giản.
- Cuối cùng, dĩ nhiên là DW MX.
Cấu hình hệ thống thành máy chủ
Web Trước hết, bạn cần cấu hình máy của mình thành máy chủ Web (Web server). Việc này khá đơn giản, bạn kiểm tra xem máy của mình đã cài đặt trình chủ Web hay chưa bằng cách xem trong ổ C có thư mục Inetpub không. Nếu không thấy, bạn phải cài đặt trình chủ Web tùy theo hệ điều hành (HĐH) mà mình đang dùng. Nếu giới hạn ở các HĐH Windows, ta có hai trường hợp đáng chú ý:
- HĐH cho máy chủ (Win 2K, NT Server, XP Pro): Khi cài đặt Windows, IIS sẽ được cài đặt sẵn theo mặc định như là một thành phần (component) của Windows. Nếu chưa có, bạn hãy vào Add/Remove Windows Components trong Control Panel để cài đặt thêm IIS.
- HĐH cho máy trạm (Win 98, Win NT Workstation) : Bạn có thể cài đặt PWS từ đĩa Win 98. Bạn cũng có thể tải xuống PWS từ Website của Microsoft. (Xin tham khảo thêm trong cuốn “PHP và Web tiếng Việt, dễ ợt!” do e-CHÍP ấn hành).
Trình chủ Web sẽ chuyển một thư mục trên ổ cứng của bạn thành thư mục gốc của Website, theo mặc định là thư mục C:\Inetpub\wwwroot\. Sau khi có những thứ cần thiết, bạn nên sao chép thư mục GettingStarted có sẵn trong DW MX (thư mục này nằm trong\Macromedia\DreamweaverMX\Samples\) vào thư mục làm việc của mình, chẳng hạn C:\MyWebsite.
Tạo Dreamweaver Site
Sau khi khởi động DW MX, bạn cần xác lập Dreamweaver Site, tương tự như tạo Project trong Visual Basic. Việc này giúp bạn tiết kiệm thời gian và công sức trong quá trình thiết kế. Bạn vào Site\New Site để mở cửa sổ Site Definition và chọn thẻ Advanced.
XÁC LẬP LOCAL INFO
- Site Name – Tên Site: Tương tự như Project Name trong VB6, chỉ có ý nghĩa định danh đối với người thiết kế. Bạn có thể đặt bất cứ tên gì mình thích.
- Local Root Folder – Thư mục gốc cục bộ: Đây là đường dẫn (path) của thư mục dùng để lưu trữ các trang Web của bạn trên ổ cứng. Vì ta sẽ thiết kế bằng ngôn ngữ ASP, bạn hãy chọn đường dẫn C:\MyWebsite\GettingStarted\Develop\asp\ bằng cách nhấp vào biểu tượng thư mục kế bên.
- Refresh Local File List Automatically – Làm tươi danh sách tập tin cục bộ một cách tự động: Đánh dấu vào hộp kiểm ở mục này để DW MX tự động cập nhật danh sách các tập tin khi ta thực hiện các thao tác chỉnh sửa bên ngoài DW MX.
- Default Images Folder – Thư mục chứa hình ảnh mặc định: Đây là đường dẫn của thư mục chứa các tập tin hình ảnh mà ta sẽ chèn (insert) vào trang Web. Sau này, nếu bạn chèn một hình ảnh nào đó vào trang Web thì DW MX sẽ tự động sao chép hình ảnh đó vào thư mục này. Bạn hãy chọn đường dẫn C:\MyWebsite\GettingStarted\Develop \asp\Assets\images\.
XÁC LẬP REMOTE INFO
- Access – Truy nhập: Chọn phương thức truy nhập để DW MX truy nhập đến thư mục chứa Website của bạn trên máy chủ Web. Ở đây ta sẽ chọn Local/Network vì máy chủ Web chính là máy của bạn.
- Remote Folder – Thư mục xa: Đây là đường dẫn của thư mục trên máy chủ Web mà ta sẽ tải Website của mình lên. Đường dẫn mặc định của thư mục này là C:\Inetpub\wwwroot\..
- Refresh Remote File List Automatically – Làm tươi danh sách tập tin từ xa một cách tự động: Chức năng này tương tự như Refresh Local File List Automatically nhưng thực hiện trên Remote Folder.
- Automatically upload files to server on save – Tự động tải tập tin lên máy chủ khi lưu: Khi bạn lưu trang Web, DW MX sẽ tự động đưa tập tin ấy vào Remote Folder.
XÁC LẬP TESTING SERVER
- Server Model – Loại trình chủ: Xác định loại ngôn ngữ (công nghệ) phía chủ mà DW MX tự động triển khai khi thiết kế. Bạn sẽ thực hiện phần lớn công việc thông qua các thao tác trực quan, còn DW MX sẽ viết mã (operate code) hộ bạn. Ở đây ta sẽ chọn ngôn ngữ phía chủ là ASP và ký mã (script) là VBScript.
Ở phần này, bạn nên chú ý mục URL Prefix – Tiền tố URL. Theo mặc định đó là http://localhost/mywebsite/. Khi xem thử Website của mình bằng trình duyệt, bạn phải nhập đường dẫn nêu trên vào ô địa chỉ của trình duyệt. Xác lập xong, bạn nhấn OK để hoàn tất.
Kết nối trang Web với cơ sở dữ liệu
Ta hãy thử dùng một CSDL mẫu của DW MX mang tên GlobalCar (CSDL về các dịch vụ cho thuê ô-tô). Sau này, để kết nối với CSDL khác, bạn nhấn nút Define và chọn CSDL cần thiết.
Cụ thể, bạn nhấn vào tiêu đề cửa sổ Application để mở rộng cửa sổ ấy rồi thực hiện các bước sau:
Nhấn vào nút cộng (+), chọn Data Source Name (DSN) từ trình đơn để mở cửa sổ Data Source Name (DSN).
Nhập Connection Name là myConn.
Chọn CSDL GlobalCar trong danh sách Data Source Name (DSN).
Chọn Using Local DSN ở mục Dreamweaver Should Connect.
Nhấn nút OK để hoàn tất.
Kể từ đây, bạn có thể lấy dữ liệu từ CSDL GlobalCar để đưa vào trang Web của mình. Để làm quen, ta thử dùng một trang ASP có sẵn, ràng buộc nó với CSDL GlobalCar. Bạn thực hiện các bước như sau:
Bấm kép vào tập tin locationMaster.asp trong cửa sổ Files để mở tập tin này. Giao diện của trang ASP này đã được thiết kế sẵn, ta chỉ việc hiển thị các dòng dữ liệu của CSDL GlobalCar mà thôi.
Chọn thẻ Binding trong cửa sổ Application. Sau đó nhấn vào nút cộng (+) và chọn Recordset (Query) để mở cửa sổ Recordset. Hiểu nôm na thì record set là tập hợp các cột trong bảng nào đó của CSDL. Tập hợp các cột này có thể trích từ nhiều bảng (Table hoặc Query/View) khác nhau.
Đặt tên (Name) cho Recordset là rsLocation.
Chọn myConn ở mục Connection.
Chọn thử bảng Locations ở mục Table.
Ở mục Columns, ta để chế độ hiển thị mặc định là All để hiển thị tất cả các cột trong bảng Locations. Tuy nhiên, bạn cũng có thể hiển thị các cột có chọn lọc bằng cách chuyển sang chế độ Selected và chọn những cột mà mình muốn (ấn giữ phím Shift hoặc Ctrl khi nhấn).
Nhấn OK để hoàn tất.
Nhấn vào dấu + phía trước Recordset(rsLocations) để “xổ” các nhánh con của nó. Mỗi nhánh chính là một cột trong bảng Locations.
Tạo bảng để chứa dữ liệu trên trang Web bằng cách chọn Insert\Table trên thanh trình đơn, nhập Row: 1, Columns: 1 rồi nhấn OK.
Kéo và thả nhánh CODE từ thẻ Bindings vào bảng mà bạn vừa tạo ra để hiển thị dữ liệu của cột CODE trong bảng đó.
Tùy biến cách hiển thị dữ liệu
Đến đây, ta chỉ hiển thị được dòng đầu tiên trong cột CODE. Nếu muốn hiển thị toàn bộ cột CODE, bạn phải dùng vòng lặp hiển thị từng dòng trong cột. Bạn làm như sau:
Nhấn vào thẻ
| ) trong thanh trạng thái dưới cửa sổ thiết kế rồi chọn Insert\Application Objects\Repeated Region trên thanh trình đơn để mở cửa sổ Repeat Region. Theo mặc định, Repeat Region hiển thị mỗi lần 10 dòng (Show 10 Records at a Time). Nếu bạn muốn hiển thị toàn bộ cột thì chọn Show All Records. Nhấn OK để hoàn tất. Tiếp theo, bạn cần thêm vào một thanh điều hướng dữ liệu (Navigation Bar) để hiển thị các dòng kế tiếp trong cột. Bạn di chuyển con trỏ xuống vị trí phía dưới bảng rồi chọn Insert\Application Objects\Recordset Navigation Bar trên thanh trình đơn để mở cửa sổ Recordset Navigation Bar. Bạn có thể giữ nguyên lựa chọn mặc định, nhấn luôn OK để chèn ngay thanh điều hướng vào trang. Bạn có thể chuyển các chuỗi “First”, “Previous”, “Next”, “Last” sang tiếng Việt, thành “Đầu – Trước – Sau – Cuối”. Thế là xong! Ta đã có một trang Web có khả năng hiển thị thông tin một cách linh hoạt từ CSDL đã chọn. Bạn hãy nhấn F12 để xem nó chạy như thế nào trên trình duyệt. Bạn thấy đó, nhờ thanh điều hướng dữ liệu, người dùng có thể duyệt qua dữ liệu trong cột CODE của CSDL GlobalCar. |
Làm phòng chat với ASP
Để tránh nhược điểm này, người ta nghĩ ra cách làm phòng chat bằng HTML thuần tuý. Nguyên tắc như sau:
Trên máy trạm bạn sẽ truy xuất 1 trang web có ít nhất 2 frame, một trong 2 frame đó sẽ có form cho phép bạn nhập dữ liệu.
Dữ liệu bạn nhập vào được chuyển về máy chủ và ghi xuống một biến ở cấp application (biến ở cấp application là biến mà mọi người đang kết nối với máy chủ đều truy xuất được).
Frame thứ hai sẽ lấy thông tin chat từ máy chủ qua biến cấp application này. Do nội dung chat luôn luôn thay đổi nên frame thứ hai sẽ được đặt ở chế độ làm tươi liên tục. Nếu bạn đặt thời gian làm tươi là 5 giây thì cứ sau mỗi 5 giây, bạn mới thấy được những câu chat mới được gửi từ những người khác trong phòng chat.
Tuy nhiên chương trình chat kiểu này có nhược điểm: cách truyền dữ liệu theo kiểu trang web (nghi thức HTTP) là đường truyền 1 chiều, nghĩa là chỉ có máy trạm là chủ động ra yêu cầu cần dữ liệu, máy chủ nhận được yêu cầu thì trả lời, không có trường hợp ngược lại là máy chủ yêu cầu dữ liệu từ máy trạm. Chính lý do này ta cần phải làm tươi (refresh) nội dung của trang web trên máy trạm.
Thực hiện:
Cấu trúc trang web
Trong bài viết này, chúng tôi sẽ hướng dẫn cách làm 1 phòng chat bằng ngôn ngữ ASP. Cửa sổ chat gồm có 3 phần: 2 phần như đã nói trên, đó là phần nội dung chat và phần nhập liệu. Phần thứ ba là hiển thị danh sách những người đang có mặt trong phòng chat.
Do cửa sổ chat có 3 phần nên ta cần 3 frame như sau:
ASP CHATROOM
Sorry, your browser does not support frames.
Bạn lưu đoạn mã trên vào file frames.html, đây là phần khung chính của toàn bộ chatroom. Trong đó frame thứ nhất tên là users sẽ chứa danh sách users, frame này sẽ gọi file users.asp trên server. Frame này sẽ làm tươi sau mỗi 25 giây nên cần có đoạn mã làm tươi như sau:
Frame thứ hai là nội dung chat, tên frame là chat và chỉ đến file chat.asp trên server được làm tươi sau mỗi 10 giây. Bạn đánh đoạn code sau đây và lưu thành file có tên chat.asp:
Frame cuối là để nhập dữ liệu tên là input sẽ gọi file input.asp trên server mỗi khi user nhập dữ liệu và nhấn phím enter. Vì cần phải nhập dữ liệu bằng form, nên file input.asp sẽ có chứa form như sau:
Đến đây bạn đã có tất cả 4 files: frames.html, users.asp, chat.asp, và input.asp. Bây giờ xin mời bạn xem tiếp cách tổ chức dữ liệu trên máy chủ.
Tổ chức dữ liệu
Danh sách users và nội dung chat sẽ được chứa trong array. Giả sử ta chỉ cần giữ lại 20 câu chat sau cùng, ta cần array 20 phần tử. Và để đơn giản, ta giới hạn số người chat nhiều nhất là 10 người ==> cần array 10 phần tử. Cả hai biến này đều ở cấp application vì mọi users đều truy xuất được. Ta đặt tên 2 biến này là Application(“content”) và Application(“users”). Do nội dung chat là 1 array được dùng xoay vòng, ta cần 1 biến Application(“pointer”) để chỉ phần tử nào là mới nhất trong array. Tuy nhiên, cần thêm 1 biến đếm số users đang hiện diện trong phòng chat, biến này kiểu integer: Application(“count”). Để truy xuất phần tử thứ n trong array Application(“content”) ta dùng cú pháp: Application(“content” & n).
Để tiện cho việc lập trình, mỗi user cần lưu trữ 1 biến cấp session chứa tên đăng ký lúc vào phòng chat: Session(“nick”).
Các biến cấp application và cấp session sẽ được khởi tạo trong global.asa như sau:
Sub Application_OnStart
Application(“CHATSIZE”) = 20
Application(“MAXUSER”) = 10
u_array = ARRAY(“”, “”, “”, “”, “”, “”, “”, “”, “”, “”)
REDIM u_array(Application(“MAXUSER”))
Application(“users”) = u_array
c_array = ARRAY(“”, “”, “”, “”, “”, “”, “”, “”, “”, “”)
REDIM c_array(Application(“CHATSIZE”))
Application(“content”) = c_array
Application(“count”) = 0
Application(“pointer”) = 0
End Sub
Sub Application_OnEnd
End Sub
Sub Session_OnStart
Session.TimeOut = 10
Session(“nick”) = “”
End Sub
Sub Session_OnEnd
End Sub
Lập trình cho máy chủ
Lập trình cho máy chủ gồm những phần nhỏ sau đây: thêm 1 câu chat mới vào nội dung, hiển thị nội dung của phòng chat, và hiển thị danh sách các user đang ở trong phòng chat.
1. Thêm câu chat mới:
<%
dim msg
dim current_pointer
msg = Request(“input_text”)
‘không cho phép dùng html trong phần nội dung chat
msg = Server.HTMLencode(msg)
‘thay thế các hình cười và khóc
msg = REPLACE(msg, “:)”, “
”)msg = REPLACE(msg, “:(“, “
”)‘nối thêm tên của người gửi vào
msg = “” & Session(“nick”) & “: ” & msg
‘Lưu câu chat mới vào array
Application.lock
current_pointer = Application(“pointer”)
Application(“content” & current_pointer) = msg
Application(“pointer”) = (current_pointer + 1) MOD Application(“CHATSIZE”)
Application.unlock
%>
Bạn nối phần mã này vào file input.asp. Lưu ý: biến pointer sẽ tăng lên 1 để chỉ phần tử kế tiếp trong array content, nhưng khi đến phần tử cuối cùng thì phải quay về phần tử đầu tiên là 0, vì trong đoạn code trên có phần modify cho CHATSIZE.
2. Hiển thị nội dung chat
Vì array content được dùng xoay vòng, nội dung chat sẽ được hiển thị từ phần tử pointer đến phần tử cuối trong array, sau đó từ phần tử 0 đến phần tử trước pointer (nếu pointer > 0).
<%
for i = Application(“pointer”) to Application(“CHATSIZE”) – 1
if Application(“content” & i) “” then
Response.write Application(“content” & i) & “
”
end if
next
if Application(“pointer”) > 0 then
for i = 0 to Application(“pointer”) – 1
if Application(“content” & i) “” then
Response.write Application(“content” & i) & “
”
end if
next
end if
%>
Bạn nối đoạn mã này vào phần BODY của file chat.asp. Lưu ý: sau mỗi câu chat cần phải xuống hàng mới do đó trong đoạn mã trên, ta nối thêm kí tự xuống dòng “
” cho mỗi câu chat.
3. Hiển thị danh sách users:
<%
Response.write “
Co ” & Application(“count”) & ” nguoi trong phong chat
”for i = 0 to Application(“count”) – 1
if Application(“users” & i) “” then
if Session(“nick”) = Application(“users” & i) then
Response.write “<” & Application(“users” & i) & “>
”
else
Response.write Application(“users” & i) & “
”
end if
end if
next
%>
Bạn chép đoạn mã này vào phần thân (body) của file users.asp. Lưu ý: tên của bạn sẽ được in nằm giữa hai dấu .
4. Logon và logoff:
Bây giờ đến phần khá quan trọng là logon và logoff. Khi người dùng vào phòng chat của bạn, trước họ sẽ được nhắc nhập vào tên “nickname” và khi người sử dụng rời khỏi phòng chat họ sẽ quay về trang web này. Ta cần phải có form để người dùng nhập nickname như sau:
ASP CHATROOM
Chao mung cac ban den voi ASP Chatroom
Moi ban nhap vao ten se dung trong luc chat (chi su dung chu, so va cac ki tu -, _)
Bạn lưu nội dung trên đây vào file index.asp, sau đó thêm đoạn mã bên dưới vào phần đầu của file để thêm người mới vào danh sách users khi logon:
<%
dim error
dim nick
dim numuser
dim current_pointer
dim error_msg(2)
nick = Request(“nickname”)
error_msg(0) = “—– ” & nick & “ vua vao chatroom —–”
error_msg(1) = “
—– Phong chat het cho, xin moi quay lai sau —–
”error_msg(2) = “
—– Ten nay da co nguoi su dung, xin chon ten khac —–
”‘chỉ thi hành đoạn mã này nếu user truy xuất trang này bằng nhấn nút submit trong form logon_form
if Request(“submit”) “” then
Application.lock
error = 0
numuser = Application(“count”)
if numuser >= Application(“MAXUSER”) then
error = 1 ‘chatroom đã đầy
else
if numuser > 0 then
for i = 0 to numuser – 1
if nick = Application(“users” & i) then
error = 2 ‘tên này đã có người dùng
exit for
end if
next
end if
end if
if error = 0 then
Application(“users” & numuser) = nick
Application(“count”) = numuser + 1
Session(“nick”) = nick
‘thêm câu chúc mừng user mới vào nội dung của chatroom
current_pointer = Application(“pointer”)
Application(“content” & current_pointer) = error_msg(0)
Application(“pointer”) = (current_pointer + 1) MOD Application(“CHATSIZE”)
Application.unlock
‘Chuyển user sang trang web có frame để chat
Response.Redirect “frames.html”
Response.End
else
Response.write error_msg(error)
Application.unlock
end if
end if
%>
Khi user ra khỏi phòng chat thì ta cần gọi file logoff để xóa tên user khỏi danh sách các user. Hơn nữa, ta cũng cần câu thông báo cho mọi người biết rằng user đó đã logoff. Lưu đoạn mã dưới đây vào file logoff.asp
<%
dim numuser
dim current_pointer
Application.lock
numuser = Application(“count”)
‘tìm vị trí của user này trong array chứa danh sách user
for i = 0 to numuser – 1
if Session(“nick”) = Application(“users” & i) then
index = i
exit for
end if
next
‘sau khi xóa user này xong, cần phải dồn array lại nếu đây không phải là user cuối cùng
if index < numuser – 1 then
for i = index to numuser – 2
Application(“users” & i) = Application(“users” & i + 1)
next
end if
‘thêm câu thông báo user mới vừa rời phòng chat
current_pointer = Application(“pointer”)
Application(“content” & current_pointer) = “—– ” & Session(“nick”) & “ vua roi chatroom —–”
Application(“pointer”) = (current_pointer + 1) MOD Application(“CHATSIZE”)
Application(“users” & numuser) = “”
Session(“nick”) = “”
Application(“count”) = numuser – 1
Application.unlock
Response.Redirect “index.asp”
Response.End
%>
Ta có thể đặt thêm nút nhấn trong file input.asp để user logoff như sau:
Tuy nhiên, nếu user không nhấn vào nút logoff mà đóng cửa sổ trình duyệt web lại thì sao? Để tránh trường hợp này, ta thêm đoạn mã javascript sau vào file frames.html:
ASP CHATROOM
Sorry, your browser does not support frames.
Đến đây, bạn có thể gộp các files trên lại và bỏ chung 1 vào thư mục nào đó và tạo 1 virtual folder trong IIS là có thể chạy được cái chatroom này rồi. Nhớ tạo ra 2 cái hình cười và mếu, bỏ vào thư mục con images!
SharePoint 2010 Site Directory Template
Microsoft Consulting Services UK released a CodePlex version of the Site Directory which can be downloaded at http://spsitedirectory2010.codeplex.com/
SQL Server Service Accounts
Setting Up Windows Service Accounts
Each service in SQL Server represents a process or a set of processes to manage authentication of SQL Server operations with Windows. This topic describes the default configuration of services in this release of SQL Server, and configuration options for SQL Server services that you can set during SQL Server installation.
Depending on the components that you decide to install, SQL Server Setup installs the following services:
SQL Server Database Services – The service for the SQL Server relational Database Engine.
SQL Server Agent – Executes jobs, monitors SQL Server, fires alerts, and enables automation of some administrative tasks.
Note
For SQL Server and SQL Server Agent to run as services in Windows, SQL Server and SQL Server Agent must be assigned a Windows user account. For more information about how to customize account information for each service, see How to: Install SQL Server 2008 R2 (Setup).
Analysis Services – Provides online analytical processing (OLAP) and data mining functionality for business intelligence applications.
Reporting Services – Manages, executes, creates, schedules, and delivers reports.
Integration Services – Provides management support for Integration Services package storage and execution.
SQL Server Browser – The name resolution service that provides SQL Server connection information for client computers.
Full-text search – Quickly creates full-text indexes on content and properties of structured and semistructured data to provide document filtering and word-breaking for SQL Server.
SQL Server Active Directory Helper – Publishes and manages SQL Server services in Active Directory.
SQL Writer – Allows backup and restore applications to operate in the Volume Shadow Copy Service (VSS) framework.
Important
Always use SQL Server tools such as SQL Server Configuration Manager to change the account used by the SQL Server or SQL Server Agent services, or to change the password for the account. In addition to changing the account name, SQL Server Configuration Manager performs additional configuration such as setting permissions in the Windows Registry so that the new account can read the SQL Server settings. Other tools such as the Windows Services Control Manager can change the account name but do not change associated settings. If the service cannot access the SQL Server portion of the registry, the service may not start properly.
Important
For Analysis Services instances that you deploy in a SharePoint farm, always use SharePoint Central Administration to change the server accounts for PowerPivot service applications and the Analysis Services service. Associated settings and permissions are updated to use the new account information when you use Central Administration.
The remainder of this topic is divided into the following sections:
Monday, July 16, 2012
HƯỚNG DẪN KIẾM TIỀN VỚI CO.CC TÊN MIỀN MIỄN PHÍ CÓ DNS TỐT NHẤT
Một số tên miền “độc” thì bạn phải trả phí. Giá trị nhỏ nhất là 3$/tên miền giá trị.
1. Nếu bạn đã có Tài khoản tại CO.CC thì:
Click vào (1) Returninng user, sign in here để đăng nhập và click vào (3) Referralsđể đăng ký kiếm tiền cùng CO.CC
2. Nếu chưa có tài khoản CO.CC thì:
Click vào (2) để đăng ký tài khoản, khi đăng ký xong thì làm như phần 1 trên
Sau khi click vào Referral trong bước 1, bạn vào màn hình và điền các thông tin như dưới:
Sau khi đăng ký xong, bạn sẽ được cấp một link giới thiệu của riêng mình ví dụ của mình là :http://www.co.cc/?id=182877
Bạn giới thiệu bạn bè đăng ký qua link đó sẽ được co.cc trả hoa hồng theo các mức như sau:
1. free domain: $0.10 USD
2. for sale: 10% ~ 40% commission. (40% for PayPal, 10% for CreditCard)
Nếu đăng ký các domain thông thường thì là 0.1$, còn nếu ai mua domain đẹp của co.cc qua link bạn thì bạn được trả 40% số tiền mà người mua trả cho co.cc.
Sau khi đã đăng ký Referral, bạn thực hiện các bước như hình dưới (tranghttp://www.co.cc/affiliates/affiliates.php của CO.CC)
- Sign up List: Kiểm tra List các domain đã đăng ký thông qua banner hoặc link
- Withdraw funds: Rút tiền về tài khoản Paypal khi đủ số tiền quy định tối thiểu là 1 USD (nếu chưa có tài khoản Paypal bạn tham khảo: Hướng dẫn Paypal từ A - Z cho MMO Việt)
Thư giãn cuối tuần 10/3/2012 - Hỏi xoáy đáp xoay (Số 75)
Hỏi xoáy đáp xoay 10/3/2012 - Hỏi xoáy đáp xoay, GS gửi thư chúc khán giả và nói lời chia tay chương trình. Gs Cù Trọng Xoay giới thiệu đồng nghiệp Xoày Trọng Chấm tiếp tục chương trình Hỏi xoáy đáp xoay. Cùng với sự trở lại của TS Xoáy
Channel http://www.youtube.com/soccaca
Đăng ký để nhận video nhanh nhất: http://goo.gl/L4Ty3
Google+ http://goo.gl/tGYDd
Facebook: http://facebook.com/xemtv
Twitter: http://twitter.com/xemtv
Hỏi xoáy đáp xoay: http://goo.gl/N5n1Q
Copy & bơm vá: http://goo.gl/y8vQs
Tiểu phẩm hài: http://goo.gl/aqv5y
Learn .NET and C# in 60 Days Lab 23(Day
HĐH ANDROID TIẾP TỤC THỐNG TRỊ TRÊN THỊ TRƯỜNG MỸ
Từ khoá: Paypal, alertpay, moneybookers, hoc viet blog, make money online, credit card, visa card, kiem tien, truc tuyen, online quang cao, giao dich, thanh toan, PayPal Viet, Cac hinh thuc giao dich truc tuyen, kiem tien truc tuyen, kiem tien online, thu thuat kiem tien, blogger, blogspot, seo, marketing, quang ba web,thu thuat blog, 2 Columns, 3 Columns, 4 Columns, Adbrite, Add-On, Firefox, Affiliate, Bidvertiser, Blog cho di động, Bloger-Blogspot, Blogger cơ bản, Code Javascript Hay, Cài đặt mẫu Templates Blogger, Công cụ cho blog, Công cụ hỗ trợ kiếm tiền, Công cụ tìm kiếm, Domain, Domain Free, Ebook khác, Ebook máy tính, Ebook SEO, Ebook thiết kế web, Ebook WordPress, Facebook, Firefox, Game cho blog, Gmail, Google, Google Adsense, Hosting, Hình nền cho blog, Kinh nghiệm kiếm tiền, Kiếm Tiền khác, Kiếm Tiền Online, Kiếm tiền PTC, Kiếm tiền từ Blog, Kiếm Tiền Từ Web, Kiến Thức, Kiến Thức MMO ,Liên Kết Link, Lướt web kiếm tiền, Lập Trình, MoneyBookers, Ngân Hàng Trực Tuyến, Nhạc nền cho blog, Paypal, Phim bộ, Quảng cáo CPM, Sao lưu và phục hồi, Seo Blog, Seo quảng bá website, Start Blog, Thao tác cơ bản, Theme cho Blogspot , Thiết kế Blogger, Thủ Thuật Blog, Thủ thuật nâng cao, Thủ thuật Y360, Thủ thuật Y360plus, Thủ thuật YMash, Tin công nghệ, Tin Tức MMO, Tiện ích cho blog, Tools Webmaster, Twitter, Tên miền cho blog, Tính năng mới, Tạo Blogger Từ A-Z, Tối ưu hóa blog, VISA Card, windows, Wordpress, Yahoo, YouTube, Âm nhạc cho blog, Đọc mail kiếm tiền, Ảnh Đẹp, Ảnh Độc Đáo, Ứng Dụng Online, Samsung Galaxy, Điện thoại Nokia,...