Archive for category PHP & MySQL

Chuong XXXXIV : Kinh nghiệm về tiếng Việt với PHP& MySQL!

Kinh nghiệm về tiếng Việt với PHP& MySQL!


Tối nay vui vui, kể lại cái kỷ niệm quái quỷ này vậy!

Hồi đó tôi có làm một cái ứng dụng Addressbook chơi và tất nhiên dùng PHP & MySQL. Khi ghi tên người dùng Tiếng Việt nên phải lưu trữ vào db Tiếng Việt.
Trong khi test tôi dùng MySQL Front để tạo một row rồi hiện thị, nhưng quái quỷ thay kết quả cho ra không đúng. VD Việt Nam —> Vi?t Nam.

Tôi thử thay đổi chracter set thành utf-8 thay cho latin1 + cái collation gì đó nữa. Rồi tất nhiên thêm đoạn:

Code:

<meta http-equiv=”Content-type” content=”text/html; charset=utf-8″>

vào đầu trang.

Nhưng kết quả vẫn như vậy. “Vi?t Nam” ! Bực!

Quay sang phpMyAdmin dùng để chỉnh, kết quả vẫn thế, xoay đi xoay lại những cái Character Set và Collation cũng không làm sao được? Tức vật, tên nước mình mà cái bọn PHP và MySQL không hiểu! Ghét thế chứ lại.

Tiếp theo tôi xoay sang tìm lại connect DB xem trong PHP có tùy chọn nào để connect nó encode UTF-8 luôn như kiểu ở Java không? Nhưng tất nhiên câu trả lời là “KHÔNG”.

Tức quá đi ngủ luôn.

Nhưng lên giường, mới nhớ ra còn một cách mình chưa dùng. Đó là cách đơn giản nhất: Viết Tiếng Việt vào $query rồi dùng PHP update vào DB.

Dậy thử luôn….
Tức vật vã luôn, nó lại được.

Đôi khi những cái rất đơn giản thì lại hiệu quả vậy mà mình không biết, cứ đi dùng đao to búa lớn phpMyAdmin và MySQL Front khiến việc nhập liệu bằng Tiếng Việt không được.

Cuối cùng thì, tôi cũng viết được chữ:

Việt Nam

bằng PHP và MySQL. Và tôi nhớ là sau đó tôi hướng dẫn được cho rất nhiều người.

p/s: nghĩ lại thấy hay hay nên viết. Đêm khuya viết vội anh em thông cảm.

 

ngocha85(UDS)

 

Làm gì mà vật vã vậy
đơn giản thôi chỉ cần lúc thiết kết database bằng PHPmyAdmin thì nhớ chọn
utf8-general-ci
sau đó lúc kết nối với database bằng file config.php
thì làm vầy

$db = mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db($name, $db) or die(mysql_error());
mysql_query(‘SET NAMES “utf8″‘,$db);

chỉ thêm cái đó vô thui thì về sao kg phải lo về tiếng việt.

lazzy(UDS)

Leave a comment

Chuong XXXXIII : Tài liệu eBooks PHP tham khảo

Tài liệu eBooks PHP tham khảo


Đây là những quyển sách PHP “khuyên dùng”, đã được “kiểm định chất lượng sản phẩm”, mọi người down về để tự mình nâng cao kiến thức nhé

Core Web Application Development with PHP and MySQL

ISBN: 0-13-186716-4
Publisher: Prentice Hall PTR
Published: 09/26/2005
Copyright: 2006

Code:

============
PHP Cookbook

Paperback: 624 pages
Publisher: O’Reilly Media; 1 edition (October 31, 2002)
Language: English
ISBN: 1565926811

Code:

===============================
Core PHP Programming, Third Edition

Paperback: 1104 pages
Publisher: Prentice Hall PTR; 3 edition (August 8, 2003)
Language: English
ISBN: 0130463469

Code:

================
PHP 5 for Dummies

Paperback: 416 pages
Publisher: For Dummies (April 30, 2004)
Language: English
ISBN: 0764541668

Code:

============
Learning PHP 5

Paperback: 348 pages
Publisher: O’Reilly Media; 1st edition (July 2004)
Language: English
ISBN: 0596005601

Code:

 

==========================================
PHP/MySQL Programming for the Absolute Beginner

