Sunday, February 26, 2012

PHP 11 - PHP වලින් MySQL සමග වැඩකරමු (1 කොටස)


මේ පාඩමේ අරමුණ ඔබට PHP සමග MySQL databse එකක් සම්බන්ධ කොට ඉන් වැඩකරගන්නා ආකාරය පිළිබඳව මූලික දැනුම ලබාදීමයි. මේ සඳහා ඔබට Databases සහ SQL Queries පිළිබඳව අවබෝධයක් තිබීම වැදගත් වේවි. පළමු පාඩමේදී මම කියූ Xampp මෘදුකාංගය තුළම MySQL Database එකක් තිබෙන බැවින් ඔබ නැවත Install කළයුතු වන්නේ නැහැ. අවශ්‍යනම් මේසඳහා Xampp තුළම ඇති phpMyAdmin හෝ මම පළමු පාඩමේදී කියූ MySQL WorkBench එකද භාවිතා කළ හැකියි.

නමුත් මා මේ පාඩමෙන් අරමුණු කරන්නේ PHP කේත හරහාම MySQL වෙත සම්බන්ධ වී database එකක් සහ table එකක් නිර්මාණයකර එයට දත්ත ඇතුළත් කිරීම, ආපසු කියැවීම, වෙනස්කිරීම සහ මකාදැමීම පිළිබඳව සරලව ඔබට කියාදෙන්නයි. පාඩම ටිකක් දිග නිසා කොටස් දෙකකින් කියා දෙන්න හිතුවා.

MySQL Database එක සමග සම්බන්ධ වෙමු
  
ඩේටාබේස් එකක ඇති තොරතුරු ලබාගැනීමට පෙර, අනිවාර්යයෙන්ම එම ඩේටාබේස් එක සමග සම්බන්ධතාවයක් ඇතිකරගතයුතුය. මේ සඳහා PHP තුළ භාවිතා කරන්නේ mysql_connect() නැමැති function එකයි. මෙම Function එකෙහි ඉතා වැදගත් parameters 3ක් තිබේ.

මෙම Function එකෙහි ආකෘතිය පහත පරිදි වේ.



Parameter
Description
servername
Connect විය යුතු Server එකෙහි නම 
username
Database එකට ලොග් විය යුතු username එක 
password
ලොග් වීමට අවශ්‍ය password එක

අනෙකුත් parameters සඳහා PHP MySQL Reference එක බලන්න.


දැන් අප උදාහරණයක් ගෙන බලමු.



මෙම කේතයේ 8 වැනි පේළියෙන් Database එක සමග සම්බන්ධතාවය ගොඩනගයි. එහිදී Server එකෙහි නම localhost ලෙසත්, user name එක root ලෙසත්, Password එකක් නොමැතිව ලබාදී ඇති බව ඔබට පෙනෙනවා ඇති.

ඉන්පසුව සිදුකර ඇත්තේ වෙනත් දෙයකි. ඒ, අදාල $con නැමැති variable එක හරහා database එකට ලොග් වීම අසාර්ථක වුවහොත් die යටතේ ඇති Could not connect: යන String එක සමග ලබාදෙන Error message එක බ්‍රව්සරයට print කරන ලෙසත් සාර්ථකව Connect වුවහොත් "Successfully Connected!" ලෙස බ්‍රව්සරයට print කරන ලෙසත් IF Statement එකකින් ලබාදී තිබෙනවා.

පැහැදිලියි නේද? තවත් දෙයක් කියන්නම්. සාමාන්‍යයෙන් අපි ගොඩනගන Connection එක අපේ PHP Script එක අවසානයේදී ඉබේම Close වෙනවා. එසේ නැතිව, ඔබට PHP කේතය අතරතුර තැනකදී එම Connection එක Close කළ යුතුනම් පහත කේතය භාවිතා කළ හැකියි.


Database එකක් නිර්මාණය කරමු


Database එකක් නිර්මාණය කිරීම සඳහා වන SQL Command එකෙහි ආකෘතිය පහත පරිදි වේ.
                                                                                                               



දැන් අප උදාහරණයක් මගින් Database එකක් නිර්මාණය කරන ආකාරය පිළිබඳව ඉගෙනගනිමු.



