php කාපරයෙක් වෙමු

Amden

Banned
Sep 21, 2011
339
17
0
තරහ ගන්නෙපා බන් සුට්ටො. උබල බන් පොඩි උන් වගේ. මම කිව්වේ බන් යතාර්තය. ඔය වගේ ගොඩක් ත්‍රෙඩ් මේ එළකිරියේ පටන් අරන් ඇති. :yes: උබට මම කිව්ව දේ කාලයා විසින් තේරුම් කරයි.

thota puke amaruwada huththo ?
anunge reddawal asse ringala puka denne
manasika rogiyekda ?
 

P_Namal

Active member
  • Oct 19, 2007
    862
    224
    43
    එහෙනම් ඔන්න ගොඩක් කාලෙකින් අලුත් අවුරුද්දේ දාන අලුත් පෝස්ට් එකක්. :yes:

    ගොඩක් අය ඇනගන්න තැනක් තමයි foreach. ඉතින් මං ඒ ගැන මේ සැරේ දාන්නම්.

    Programming වල සාමාන්ය යෙන් Array වර්ග 2ක් තියෙනවානේ.

    01. Numerical Arrays
    <?php $num_array = array(‘kamal’, ‘colombo, 12); ?>

    02. Associated Arrays
    <?php $assoc_array = array(‘name’ => ‘kamal’, ‘city’ => ‘colombo’, ‘age’ => ‘12) ?>

    ඉතින් මේවාගෙන් Data ගන්න ලේසිම විදිය තමයි foreach කියන්නේ. මේ Array වර්ග දෙකට foreach දෙවිධියකට පාවිච්චි කරන්න පුලුවන්.

    ඊට කලින් කියන්න ඕනි array එකක key එකකුයි, value එකකුයි තියෙනවනේ. මං උඩින් දාලා තියෙන Numerical Array එකේ තියෙන්නේ value ටිකක් විතරනේ. ඒත් ඇත්තටම බැලුවොත් ඒකටත් key එකක් තියෙනවා. <?php print_r($array); ?> ගහලා බැලුවනම් ඔයාලාට පෙනෙයි මෙහෙම එකක්.

    Array(
    [0] => ‘kamal’,
    [1] => ‘colombo’,
    [2] => 12
    )
    මේකේ key එක Auto Number එකක් නිසා තමයි මේවට Numerical Array එකක් කියන්නේ. දැන් මේ Numerical Array එක foreach එකට දාමු.

    <?php
    foreach($num_array as $key => $val){
    echo $key ;
    }

    මේක run කරාම
    Output:
    012

    ගොඩක් වෙලාවට මේ key එක use වෙන්නේ නැති නිසා foreach එකෙන් $key එක අයින් කරලා දාන්න පුලුවන්.
    Code:
    foreach($num_array as $my_value){
    	echo $my_value;
    }

    Output:
    Kamal, Colombo, 12

    ඒ කියන්නේ Numerical Array එකේ keys ටික තමයි echo වෙලා තියෙන්නේ. ඔය විදියටම $val ටික echo කරලා බලන්න. මේක වැඩියෙන්ම use වෙන්නේ ගොඩක් වෙලාවට array values ටික ඔක්කොම එක පාර list කරගන්න ඕන වෙලාවට.
    දැන් බලමු Associated Array එකට foreach දාලා. මේ Array එක print_r එකකට දාලා බැලුවොත්,

    Code:
    Array(
                         [name] => ‘kamal’,
                         [city] => ‘colombo’,
                         [age] => 12
    )

    දැන් මේකේ Auto Number seen එකක් නෑ. එතන key එකට අපිට ඔනි key එකක් තමයි දීලා තියෙන්නේ. එතකොට අපිට ලේසියෙන්ම පුලුවන් අදාල value එක හොයාගන්න key name එකෙන්.

    <?php echo $assoc_array[‘age’]; ?>
    12

    මේ accosiated array ගොඩක් flexible numeric වලට වඩා.
    Ex:
    Code:
    <?php foreach($assoc_array  as $key => $value){
    	echo ‘My ’ . $key . ‘ is ’ . $value . ‘<br/>’;
    }

    Output:
    My name is Kamal
    My city is Colombo
    My age is 12

    ගොඩක් වෙලාවට Database වලින් return වෙන data එන්නේ Numerical, Associate array mix වෙලා. මේවට කියන්නේ muliti dimenstion Arrays කියලා.

    Code:
    $DB = Array(
    	[0] => Array ( 
                         [id] => 1000,
                         [name] => ‘name01’,
                         [address] => ‘address01’,
                         [age] =>  ‘age01’
    ),
    
    	[1] => Array(
                         [id] => 1001,
                         [name] => ‘name02’,
                         [address] => ‘address02’,
                         [age] =>  ‘age02’
    ),
    
            [2] => Array(
                         [id] => 1002,
                         [name] => ‘name03’,
                         [address] => ‘address03’,
                         [age] =>  ‘age03’
    ),
    
    )
    දැන් මෙතන Numerical එකක් අස්සේ Associated Array එකකුත් ඇවිල්ලානේ. එහෙනම් අපිට මේකට foreach වර්ග 2ම පාවිච්චි කරන්න වෙනවා.
    Code:
    foreach($DB as $row){
    	foreach($row as $key => $val) {
    	
    }
    }

    මෙතන $row එකේ loop වෙන්නේ 0,1,2 keys වලින් යන Numerical Array එක. ඒ $row එක ආයෙත් foreach එකකට දැම්මම එක Numerical Loop එකකදි Associated array එකත් loop වෙනවා. එතකොට $key එකට එන්නේ ඒ ඒ අවස්ථාවේ තියෙන id, name, address & age. $val එකට එන්නේ ඒ ඒ අදාල values.
    දැන් මේ data ටික table එකකට දාගමු. මේකෙදි හොදට තේරුම් ගන්න data use කරන විදිය. :angry:

    Code:
    <table>
    <tr>
    	<th>ID</th>
            <th>NAME</th>
    	<th>ADDRESS</th>
    	<th>AGE</th>
    </tr>
    	<?php foreach($DB as $row){ ?>
    		<tr>
    		<?php foreach($row as $key => $val) { ?>
    		         <td><?php echo $val; ?></td>
                    <?php } ?>
                      </tr>
            <?php } ?>
    </table>

    ID NAME ADDRESS AGE
    1000 Name01 Addess01 Age01
    1001 Name02 Addess02 Age2
    1002 Name03 Addess02 Age3

    ඇත්තටම මේකේ සරල දෙයක් තියෙන්නේ. හරියටම තේරුම් ගත්තම ඕන තරම් එක Array එකක ඇතුලේ තව Arrays 1කට වඩා තිබුනත් ඒවා ගානට foreach වලින් Manipulate කරගන්න පුලුවන්. :yes:
    මෙතන මට මග ඇරුණ දේවල් ඇති. මොනා හරි තියෙනවනම් අහන්න. :yes: :cool::cool:

    වැඩි දුර විස්තර : http://www.php.net/manual/en/control-structures.foreach.php

    how-foreach-actually-works

    මේකේ වැරදි එහෙද තියෙනවනම් කියපල්ලා... :yes::yes:
     

    Appu Haami

    Well-known member
  • Mar 22, 2012
    3,147
    367
    83
    Kiribathgoda
    නියමයි මචන් ... මාර වටිනව.. මට php මුල ඉඳන් ඉගෙනගන්න ඕනකම තිබ්බ.. පුළුවන්නම් JS ගැනත් ත්‍රෙඩ් එකක් දාපන් මචෝ... :love::love:
     

    P_Namal

    Active member
  • Oct 19, 2007
    862
    224
    43
    නියමයි මචන් ... මාර වටිනව.. මට php මුල ඉඳන් ඉගෙනගන්න ඕනකම තිබ්බ.. පුළුවන්නම් JS ගැනත් ත්‍රෙඩ් එකක් දාපන් මචෝ... :love::love:

    එක දෙයක් මුලින් හරියටම ඉගෙන ගනින් මචං. අනිත් ඒවා නිකම්ම හැදෙයි. :yes::yes:
     
    Last edited:

    venuscreats

    Member
    Dec 3, 2007
    900
    63
    0
    Ganemulla
    මචන් P_Namal උඹේ වැඩේ සිරාවටම මම අගය කරනවා.ඒක නිසා දිගටම කරගෙන යන්න බලපන්.ඔය එක එකා කතා කිව්වට උඹ ගනන් ගන්න එපා.මොඩයො කියල තමා උන්ට කියන්න වෙන්නෙ.ඔහොම තමා වැඩක් කරන්න ගියාම.සරල දේම කියල දීපන් මුලින්ම එක තමා හොඳම.වැඩේ කරන් පල...මගෙන් සුභ පැතුම්..:D;)
     
    Last edited:

    P_Namal

    Active member
  • Oct 19, 2007
    862
    224
    43
    empty(), isset()

    මම මේකේ කියන්න යන්නේ ටිකක් මම කට්ට කාලා අල්ල ගත්ත Theoryයක් ගැන. :oo::oo:

    empty() , isset(), if($bool)

    මට මේ funtions වල logics ඔක්කොම එක වගේ කියලයි මුලින් තේරුණේ. :confused::confused: ඒත් මේකේ සෑහෙන ඕනි වෙන critical logic එකක් තියෙනවා කියලා පස්සේ තෙරුණා. Coding කරද්දි ගොඩක්ම ඕනි වෙනවා මේ functions තුන. ;);)

    මෙහෙම හිතමුකො.

    අපි database එකෙන් data ටිකක් ගන්නවා. හිතමු log වෙනකෙොට User Name & Password check කරනවා කියලා.

    User Log වෙනකොට User Name & Password හරියට ගහන්නත් පුලුවන් නැත්තම් වැරදි එකක් ගහන්නත් පුලුවන්. (සිතාමතා හෝ නොසිතා)

    හරි දැන් ගමු මෙහෙම. User ඇවිල්ලා Login button එක click කරනවා මුකුත් නොගහා. එතකොට කොහොමද variables set වෙන්නෙ?

    Code:
    $user_name = '';
    $password   = '';
    :angry::angry:

    ඉතින් මෙහෙම ආවම මේ data Database එකේ check කරන්න අවශ්‍ය නැනේ. ඊට කලින් බලන්න ඕනි user මොනා හරි login form එකේ ගහලා තියෙනවද කියලා.

    Code:
    if($user_name == '' AND $password=="" ){
    
    }

    මේකෙන් check කරන්න පුලුවන් user මුකුත් type කරලා නැද්ද කියලා. මේක අපිට වෙන විදියකට check කරන්න පුලුවන් අර functions use කරලා.

    Code:
    if(empty($user_name) AND empty($password)){}

    නිකමට වගේ var_dump එකක් ගහලා බැලුවොත්,

    Code:
    var_dump(empty($user_name))
    // prints TRUE

    මේකෙන් කියන්නේ value එක හිස්ද නැද්ද කියලා.

    සමහර වෙලාවට php error එකක් එනවා Undefined Variable කියලා.

    Code:
    echo $logged;

    මේ විදියට නිකම්ම run කරොත් අනිවා undefined තමා. :angry: මොකද මේකට කොහේවත් value එකක් assign කරලා නැති නිසා. මේ error එක නැති කරන්න තියෙන හොදම විදියක් තමා isset(). නැත්තම් variable එක මොකකට වත් use කරන්න කලින් නිකම්ම $logged කියලා හරි define කරලා තියෙන්න ඔිනි.

    Code:
    if(isset($logged)){
        echo $logged;
    }

    මෙහෙම තියෙනකොට $logged එකට variable එකක් set කරලා තිබ්බොත් විතරයි echo වෙන්නේ. php error එකක් එන්නෙත් නෑ.

    ඒත් කලින් වගේ varible එකට හිස් value එකක් set වෙන්න පුලුවන්නේ. එතකෙොට මුකුත් echo වෙන්න දෙයක් නෑනේ.

    Code:
    $logged = '';
    
    if(isset($logged)){
        echo $logged;
    }

    මෙතන මුකුත් echo වෙන්නේ නෑ. error එකකුත් නෑ. :dull::dull:

    මේ අවස්ථාව check කරන්න තියෙන function එක තමා empty().

    Code:
    if( isset($logged) AND !empty($logged) ){
        echo $logged;
    }

    මෙතනදි $logged variable එකට variable එකක් set වෙලාද කියලයි, ඒ variable එක NOT EMPTY ද කියලත් check කරනවා. ! ලකුණෙන් කියන්නේ NOT. empty() function එකෙන් TRUE return වෙන අවස්ථා බැලුවොත්,

    empty($logged = '') // TRUE
    empty($logged = 0) // TRUE
    empty($logged = "0") // TRUE String එකක් විදියට 0 අවොත්
    empty($logged = false) // TRUE
    empty($logged = null) // TRUE
    empty($logged = array()) // TRUE
    :eek:

    php වල තව short විදියක් තියෙනවා මේක check කරන්න. හැබැයි අවස්ථාව බලලා හරි එක දැම්මෙි නැත්තන් අවුල් යනවා.

    Code:
    if( $logged ) {
       echo $logged;
    }

    මෙක !empty() එකට short විදියක්. හැබැයි variable define කරලා නැත්තන් error. :sorry:

    මතක තියාගන්න ඔිනි තැනක් තමයි මේ functions() වල $logging = 0 සලකන්නේ empty value එකක් විදියට. ඒක check කරන්න ඕනි විදිය ඔයාලාගේ logic එක මත තමයි depend වෙන්නේ. 0 ත් ඕනි නම් empty() දාලා check කරන්නැතුව ඔයාලාගේම logic එකක් ලියාගන්න වෙනවා. :yes:

     

    djminuka

    Well-known member
  • Nov 5, 2007
    2,318
    464
    83
    නියමයි නියමයි නියමාමාමාමාමාමාමායි!!!! :rolleyes::yes:
     

    P_Namal

    Active member
  • Oct 19, 2007
    862
    224
    43
    මේක නම් tutorial එකක් නෙවෙයි. කියන්න යන්නේ php ඉගෙන ගන්න ටිකක් ඉක්මන් වෙන විදියක් ගැන. :P:P

    මුකුත් නෙවෙයි Ubuntu, CentOS වගේ මොකක් හරි Linux version එකකට මාරු වෙන එක. :angry::angry:

    මම දන්නෑ ඔයාලා ඒකට කොච්චර දුරට එකගද කියලා නම්. ඒත මං කරපු දේ කියන්නම්. :yes::yes:

    මම මුලින් php ඉගෙන ගත්තෙත් Windows වල තමයි. wamp දාගෙන ලස්සන ලස්සන IDE වල ඉතින් කොටන එක තමා වැඩේ. :rolleyes:

    එත් මං දන්න php වැඩ්ඩො කීප දෙනෙක්ම Ubuntu, Mac වගේ OS වල වැඩ කරනවා. ඉතින් මටත් ආසයි Ubuntu දාගන්න. එක සැරයක් දාන්න ගිහින් අම්බානෙට නෑවා. එපාම වුනා Ubuntu. තේරන්නෑ මෙලෝ හසරක්. හැම මගුලක්ම ගහන්න ඕනි Terminal එකේ. :baffled::baffled:

    එතකොට මං කරේ Windows තියාගෙනම Ubuntu Dual Boot කරන එක. ඒනිසා පොඩ්ඩ එපා වුණ ගමන් restart කරලා windows වල කොටනවා. :cool:

    ඔහොම යනකොට ඉතින් දවසක් C එක format කරන්න ගිහින් වැරදිලා සේරම Partition Delete වුණානේ :sorry::sorry: මගේ සේසතම ගියා. :dull: Windows හිර වෙන නිසා තමයි format කරන්න වුනෙත්. කරන්න දෙයක් නැති නිසා මං තීරණය කරා ඕ.පු කියලා Ubuntu දාන්න. :D:D

    කොහොමහරි දැම්ම කියමුකො. අම්මො තියෙන case. වෙලාවකට root කියයි, Permission නෑ කියයි, Terminal Use කරන්න කියයි. ඉතින් windowsසුත් නැති නිසා මට සෑහෙන කට්ටක් කන්න වුණා <?php echo 'Test'; ?> run කරගන්න. :yes::yes::oo:

    Apache, PHP, MySql, PHPMyadmin ඔක්කොම වෙන වෙනම Terminal එකෙන් install කරන්න වුනා. :confused:

    ඇත්තටම ඊට පස්සේ තමයි ගේමට enter වුනේ. මගේ php ඉගෙන ගැනිල්ල Double Triple වුණා. Manual එක කලින් ට වඩා තේරෙන්න පටන් ගත්තා. :yes::yes:
    එහෙම වුණේ මට නම් හිතෙන විදියට PHP කියන්නේ Open Source Project එකක්. Ubuntu කියන්නෙත් එහෙම එකක්නේ. ඉතින් මේවගේ standards ඔක්කොම සමානයි. Windows කියන්නේ තනිකරම වෙනස් Environment එකක් නිසා UI ලස්සන වුණාට අපිට තෙරෙන සීඝ්‍රතාවය ගොඩක් අඩුයි. :yes::yes:

    Windows වල Permission හදන්න පුලුවන්ද ලේසියෙන්? එත් Linux වල Terminal එකේ සරල code එකකින් permission වෙනස් කරන්න පුලුවන්.

    ඇත්තටම windows ගොඩක් හොදයි. ඒත් මං කියනනේ php වලට නම් windows හරි යන්නේ නෑ කියලා. :yes::yes:

    Ubuntu ටිකක් දැනගත්තට පස්සේ මං ආයෙත් Windows දාලා Dual boot හදා ගත්තා. මාසයක් වත් ගියෙ නෑ මට Ubuntu වලට මාරු වෙන්න. :cool::cool:

    දැන් මං තනිකරම php Coding කරන්නේ Ubuntu වල. UI Designs වලට Windows පාවිච්චි කරනවා. :yes:

    මේ තියෙන්නෙ මට Ubuntu ඉගෙන ගන්න වැදගත් වුන sites.

    File Manager වලට
    http://www.tuxfiles.org/linuxhelp/fileman.html
    http://www.tuxfiles.org/linuxhelp/dirman.html

    Terminal එකට
    https://help.ubuntu.com/community/UsingTheTerminal

    Permission වලට
    https://help.ubuntu.com/community/FilePermissions

    Apache, PHP, Mysql, phpMyAdmin Install කරගන්න
    http://www.howtoforge.com/installing-apache2-with-php5-and-mysql-support-on-ubuntu-12.04-lts-lamp

    Apache වල Mod-Rewrites
    http://askubuntu.com/questions/48362/how-to-enable-mod-rewrite-in-apache

    Virtual Hosts
    https://www.digitalocean.com/community/articles/how-to-set-up-apache-virtual-hosts-on-ubuntu-12-04-lts

    සිංහල Typing
    http://www.umunthu.net/howtos/how-type-sinhala-ubuntu-1004-lts
     
    • Like
    Reactions: Kalaa and keshara