Paperback: 440 pages
Publisher: Muska & Lipman/Premier-Trade; 1 edition (June 3, 2003)
Language: English
ISBN: 1931841322

Code:

Tạm thời là mấy quyển dành cho beginners như vậy đã, còn mấy quyển cho advance, nhưng không hiểu sao link chết hết. Mọi người cùng xem nhé

==========

Isheep(UDS)

Professional PHP Programming
cuốn này rất đáng để tham khảo đây hướng dẫn toàn diện và chi tiết

Download

Code:

 ==========================

Sách PHP dành cho Advance, mọi người cần có kiến thức căn bản trước khi đọc những sách này.

Advanced PHP for Web Professionals

Paperback: 368 pages
Publisher: Prentice Hall PTR; 1st edition (October 29, 2002)
Language: English
ISBN: 0130085391

Code:

=======================
Advanced PHP Programming

Paperback: 672 pages
Publisher: Sams; 1st edition (February 20, 2004)
Language: English
ISBN: 0672325616

Code:

==================
Essential PHP Security

Paperback: 109 pages
Publisher: O’Reilly Media; 1 edition (November 1, 2005)
Language: English
ISBN: 059600656X

Code:

================================================
Secure PHP Development: Building 50 Practical Applications

Paperback: 840 pages
Publisher: Wiley; Bk&CD-Rom edition (March 15, 2003)
Language: English
ISBN: 0764549669

Code:

… to be continued

==========

isheep(UDS)

Beginning PHP 5 and MYSQL: From Novice to Professional offers a
comprehensive introduction to two of the most popular Web application
building technologies on the planet: the scripting language PHP and the
MySQL database server. This book will not only expose you to the core
aspects of both technologies, but will provide valuable insight into how

Beginning PHP 5 and MYSQL explains the new features of the latest
releases of the world’s most popular Open Source Web development
technologies: MySQL 4 database server and PHP 5 scripting language. This
book explores the benefits, extensive new features, and advantages of the
object-oriented PHP 5, and how it can be used in conjunction with MySQL 4

This is the perfect book for the Web designer, programmer, hobbyist, or
novice that wants to learn how to create applications with PHP 5 and
MySQL 4, and is a great entrance point for Apress’s extensive spectrum of
PHP books planned for 2004.
Download

Code:

 =============

HoangLong(UDS)

Thấy mấy quyển này hy vọng có ích cho các bác

SQL Server 2000:

-http://rapidshare.de/files/6854592/HocSQL2000.pdf.html

Giới thiệu về Ngôn ngữ SQL:

-http://rapidshare.de/files/6854817/Ngoc_Ngu_SQL.doc.html

Cấu trúc và cú pháp của XML:

-http://rapidshare.de/files/6854846/XML.doc.html

PHP Tiếng Việt:

-http://rapidshare.de/files/6895283/PHPtiengviet.PDF.html

De_so(UDS)

Một vài tài liệu khác, vừa thấy bên box Ebooks:

VTC PHP Downloads [PHP Training, PHP Project Solutions + 1]

Smarty PHP Template Programming and Applications

Identical(UDS)

Leave a comment

Chuong XXXXII : Chạy XAMPP trên USB Flash hay CD-ROM

Chạy XAMPP trên USB Flash hay CD-ROM

 

Hướng dẫn sử dụng

AMPstart.exe v1.0.0.6
Lý Anh Tuấn, ĐHSP Tp.HCM

————————————————————-
Giới thiệu:

AMPstart là chương trình khởi động giúp XAMPP và XAMPPlite
có thể chạy trên USB flash và CD-ROM

AMPstart được đặt ở thư mục gốc của XAMPP hay XAMPPlite,
chạy cùng (hoặc không) với file cấu hình AMPstart.ini

XAMPP hay XAMPPlite có thể đặt trong thư mục tùy ý.

————————————————————-
Soạn thảo file AMPstart.ini:

; Bắt đầu file cấu hình —

[database] ; — Đoạn dùng cấu hình cho CSDL
overwrite=1 ;1=overwrite; 0=copy

[website] ; — Đoạn dùng cho cấu hình website
website=test ;tên thư mục htdocs\test
startup= ;mặc định là index.php

; Kết thúc file cấu hình —