මෙම කේතයේ 8 වැනි පේළියේදී මම කලින් කී පරිදි database එක සමග Connect වී තිබෙනවා. ඉන්පසුව 10 වැනි පේළියේදී මම MySQL Query එකක් ධාවනය කරනවා. එහිදී මම mysql_query යන Function එක භාවිතා කර එහි parameters සඳහා පළමුව මගේ Database එක සෑදීම සඳහා වන SQL Query එකත්, ඉන්පසුව ඒ සඳහා භාවිතා කළයුතු Connection එකෙහි නමත් ලබාදී තිබෙනවා. 12 වැනි පේළියේදී මම එම $con නැමැති Connection එක වසාදමා තිබෙනවා. මෙම කේතය ධාවනය කළ පසු Sample_Database නමින් නව database එකක් ඔබේ MySQL Database එකේ සෑදෙනවා.

ඔබට මෙය බලාගැනීමට අවශ්‍යනම් ඔබේ වෙබ් බ්‍රව්සරයේ localhost/phpmyadmin/ ලෙස ලබාදී enter කරන්න. එවිට විවෘත වන phpMyAdmin පිටුවේ (භාෂාව English ලෙස සකසා නැත්නම් සකසන්න) Database tab එකේ ඇති ලැයිස්තුවේ ඔබ සෑදූ database එකත් තිබෙනු ඇති. එම database ඉවත්කිරීමට නම් එහි නමට ඉදිරියෙන් ඇති check box එකට හරියක් දමා පහළ ඇති Drop මත ක්ලික් කළ හැකියි.




ඒ වගේම මේ වින්ඩෝවෙ තිබෙන Create new database කියන තැනට නමක් දීමෙනුත් database එකක් සෑදිය හැකියි. Workbench එකත් මේ පහසුකම් සපයනවා අතුරුමුහුණතේ සුලු වෙනස්කම් සහිතව. හරි දැන් phpMyAdmin වලින් නැවත පාඩමට එමු.

ඉහත කේතයේදී database එකක් හැදුණාද නැද්ද යන්න බලාගැනීම සඳහා මට phpMyAdmin හෝ WorkBench භාවිතාකර MySQL වෙත පිවිසෙන්න සිදුවුණා. නමුත් එසේ නොකර, ඔබේ php පිටුව තුළ සිටම ඔබට ඔබේ database එක සාර්ථකව නිර්මාණය වුණාද නැද්ද යන්න දර්ශනය කළ හැකියි සරල IF විධානයක් භාවිතයෙන්. ඉහත කේතයම මම ටිකක් වෙසන් කරනවා මේ විදියට. මෙතනදි මම Create කරන database එකේ නම "SchoolDB".




