intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Cách định dạng mã nguồn mở PHP (Personal Home Page) phần 9

Chia sẻ: Sdfasfs Sdfsdfad | Ngày: | Loại File: PDF | Số trang:15

75
lượt xem
8
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Để đơn giản hoá các đối tượng Table trong cơ sở dữ liệu Test, chúng tôi chỉ trình bày một vài phát biểu SQL dạng Create Table, các Table khác bạn có thể tìm thấy trong cơ sở dữ liệu đính kèm.

Chủ đề:
Lưu

Nội dung Text: Cách định dạng mã nguồn mở PHP (Personal Home Page) phần 9

  1. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = 'Testlog', FILENAME = 'c:\mssql7\data\Testlog.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) GO Ñeå ñôn giaûn hoaù caùc ñoái töôïng Table trong cô sôû döõ lieäu Test, chuùng toâi chæ trình baøy moät vaøi phaùt bieåu SQL daïng Create Table, caùc Table khaùc baïn coù theå tìm thaáy trong cô sôû döõ lieäu ñính keøm. Ví duï 8-32: Taïo moät soá baûng trong Test /* Taïo baûng danh saùch khaùch haøng thöôøng xuyeân */ CREATE TABLE tblcustomers ( CustID int(3) unsigned NOT NULL auto_increment, Username varchar(20) NOT NULL DEFAULT '' , Password varchar(10) NOT NULL DEFAULT '' , CustName varchar(50) , Address varchar(100) , Tel varchar(20) , FaxNo varchar(10) , Email varchar(50) , Contact varchar(50) , CountryCode char(3) , ProvinceCode char(3) , PRIMARY KEY (CustID), INDEX CustID (CustID) ); /* Taïo baûng hôïp ñoàng mua haøng qua maïng */ CREATE TABLE tblorders ( OrderID int(3) NOT NULL auto_increment, OrderDate date , CustID int(11) , Description varchar(100) DEFAULT '0' , TranID tinyint(3) DEFAULT '0' , PaymentID tinyint(3) DEFAULT '0' , Amount float DEFAULT '0' , ShipCost float DEFAULT '0' , TotalAmount float DEFAULT '0' , PRIMARY KEY (OrderID), INDEX OrderID (OrderID) ); /* Taïo baûng hôïp ñoàng chi tieát mua haøng qua maïng */ CREATE TABLE tblorderdetails ( ItemID int(3) unsigned DEFAULT '0' , OrderID int(3) unsigned DEFAULT '0' , No tinyint(3) unsigned DEFAULT '0' , Qtty int(3) unsigned DEFAULT '0' , Price int(3) unsigned DEFAULT '0' , Discount int(3) unsigned DEFAULT '0' , Amount bigint(3) unsigned DEFAULT '0' ); Giaùo vieân: Phaïm Höõu Khang
  2. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Moät soá quy ñònh khi thieát keá Table 6.7.4. Teân coät - Column Name Ñaët teân coät cuõng gioáng nhö ñaët teân baûng, coù raát nhieàu quy taéc ñaët teân (nhö ñaõ trình baøy ôû treân phaàn table), nhöng khuyeán khích baïn neân theo moät soá quy taéc cô baûn sau: Teân coät baét ñaàu chöõ hoa, coøn laïi baèng chöõ thöôøng. Teân ngaén goïn vaø ñaày ñuû yù nghóa. Khoâng neân ñaët teân coät coù khoaûng traéng, sau naøy baïn seõ gaëp nhöõng phieàn toaùi khi tham chieáu ñeán coät ñoù. Khoâng ñaët teân coät truøng vôùi nhöõng töø khoaù, töø daønh rieâng, vaø nhöõng kyù töï ñaëc bieät nhö nhöõng pheùp toaùn hay toaùn töû khaùc. Chuù yù, neân ñaët teân coät cuøng teân nhöõng coät coù quan heä vôùi nhöõng baûng khaùc trong cuøng cô sôû döõ lieäu, giuùp deã hieåu vaø traùnh bò nhaàm laãn. Moät soá ngöôøi thích theâm vaøo daáu gaïch chaân (_) ñeå phaân bieät yù nghóa hay teân goïi cuûa coät, ñieàu naøy laø tuøy vaøo sôû thích cuûa baïn. Tuy nhieân chuùng toâi khoâng thích qui taéc naøy. Nhöng ñoái vôùi kinh nghieäm laäp thieát keá xaây döïng cô sôû döõ lieäu thì baïn khoâng neân duøng daáu gaïch döôùi _, vaø dó nhieân trong nhieàu tröôøng hôïp khaùc baïn seõ caûm thaáy khoù chòu khi theâm moät daáu _ trong teân cuûa ñoái töôïng cuûa cô sôû döõ lieäu. Maëc duø khoâng coù vaán ñeà gì cho cuù phaùp hay caùc phaùt bieåu tham chieáu ñeán chuùng, nhöng baïn seõ thaáy taïi sao chuùng ta khoâng neân duøng daáu gaïch chaân (_) khi ñaët teân ñoái töôïng hay teân cô sôû döõ lieäu trong MySQL. Neáu baïn ñaët teân coù daáu _ ,baïn phaûi toán thôøi gian hay naêng löôïng cho haønh ñoäng taïo ra daáu _ Trong chöøng möïc hay giôùi haïn naøo ñoù do hieäu öùng cuûa Font chöõ coù theå phaùt sinh loãi seõ gaây ra nhaàm laãn cho ngöôøi laäp trình. Noùi toùm laïi laø baïn seõ maát theâm thôøi gian löu taâm ñeán chuùng. 6.7.5. Kieåu döõ lieäu - Data type Nhö ñaõ trình baøy caùc laïi döõ lieäu trong phaàn treân, khi xaây döïng cô sôû döõ lieäu, taát caû nhöõng tröôøng trong baûng caàn phaûi coù kieåu döõ lieäu cuï theå. Vaán ñeà quan troïng laø choïn kieåu döõ lieäu naøo cho phuø hôïp vôùi döõ lieäu maø ngöôøi duøng seõ nhaäp vaøo. Ñeå thieát keá döõ lieäu phuø hôïp vôùi thöïc teá, ngoaøi tính öùng duïng hôïp vôùi ngöõ caûnh baïn cuõng caàn quan taâm ñeán kieåu döõ lieäu töông thích vaø chieàu daøi cuûa töøng coät. Chaúng haïn nhö: [CustID] [varchar] (10) /* hay */ [CustID] int 6.7.6. Giaù trò maëc ñònh - Default Thoâng thöôøng khi taïo ra moät coät trong baûng ñoâi khi chuùng ta caàn aùp duïng giaù trò maëc ñònh, khoâng chæ cho tröôøng hôïp soá lieäu khoâng nhaäp töø beân ngoaøi maø coøn cho caùc coät töï ñoäng coù giaù trò töï sinh. Vôùi nhöõng lyù do nhö vaäy, chuùng ta caàn coù moät soá giaù trò maëc ñònh cho nhöõng coät caàn thieát, ví duï : Neáu coät ñoù laø soá chuùng ta coù giaù trò maëc ñònh laø 0 Giaùo vieân: Phaïm Höõu Khang
  3. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Neáu coät ñoù laø ngaøy thaùng chuùng ta coù giaù trò maëc ñònh laø ngaøy naøo ñoù (nhö 0000-00-00 laø CurDate()) Neáu coät ñoù coù giaù trò laø 0 hoaëc 1, baïn coù theå khai baùo giaù trò maëc ñònh laø 0 hoaëc 1 Neáu coät ñoù laø chuoãi chuùng ta coù giaù trò maëc ñònh nhö laø 'A' 6.7.7. Soá töï ñoäng auto_increment auto_increment laø khaùi nieäm cöïc kyø quan troïng trong MySQL (töông ñöông vôùi Identity trong SQL Server, Autonumber trong MS Access). Khi baïn muoán moät coät coù giaù trò taêng töï ñoäng nhö AutoNumber/Identity, baïn neân ñònh nghóa coät ñoù nhö auto_increment,. Khi söû duïng auto_increment laøm soá taêng töï ñoäng thì kieåu döõ lieäu laø soá nguyeân hoaëc soá nguyeân lôùn. Trong tröôøng hôïp, baïn khai baùo soá töï ñoäng trong SQL Server, baïn caàn phaûi khai baùo theâm caùc thoâng soá nhö seed. Seed laø giaù trò khôûi ñaàu khi SQL Server töï ñoäng taêng giaù trò, Increament laø böôùc taêng, noù cho bieát moãi laàn taêng caàn bao nhieâu giaù trò. Vì duï khi taïo auto_increment cho coät ItemID [Int] auto_increment, nghóa laø baét ñaàu soá 1 vaø moãi laàn taêng 1 soá. Keát quaû baïn seõ coù laø 1,2,3,4, ...n. Trong phaùt bieåu SQL cuûa MySQL, ñeå taïo baûng coù gaù trò taêng töï ñoäng baïn chæ caàn khai baùo teân coät, kieåu döõ lieäu Int (Integer) vaø auto_increment nhö sau: IDNO Int auto_increment NOT NULL Trong giao dieän ñoà hoïa baïn chæ caàn check vaøo tuyø choïn AutoIncreament nhö hình 8-10. Hình 8-10: Choïn auto_increment Giaùo vieân: Phaïm Höõu Khang
  4. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM NULL / NOT NULL Ñaây laø traïng thaùi cuûa moät coät trong baûng cho pheùp chaáp nhaän giaù trò NULL hay khoâng? Neáu baïn chæ ra raøng buoäc giaù trò NOT NULL thì baét buoäc phaûi coù giaù trò trong coät naøy moãi khi maåu tin ñöôïc nhaäp vaøo. Ñoái vôùi moät soá kieåu döõ lieäu khoâng cho pheùp NULL baïn neân thieát laäp giaù trò maëc ñònh cho coät ñoù, ví duï nhö kieåu döõ lieäu bit khoâng cho pheùp NULL. Trong phaùt bieåu SQL taïo baûng, baïn chæ caàn khai baùo NULL hay NOT NULL sau kieåu döõ lieäu cuûa coät ñoù. Trong giao dieän ñoà hoïa chæ caàn ñaùnh daáu choïn vaøo tuyø choïn Not NULL nhö hình 8-10. 6.8. Thay caáu truùc ñoái töôïng baèng ALTER Khi chuùng ta caàn thieát phaûi söûa ñoåi moät phaàn caáu truùc cuûa caùc ñoái töôïng nhö table (view, hay SP trong SQL Server) vì muïc ñích naøo ñoù, thì Baïn söû duïng phaùt bieåu ALTER ñeå thay ñoåi caáu truùc cuûa ñoái töôïng hieän coù: ALTER Khi moät baûng toàn taïi trong cô sôû döõ lieäu, do nhu caàu caàn thieát phaûi thay ñoåi caáu truùc baûng, baïn söû duïng phaùt bieåu ALTER TABLE cuøng caùc tham soá cuûa chuùng nhö cuù phaùp sau: ALTER TABLE table alteration [,alteration] Chaúng haïn, baïn coù theå söû duïng phaùt bieåu ALTER TABLE ñeå theâm moät coät teân Activate vôùi kieåu döõ lieäu TinyInt coù giaù trò maëc ñònh laø 1. Ví duï 8-33: Theâm moät coät teân Activate vaøo baûng tblOrders ALTER TABLE tblorders ADD Activate TINYINT DEFAULT "1" Khi thay ñoåi thieát laäp giaù trò maëc ñònh cho coät baïn neân quan taâm ñeán giaù trò maëc ñònh ñoù coù phuø hôïp cho nhöõng maåu tin ñang toàn taïi hay khoâng. Muoán thay ñoåi giaù trò maëc ñònh cuûa coät cho nhöõng maåu tin ñang toàn taïi, baïn söû duïng ñeán meänh ñeà phuï nhö trong ví duï sau: Ví duï 8-34: Thieát laäp giaù trò maëc ñònh trong baûng tblOrders ALTER TABLE tblorders CHANGE OrderDate OrderDate DATETIME DEFAULT "0000-00-00" Thay ñoåi kieåu döõ lieäu töø Date dang DateTime, baïn coù theå khai baùo nhö ví duï 4-35 sau: Ví duï 8-35: Thay ñoåi kieåu döõ lieäu ALTER TABLE tblorders CHANGE OrderDate OrderDate DATE DEFAULT "0000-00-00 00:00:00" Giaùo vieân: Phaïm Höõu Khang
  5. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Maëc khaùc, baïn cuõng coù theå taïo hay thay ñoåi baûng trong maøn hình MySQL-Front. Chæ caàn choïn ngaên Database | R-Click | Create New Table, cöûa soå xuaát hieän nhö hình 8-11. Hình 8-11: Giao dieän taïo baûng baèng MySQL-Front 6.9. Phaùt bieåu SQL daïng DROP Drop laø phaùt bieåu thöïc hieän pheùp xoaù. DROP duøng ñeå xoaù ñoái töôïng cuûa cô sôû döõ lieäu nhö baûng, cô sôû döõ lieäu, ...Cuù phaùp cuûa phaùt bieåu DROP: DROP [, .... n] Baïn coù theå xoaù cô sôû döõ lieäu, baèng caùch khai baùo nhö sau: Drop Database Test /* Phaùt bieåu DROP TABLE chæ roõ baûng naøo caàn xoaù, neáu xoaù nhieàu baûng thì baïn caàn duøng daáu phaåy (,) */ DROP TABLE tblCustomers, tblSuppliers Ngoaøi ra, baïn cuõng coù theå duøng MySQl-Front ñeå xoaù baûng hay caùc ñoái töôïng Table trong cô sôû döõ lieäu chæ ñònh. Neáu choïn nhieàu baûng cuøng moät luùc baïn söû duïng phím Control hay Shift nhö sau: Giaùo vieân: Phaïm Höõu Khang
  6. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 8-12: Choïn ñoái töôïng ñeå xoaù baûng trong MySQL-Front 7. TAÏO KÒCH BAÛN SQL- SQL SCRIPTS Thoâng thöôøng khi xaây döïng cô sôû döõ lieäu ñeå phaùt trieån öùng duïng, ñoâi khi baïn caàn chuyeån cô sôû döõ lieäu töø maùy naøy sang maùy khaùc, hay töø khu vöïc naøy hay ñeán khu vöïc khaùc. Coù raát nhieàu caùch ñeå laøm ñieàu naøy, ôû ñaây chuùng toâi giôùi thieäu ñeán caùc baïn moät coâng cuï taùi taïo laïi cô sôû döõ lieäu môùi töø kòch baûn cuûa cô sôû döõ lieäu goác. Kòch baûn SQL (SQL Script) laø toång hôïp taát caû caùc phaùt bieåu SQL duøng ñeå taïo ra cô sôû döõ lieäu trong quaù trình xaây döïng chuùng, chuùng löu tröõ döôùi daïng vaên baûn coù teân môû roäng .sql (cautruc.sql). Coâng cuï naøy taïo kòch baûn cho taát caû caùc ñoái töôïng cuûa cô sôû döõ lieäu vôùi nhöõng thuoäc tính caên baûn. Tuy nhieân, neáu baïn choïn vaøo tuyø choïn Data, SQL Script bao goàm caùc phaùt bieåu SQL daïng Insert cuøng vôùi döõ lieäu trong baûng. Tröôùc tieân baïn coù theå nhaän thaáy cöûa soå coâng cuï naøy trong MySQL-Front, baèng caùch choïn teân cô sôû döõ lieäu Test, sau ñoù choïn Tools / Im-Export / Export Table, cöûa soå xuaát hieän nhö hình 8-13 sau: Giaùo vieân: Phaïm Höõu Khang
  7. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Hình 8-13: Taïo kòch baûn trong MySQl-Front KEÁT CHÖÔNG Trong chöông naøy, chuùng toâi ñaõ giôùi thieäu vôùi baïn haàu heát caùc phaùt bieåu SQL thuoäc loaïi ñònh nghóa cô sôû döõ lieäu, thao taùc döõ lieäu nhö Select, Insert, Delete vaø Update. Phaùt bieåu SQL daïng Select vôùi caùc meänh ñeà nhö JOIN cuøng pheùp toaùn giöõa hai hay nhieàu baûng trong phaùt bieåu SQL daïng SELECT. Ngoaøi ra, chuùng toâi cuõng trình baøy hai loaïi phaùt bieåu SQL daïng ñònh nghóa vaø thay ñoå cô sôû döõ lieäu taïo nhö CREATE vaø ALTER, DROP. Giaùo vieân: Phaïm Höõu Khang
  8. PHP VAØ DATABASE 9-1 Moân hoïc: PHP BAØI 9: PHP VAØ DATABASE Ñeå keát noái cô sôû döõ lieäu mySQL trong PHP, chuùng ta coù nhieàu caùch öùng vôùi nhieàu phöông thöùc keát noái cô sôû döõ lieäu, trong phaàn naøy chuùng ta taäp trung tìm hieåu caùch keát noái cô sôû döõ lieäu mySQL töø PHP baèng chính goùi cuûa noù. Nhöõng vaán ñeà chính seõ ñöôïc ñeà caäp trong baøi hoïc naøy Khai baùo keát noái cô sôû döõ lieäu Theâm maåu tin Caäp nhaät maåu tin. Xoaù maåu tin Truy vaán döõ lieäu 1. KEÁT NOÁI CÔ SÔÛ DÖÕ LIEÄU Ñeå keát noái cô sôû döõ lieäu mySQL baïn söû duïng khai baùp nhö sau: Trong ñoù khai baùo sau laø keát noái cô sôû döõ lieäu mySQL vôùi teân server/ip cuøng vôùi username vaù password: mysql_connect ("localhost", "root", "") Vaø mysql_select_db("TestDB", $link); ñeå choïn teân cô sôû döõ lieäu sau khi môû keát noái cô sôû döõ lieäu, neáu bieán $link coù giaù trò laø false thì keát noái cô sôû döõ lieäu khoâng thaønh coâng. Sau khi môû keát noái cô sôû döõ lieäu maø khoâng söû duïng tìh baïn coù theå ñoùng keát noái cô sôû döõ lieäu vôùi cuù phaùp nhö sau: mysql_close($link); Chaúng haïn, baïn khai baùo trang connection.php ñeå keát noái cô sôû döõ lieäu vaø ñoùng keát noái ngay sau khi môû thaønh coâng. ::Welcome to PHP and mySQL Mo va dong ket noi CSDL MySQL
  9. PHP VAØ DATABASE 9-2 ?> 2. THEÂM MAÅU TIN Ñeå theâm maåu tin, baïn söû duïng haøm mysql_query(chuoãi Insert). Chaúng haïn, chuùng ta khai baùo trang insert.php ñeå theâm maåu tin vaøo baûng tblships coù hai coät döõ lieäu laø ShipID vaø ShipName nhö ví duï trong trang insert.php. ::Welcome to PHP and mySQL Them mau tin
  10. PHP VAØ DATABASE 9-3 Hình 9-1: Theâm maåu tin Ñeå laøm ñieàu naøy, tröôùc tieân baïn khai baùo trang them.php, trong ñoù khai baùo ñoaïn javascript ñeå kieåm tra döõ lieäu nhaäp nhö sau: function checkInput() { if (document.frmPHP.txtID.value=="") { alert("Invalid ID, Please enter ID"); document.frmPHP.txtID.focus(); return false; } if (document.frmPHP.txtName.value=="") { alert("Please enter Name"); document.frmPHP.txtName.focus(); return false; } return true; } Keá ñeán khai baùo theå form vaø hai theû input laïi text yeâu caàu ngöôøi söû duïng nnaäp ID vaø Name nhö sau: Please enter ID and Name ID: COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
  11. PHP VAØ DATABASE 9-4 Name: Löu yù raèng, baïn khai baùo soá kyù töï lôùn nhaát cho pheùp nhaäp baèng vôùi kích thöôùc ñaõ khai baùo trong cô sôû döõ lieäu öùng vôùi thuoäc tính maxlength. Khi ngöôøi söû duïng nhaäp hai giaù trò vaø nhaán nuùt submit, trang keá tieáp ñöïôc trieäu goïi. Trang naøy laáy giaù trò nhaäp baèng caùch söû duïng bieán form hay $HTTP_POST_VARS. Ñoái vôùi tröôøng hôïp naøy chuùng ta söû duïng bieán form nhö trang doinsert.php. ::Welcome to PHP and mySQL Them mau tin
  12. PHP VAØ DATABASE 9-5 $affectrow=mysql_affected_rows(); mysql_close($link); ?> So mau tin cap nhat Löu yù raèng, ñeå bieát soá maåu tin ñaõ thöïc thi bôûi phaùt bieåu SQL baïn söû duïng haøm mysql_affected_rows. if($result) $affectrow=mysql_affected_rows(); Töông töï nhö treân, baïn coù theå thieát keá form cho pheùp ngöôøi söû duïng caäp nhaät döõ lieäu baèng caùch thieát keá form yeâu caàu ngöôøi söû duïng nhaäp maõ vaø teân caäp nhaän. Tröôùc tieân thieát keá from cho pheùp nhaäp döõ lieäu ñeå caäp nhaät nhö ví duï trang capnhat.php, sau khi hoïc phaàn truy vaán xong, thaqy vì nhaäp maõ baïn cho pheùp ngöôøi söû duïng choïn trong danh saùch ñaõ coù nhö hình 9-2. Hình 9-2: Caäp nhaät döõ lieäu Sau khi ngöôøi söû duïng nhaán nuùt submit, trang doupdate.php seõ trieäu goïi, keát quaû traû veà 1 hay 0 maåu tin. ::Welcome to PHP and mySQL Cap nhat mau tin
  13. PHP VAØ DATABASE 9-6 So mau tin cap nhat 4. XOAÙ MAÅU TIN Töông töï nhö vaäy khi xoaù maåu tin, baïn chæ thay ñoåi phaùt bieåu SQL daïng Delete nhö ví duï trong taäp tin delete.php. ::Welcome to PHP and mySQL Xoa mau tin
  14. PHP VAØ DATABASE 9-7 Xoa mau tin
  15. PHP VAØ DATABASE 9-8 ?> Trong tröôøng hôïp soá maåu tin traû veà laø 0 thì in ra caâu thoâng baùo khoâng tìm thaáy nhö sau:   Oop! Ship not found! 6. KEÁT LUAÄN Trong baøi naøy, chuùng ta taäp trung tìm hieåu caùch keát noái cô sôû döõ lieäu, theâm, xoaù caäp nhaät vaø lieät keâ maåu tin. Trong baøi keá tieáp chuùng ta tìm hieåu nhieàu caùc trình baøy döõ lieäu, xoaù maåu tin theo daïng maûng. COMPUTER LEARNING CENTER WWW.HUUKHANG.COM
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2