Trong các đường dẫn trên, ký hiệu “\” hay “.” thay cho thư mục
gốc của ổ đĩa chứa file AMPstart.ini

Thí dụ: Cấu hình để webserver chạy trên USB flash

[database]
overwrite= ;chạy CSDL trên USB flash

[website]
website=test ;tên thư mục trong htdocs
startup= ;mặc định là index.php

Thí dụ: Cấu hình để webserver chạy trên CD-ROM

[database]
overwrite=1 ;chép đè dữ liệu nếu đã có

[website]
website=test ;tên thư mục trong htdocs
startup= ;mặc định là index.php

————————————————————-
Hoạt động:

AMPstart chạy dưới dạng một icon trong System Tray

Khi khởi động, AMPstart tìm file AMPstart.ini trong thư mục
chứa AMPstart, thư mục gốc của tất cả các ổ đĩa của máy tính
chạy AMPstart, trừ các ổ đĩa mạng.

Vì vậy, có thể đặt XAMPP hay XAMPPlite cùng AMPstart.exe
trên một ổ đĩa (thí dụ CD-ROM), AMPstart.ini, ứng dụng web
và CSDL trên một ổ đĩa khác (thí dụ USB flash).

Sau khi khởi động xong webserver, AMPstart mở trang được
định nghĩa tại khóa startup trong đoạn [website]. Tên file
mặc định là index.php

Khi đang chạy trên USB flash, CD-ROM, AMPstart khóa ổ đĩa
CD, USB flash tương ứng.

Double click lên icon AMPstart để shut down WebServer, ổ đĩa
tương ứng được mở khóa.

————————————————————-
History:

AMPstart.exe v1.006 dùng cho XAMPP và XAMPPlite v1.5.x và 1.4.x
AMPstart.exe v1.004 dùng cho XAMPP và XAMPPlite v1.4.x

————————————————————-
Chú thích:

XAMPPlite 1.5.x có dung lượng < 105MB (XAMPPlite 1.4.x < 80MB),
có thể chứa đủ trong một USB flash 128MB cùng với ứng dụng web
và CSDL.

Tốc độ đọc và ghi thực tế trên USB 2.0 tương đương 60x(150MB/s),
trên HDD tương đương 300x, trên CD dưới 10x

Thời gian khởi động WebServer của XAMPP 1.4.x nhanh hơn XAMPP
1.5.x, vì vậy version 1.4.x thích hợp hơn để chạy trên CD.

Chương trình AMPstart tự động kết thúc nếu thời gian khởi động
WebServer lâu hơn 120 giây.

 

Leave a comment

Chuong XXXXI : MySQL Cheat Sheet

MySQL Cheat Sheet

The MySQL cheat sheet is designed to act as a reminder and reference sheet, listing useful information about MySQL. It includes a list of the available functions in MySQL, as well as data types. It also includes a list of MySQL functions available in PHP, and a list of useful sample queries to select data from a database. A description of what is on the cheat sheet follows, or if you are impatient, you can go straight to the full size MySQL cheat sheet:

Functions in MySQL

Many developers are completely unaware that MySQL actually has a huge number of functions built in, to do everything from regular expression-based string comparisons to complicated mathematical calculations. The outsides of the cheat sheet list MySQL functions (note: a few of the more unusual and least used functions have not been included due to constraints of space).

MySQL Data Types

MySQL allows for many data types for columns, and it is very easy to forget what constraints there are on these data types. This is especially important when it comes to validation – many developers do not check the length of data before inserting it into a table. This section lists the data types available and their constraints.

MySQL Functions in PHP

PHP has a MySQL module and this is used by most PHP developers to connect to, and query, a MySQL database. This section lists the functions available in PHP for connecting to and managing a MySQL database.

Sample Queries

Finally, the cheat sheet includes a short list of sample queries and a brief explanation of each.

One.N(UDS)

Leave a comment

Chuong XXXX : MySQL. Bài 2. Cơ sở dữ liệu, bảng, dòng …

MySQL. Bài 2. Cơ sở dữ liệu, bảng, dòng …

 

Bài 1 chúng ta đã có cái nhìn tổng quát về một ứng dụng web động và chức năng, tầm quan trọng của MySQL. Để tất cả mọi người có thể hiểu rõ hơn, kể cả những người thậm chí còn chưa biết cơ sở dữ liệu hoạt động và quản lý như thế nào, Nhím sẽ hướng dẫn trực quan về MySQL.