මෙම කේත සටහනේදී මම මගේ CREATE DATABASE Query  එක ඇතුළත් කරන්නේ IF Statement එකක් තුළ. එම Query එක සාර්ථකව ධාවනය වූයේනම් "Database Created" යන්නත් එසේ නොවූවොත් Error Creating Database: යන String එක සමග ලැබෙන Error Message එකත් දර්ශනය කරන ලෙස කේත ලියා තිබෙනවා. ඔබ මේ පිටුවම දෙවරක් ධාවනය කළොත්, ඒ දෙවැනි වතාවේදී ඔබට මේ කියන error message එක (Error creating database: Can't create database 'schooldb'; database exists) පෙන්වයි. මොකද එකම නමින් databases දෙකක් හදන්න බැරිනිසා. පැහැදිලියි නේද?

Table එකක් සාදමු
  
ඔබ දන්නවා Database එකක් තුළ Data අපි ගබඩා කරන්නේ Tables ආකාරයෙන්. මේ tables වල Columns තිබෙනවා. ඒ වගේම ඒ ඒ columns වල ගබඩා කරන දත්ත වලට data type එකක් තිබෙනවා. database එකක් හදන්න වගේම table එකක් හදනවිටත් අපි භාවිතා කරන්නේ mysql_query කියන Function එකම තමයි. එහෙනම් ඔබට දැන් වැටහෙන්න ඕන වෙනස් වෙන්නේ Query එක විතරක් බව. Connect වෙන්නෙ Close කරන්නෙ එකම විදියට බව. හරි, Table එකක් සෑදීම සඳහා වන SQL Query එකේ ආකෘතිය මෙහෙමයි.


හරිම ලේසියි නේද? CREATE TABLE කියන්නෙ table එකක් සෑදීම සඳහා භාවිතා වන SQL Key word එක. ඉන්පසු ඔබ විසින් සාදන table එකේ නම ලබාදී වරහන් තුළ, එක් එක් Column එකෙහි නමත් Space එකක් තබා එහි datatype එකත් ලබාදිය යුතුයි. Columns කීපයක් තිබෙනවානම් ඒවා කොමාවකින් වෙන්කරමින් එක් එක් Column එකෙහි නමත් Space එකක් තබා එහි datatype එකත් ලබාදිය හැකියි.

දැන් අපි බලමු මේ SQL Query එක අපේ PHP කේතයකට එකතු කරගෙන Table එකක් නිර්මාණය කරගන්න හැටි සරල උදාහරණයකින්.



මෙතනදි මම මුලින්ම (8 වැනි පේළියෙන්) කරලා තියෙන්නේ මගේ database server එකට Connect වීම. ඉන්පසු මම (10 වැනි පේළියෙන්) මගේ database එක වන SchoolDB එක select කරල තිබෙනවා mysql_select_db() Function එකෙන්. මොකද ඔබ අනිවාර්යයෙන්ම table එකක් create කිරීමට පෙර database එකක් select කළ යුතු නිසා.

කලින් අපි database එකක් create කරද්දී භාවිතා කළ  SQL Query එක කෙටි නිසා කෙළින්ම mysql_query() Function එකේ parameter එකටම මම type කළා. නමුත් මෙතනදි අපේ SQL Query එක ටිකක් දිග නිසා මම (12 වැනි පේළියෙන්) $sql කියන variable එකේ මගෙ query එක ගබඩා කරනවා. ඉන්පස්සෙ මම (17 වැනි පේළියෙදි) Query එක run කරනවා mysql_query() function එක භාවිතයෙන්. එතනදි මම මගෙ දිග Query එක වෙනුවට $sql කියන මගෙ query එක අඩංගු variable එක භාවිතා කර තිබෙනවා. ඉන්පසු කොමාවට පසු මම භාවිතා කරන Connection එක තිබෙන $con variable එක ලබාදී තිබෙනවා. අවසානයේදි (18 වැනි පේළියේ) මම Connection එක Close කර දමනවි. පැහැදිලියි නේද?

දැන් මේ පිටුව ධාවනය කරද්දී ඔබේ schoolDB නැමැති database එක තුළ Student නම්වූ table එක නිර්මාණය වේවි. එහි firstName, lastName සහ age නැමැති පිළිවෙළින් varchar,varchar සහ int යන data type සහිත columns තුනක්ද තිබේවි. varchar කියන්නේ අක්ෂර, වචන ආදිය ගබඩා කළ හැකි data type එකක්. varchar සඳහා ඔබ වරහන් තුළ උපරිම අක්ෂර ගණන ලබාදිය යුතුයි. අනෙකුත් data types පිළිබඳවත් සොයාබලන්න. කීපයයි තිබෙන්නෙ.

අවශ්‍යනම් මෙයත් ඔබට IF එකක් සමග සාර්ථක අසාර්ථක බව බ්‍රව්සරය තුළම පෙන්වන ලෙසද ලියා බලන්න. එතැනදි වෙනත් table name එකක් දෙන්න.

Primary Key එකක් සහිතව tables සෑදීමේදී ඔබට මෙවැනි SQL Query එකක් භාවිතා කළ හැකියි.



Table එකකට දත්ත ඇතුළත් කරමු
  
Database එකක් තුළ ඇති table එකකට දත්ත ඇතුළත් කිරීම සඳහා අප භාවිතා කරන්නේ INSERT INTO නැමැති SQL විධානයයි. මෙය දෙයාකාරකින් ලිවිය හැකියි.




මෙහිදී INSERT INTO විධානයෙන් පසු අදාල table එකෙහි නමත් ඉන්පසු VALUES යන පදයෙන් පසු වරහන්තුළ ඇතුළත් කළ යුතු දත්ත, table එකෙහි columns ඇති පිළිවෙලටම කොමා වලින් වෙන්කොට ලබාදිය යුතුවේ.



දෙවැනි ක්‍රමයේදී table එකෙහි නමින් පසුව වරහන් තුළ ඔබ දත්ත ඇතුළත් කරන columns කීපය ලබාදිය හැකියි. ඉන්පසු එම columns ලබාදුන් අනුපිළිවෙළින් ඒවාට ඇතුළත් කළ යුතු values ලබාදිය යුතුයි. සියලුම columns වලට දත්ත ඇතුළත් නොකරන අවස්ථාවලදී හෝ, පිළිවෙලින් නොව තැනින් තැන ඇති Columns කීපයකට දත්ත ඇතුළත් කළයුතු අවස්ථා වලදී මෙය භාවිතා කළ හැකියි.

දැන් අපි PHP කේතයක් මගින් table එකකට දත්ත ඇතුළත් කරන ආකාරය විමසා බලමු. මෙම කේතය හොඳින් අධ්‍යයනය කරන්න.



මෙහිදීත් මම පළමුව (8 වැනි පේළියෙන්) database server එකට connect වී (9 වැනි පේළියෙන්) දත්ත ඇතුළත් කිරීමට අවශ්‍ය table එක සහිත database එක select කරගෙන තිබෙනවා.

ඉන්පසු 11, 12 පේළි වලදී මා ඉහත කී පළමු ක්‍රමයටත්, 14,15,16 පේළි වලදී දෙවැනි ක්‍රමයටත් දත්ත ඇතුළත් කරගෙන තිබෙනවා. ඉන්පසුව (18 වැනි පේළියේදී) connection එක close කර තිබෙනවා.

මේ ආකාරයට කෝඩ් එක තුළම type කරන ලද values වෙනුවට ඔබට HTML form එකක් හරහා දත්ත database එකකට ඇතුළත් කළ යුතුනම් මෙසේ කළ හැකියි.

පළමුවෙන්ම ඔබ ඔබේ HTML Form එක සෑදිය යුතුයි. ඒසඳහා උදාහරණයක් පහත දැක්වෙනවා. මෙය form.php හෝ ඔබ කැමති නමක් දී save කරගන්න.



10 වැනි පාඩමෙන් අපි Forms ගැන කතා කළ නිසා නැවත මෙතැනදී වැඩියමක් කියන්නෙ නැහැ. මෙහිදී text boxes තුනක් සහ submit button එකක් ඇති බවත්, Post Method එක හරහා දත්ත ගෙනයන බවත් insert.php නැමැති php file එක විවෘතවන බවත් ඔබට පැහැදිලි ඇති.

මෙම insert.php සඳහා වන කේතය මෙසේයි. මෙය ඔබට HTML පිටුවක BODY එක තුළ ඇතුළත් කර insert.php ලෙස save කරගත හැකියි.



මෙහිදීත් පළමුවෙන්ම (5 වැනි පේළියෙන්) database server එකට connect වී තිබෙනවා. ඉන්පසු (6 වැනි පේළියෙන්) අදාල database එක select කර තිබෙනවා. ඉන්පසු (8,9,10,11 පේළි වලදී) දත්ත ඇතුළත් කිරීමට අදාල SQL Query එක $sql නැමැති variable එක තුළ ගබඩා කර තිබෙනවා. මෙහිදී values ලෙස ලබා දී ඇත්තේ අප 19 වැනි පාඩමේදී කතා කළ POST Method එකෙන් ලැබෙන දත්ත ගබඩා කරගන්නා $_POST නැමැති Associative array variable එකෙහි elements බව ඔබට පෙනෙනවා ඇති.

ඉන්පසු සුපුරුදු පරිදි mysql_query() Function එක භාවිතයෙන් (13 වැනි පේළියේදී) එම query එක run කර තිබෙනවා. ඔබේ දත්ත database එකේ table එකට ඇතුළත් වන්නේ මේ අවස්ථාවේදීයි. ඉන්පසු (14 වැනි පේළියේදී) 1 record added ලෙස බ්‍රව්සර් එකට print කර අවසානයේදී (15 වැනි පේලියේදී) connection එක close කර තිබෙනවා. පැහැදිලියි නේද?

මීළඟ පාඩමෙන් අපි PHP භාවිතයෙන් database එකක ඇති දත්ත නැවත ලබාගන්නා හැටිත්, වෙනස්කම් කරන හැටි සහ මකා දමන හැටි ඉගෙනගනිමු.

මේ පාඩමෙන් ඔබ යමක් ඉගෙනගත්තානම් කමෙන්ට් එකකින් මා දිරිමත් කරන්නත් අමතක කරන්න එපා.ස්තුතියි!