Đầu tiên. để có thể thử nghiệm các script cũng như những minh họa trong bài học này, bạn phải cài một webserver trên máy mình. ( Chú ý đọc lại bài viết về XAMPP của TXP Lover trong box này … Thanks bác ý 1 cái thì càng tốt ).

Nhím giới thiệu một chút về XAMPP nhé. Sau khi cài xong XAMPP. Chạy xampp-control.exe sau đó click Start trong lựa chọn Apache và MySQL. Có một chú ý nhỏ ở đây : Sau khi click start, hãy chú ý bên cạnh nút này sẽ xuất hiện một thông báo nhỏ Running. Nếu không xuất hiện thông báo này thì có nghĩa là Apache và MySQL chưa hoạt động. Lý do thường là vì thư mục hiện thời không phải là thư mục chứa xampp ( VD của Nhím là D:\xampp – Xem hình ).

ậy là xong bước khởi động. Cái này thì chắc hoh cần nói nhiều. Hì.
Để bắt đầu thực hiện các truy vấn đối với các cơ sở dữ liệu, bạn có thể dùng phpMyAdmin : ( link : hxxp://localhost/phpmyadmin ). Nhưng Nhím không khuyến khích sử dụng cái này để học bởi nó chỉ có ích khi bạn muốn sửa một cơ sở dữ liệu có sẵn hoặc đơn giản, bạn … lười – không muốn học :P .

Các bạn nên dùng một tool của chính những người viết ra mySQL. Đó là mySQL querry browse và mySQL admin.

Đây là link chứa info ( và cả link download ;) )

http://mysql.com/downloads/query-browser/1.1.html
http://mysql.com/downloads/administrator/1.1.html

Rùi. Bi h thì cài mySQL querry browse lên và chạy ứng dụng. Bạn sẽ gặp một màn hình chào hỏi như thie này này :

Nhập thông tin cần thiết vô. Nó sẽ hiện ra thông báo rằng bạn cần phải nhập default schemas nhưng cái này ko quan trọng lắm. Cứ OK, Next, Yes
Wow … Đây là màn hình làm việc …

Giới thiệu chút xíu nha. Phần trên cùng là nơi dành cho truy vấn ( Chúng ta sẽ phải gõ rất nhiều ở đây ). Khoảng trắng to nhứt ở dưới là khu vực chứa kết quả của truy vấn. Bên phải là danh sách database và các hướng dẫn truy vấn.

Vậy là xong về vấn đề soft nha.

Bi h Nhím sẽ nói qua về cách tổ chức cơ sở dữ liệu. Trước hết, ở Title bạn thấy j` nào ? root@localhost:3306. Như vậy ta có thể tổ chức cơ sở dữ liệu dựa theo các account. Account root là account có nhiều quyền nhất. Mỗi account có thể quản lý nhiều database khác nhau. Và mỗi database cũng có thể được quản lý bởi nhiều account. Người ta gọi đây là các quan hệ liên kết.

Hic lại busy

 

Nhím(UDS)

Leave a comment

Chuong XXXIX : MySQL . Bài 1. Mở đầu về MySQL.

MySQL . Bài 1. Mở đầu về MySQL.

 

“Thầy” TXP Lover chăm chú dạy PHP quá nên Nhím hoh dám làm phiền.

Chưa thấy thầy nhắc chút xíu nào đến MySQl trong khi có thể nói rằng PHP và MySQL là hai phần không thể thiếu khi viết một ứng dụng web, nên Nhím mạo phép post một giáo trình dạy MySQL nhé. Giáo trình này tuy tách biệt hẳn với giáo trình dạy PHP của TXP tuy nhiên lại rất gắn bó với PHP. ( Bởi vì đây là kết hợp PHP với MySQL mà )

Trước hết hãy xem một ứng dụng web động sẽ làm việc như thế nào nhé.

Khi một ai đó truy nhập đến trang của bạn ( giả sử trang của Nhím nhá : NhimOnline.com ) qua các web browser ( trình duyệt ) nó sẽ gửi 1 request lên Server ( IIS, Apache … ) để nhận được thông tin về trang web mình đang truy cập.

Web Server sẽ request nội dung từ Middleware ( các trình biên dịch VD như PHP, ASP … ) để output HTML cho người duyệt web.

Các trình biên dịch lại lấy dữ liệu từ Relation Database ( cơ sở dữ liệu. VD : MySQL, MSSQL, MS Access … )

Sau đó khi dữ liệu đã được tải về, các trình biên dịch sẽ xử lý thông tin. ( VD như lọc tin, thêm dữ liệu hoặc đơn giản là định dạng lại để xuất ra HTML )

Rùi gửi thông tin đã xử lý cho Web Server. Lúc này, Web Server mới gửi thông tin HTML cho người duyệt web.

Tất cả những công việc trên gọi chung là Frame Work ( FW ). FM tối ưu là điều rất quan trọng khi viết một ứng dụng web. Nếu FM không tối ưu ( một số công đoạn nào đó ) thì sẽ dẫn đến một số hậu quả như : Ứng dụng dễ bị tổn thương ( hacker có thể lợi dụng để tấn công DDos bởi vì bạn có thể nhận thấy rằng mỗi công đoạn có rất nhiều request giữa các thành phần ), tốn nhiều tài nguyên ( mỗi lần request lên server, máy chủ sẽ phải dành 1 phần CPU cho ứng dụng web của bạn. Thường thì rất nhỏ nhưng nếu không biết cách xử lý, server có thể quá tải … mà quá tải thì … tò te tí te )

Hic ! Hơi lan man 1 chút zùi. Nhưng muh những điều này rất quan trọng.

Thui quay lại chủ đề chính : MySQL.

1. MySQL là gì ?

Theo rất nhiều tài liệu thì MySQL là relational database management system ( RDBMS ) tạm dịch là hệ thống quản lý cơ sở dữ liệu.
Khá nhiều người cho rằng MySQL là một database ( một cơ sở dữ liệu ) nhưng thực sự thì không phải vậy. Vì sao ? Vì MySQL không những chứa dữ liệu mà nó còn cho phép người dùng tìm kiếm, xử lý, sắp xếp … dữ liệu. Và nói chung là quản lý dữ liệu.

MySQL hỗ trợ nhiều người dùng, với nhiều quyền khác nhau ( VD như chỉ được phép thêm dữ liệu mà không được phép xóa … ) nên có độ bảo mật khá cao.
Cũng giống như rất nhiều RDBMS khác, MySQL sử dụng các truy vấn theo chuẩn SQL ( Structure Query Language – Ngôn ngữ truy vấn có cấu trúc ).

So với MSSQL hay MS Access thì MySQL được đánh giá là có tốc độ cao hơn, bảo mật tốt hơn. ( Thường thì Nhím chỉ thấy lỗi SQL Injection chỉ qua được MSSQL hay MS Access chứ rất khó để qua mặt được MySQL . Về cách bảo mật các query SQL, Nhím sẽ post sau nhé ).

Vậy thui đã. Hum sau Nhím post tiếp. Bận mất òi !

 

Nhím(UDS)

 

Leave a comment

Chuong XXXVIII : Xâu – Các phép toán thường gặp

Xâu – Các phép toán thường gặp

 

Tớ xin nhắc lại một cách ngắn gọn: Xâu là một tập hợp các ký tự. Ví dụ “abc”, “sadfsks12dsfsdfjkee123″ có thể coi là một xâu. Trong PHP, xâu được thể hiện bằng mã ký tự 8 bit (8-bit character code) và được coi là nằm trong bảng mã ISO-8859-1.

Giờ ta hãy xem xem xét một số phép toán thường gặp trên xâu:

1. strlen – lấy độ dài 1 xâu

Có lẽ các bạn cũng dễ dàng đoán được, strlen là string length – độ dài xâu. Cách sử dụng hàm strlen() rất đơn giản:

PHP Code:

<?php
echo strlen(“Updatesofts”);
?>

Kết quả in ra sẽ là 11 – số ký tự trong xâu “Updatesofts”.

2. trim – cắt bỏ phần thừa trong xâu

Hàm trim() nhận tham số là 1 xâu và nó sẽ loại bỏ mọi khoảng trắng (whitespace) bắt đầu và kết thúc xâu. Cần chú ý ở đây, khoảng trằng ko chỉ bao gồm dấu cách (” “, mang mã ASCII 32) mà nó còn gồm:
– Tab (“\t”, mã ASCII 9)
– Dấu xuống dòng (“\r” và “\n”, mã tương ứng 10 và 13)
– Ký tự NULL (“”, mã 0)
– Tab dọc (vertical tab – mã 11). Dấu này giờ là “của hiếm”. ấu

Ví dụ:

PHP Code:

<?php
$str = ” \t\t\t\t \nXâu này lắm thứ linh tinh thế nhở \r\n \t \t “;
echo trim($str);
?>

Kết quả output ra hoàn toàn có thể đoán được: “Xâu này lắm thứ linh tinh thế nhở”

3. ltrim và rtrim

Sau khi biết về hàm trim(), chắc hẳn bạn sẽ đặt câu hỏi: Thế nhỡ tớ chỉ muốn cắt bỏ mấy phần linh tinh ở đầu/cuối xâu thôi thì sao?
Trả lời: Hoàn toàn có thể. Hãy dùng ltrim() và rtrim() – bạn sẽ thik ngay mà

ltrim dùng để bỏ các phần linh tinh bắt đầu xâu.
rtrim dùng để bỏ các phần linh tinh kết thúc xâu.

4. strpos – tìm kiếm trong xâu

Hàm strpos() nhận 3 tham số:
1. 1 xâu
2. xâu cần tìm trong xâu trên
3. bắt đầu tìm từ ký tự thứ mấy trong xâu, mặc định là 0

Ví dụ strpos(“Updatesofts”, “Update”) sẽ trả về kết quả là 0. strpos(“ABCABC”, “A”, 2) sẽ trả về kết quả là 3.

Vậy nếu ko tồn tại xâu cần tìm thì sao? Đơn giản lắm bạn ạ, kết quả trả về sẽ là FALSE.

Một điều cần chú ý nữa: Nếu vị trí bắt đầu tìm là số âm (ví dụ -1), PHP sẽ tìm kiếm từ cuối xâu trở lại (ngược với cách tìm mặc định)

Giờ hãy xét 1 ví dụ:

PHP Code:

<?
$res = strpos($haystack, $needle);
if ($res == FALSE) {
echo “Ko thấy!”;
} else {
echo “Thấy òi!”;
}
?>

Bạn có $haystack là “Updatesofts”, $needle là “Up”, hỏi PHP sẽ echo ra cái gì? Bạn đoán là “Thấy òi” đúng ko?

Tiếc là sai rồi bạn ạ Kết quả là “Ko thấy”, vì $needle được tìm thấy ở ĐẦU $haystack, nghĩa là vị trí thứ 0, mà 0 lại đồng nghĩa với FALSE

Khá là confusing phải ko hả bạn?

Để xử lý trường hợp này, ta sẽ dùng toán tử so sánh === thay vì == (bằng bằng bằng thay vì bằng bằng ). PHP sẽ kiểm tra cả giá trị và kiểu của biến, do đó 0 và FALSE sẽ là 2 khái niệm hoàn toàn khác nhau và vấn đề đã được giải quyết gọn ghẽ.

5. substr – tách (extract) 1 phần trong xâu

Cú pháp của hàm substr() như sau:

substr(xâu, vị trí bắt đầu, [số ký tự - nếu cần])

Ví dụ: substr($str, 1) trả về xâu bắt đầu từ ký tự thứ 1. substr($str, 3, 2) trả về 2 ký tự của xâu bắt đầu từ ký tự thứ 3.

Cũng như strpos, tham số thứ 2 có thể là âm. Khi đó PHP sẽ xử lý ngược từ cuối.

Trên đây là 5 hàm thường gặp khi xử lý xâu trong PHP. Hiển nhiên việc liệt kê tất cả các hàm là impossible, vì vậy nếu bạn cần thêm về các hàm xử lý xâu trong PHP, hãy tìm đến PHP.net:

http://www.php.net/manual/en/ref.strings.php

Coming Up Next: Sử dụng Regular Expression để tìm kiếm và thay thế trong xâu.

identical(UDS)

 

Leave a comment

Follow

Get every new post delivered to your Inbox.