web analytics

เขียนเว็บด้วยภาษา php แบบพื้นฐาน ตอนที่ 1 – Basic

cover

สวัสดีครับ บทความนี้เป็นบทความสำหรับผู้เริ่มต้นภาษา Php โดยบทความนี้จะนำเสนอตั้งแต่พื้นฐานแบบ zero เลยครับ อาจจะค่อนข้างรวบรัดนิดนึงนะ โดยก่อนหน้านี้ผมได้เขียนเกี่ยวกับสอนภาษา C แล้วเห็นว่ามีคนสนใจอ่านจำนวนมาก ก็เลยคิดว่าอยากจะเขียนสอนภาษาอื่นๆที่ผมพอจะสอนได้ด้วย ก็เลยทำบทความ php เพิ่มครับ คิดว่าน่าจะเป็นประโยชน์ให้กับคนที่อยากเริ่มต้นเขียนเว็บด้วย php ครับ

เริ่มต้นกับภาษา Php

ภาษา Php เป็นภาษาสำหรับพัฒนาเว็บไซต์ ปกติเว็บๆนึง มันจะมีส่วนเบื้องหน้า (Front-end) คือหน้าที่สวยๆที่เราเห็น กับเบื้องหลัง (Back-end) ที่เป็นส่วนของการทำงาน ซึ่ง php คือส่วนด้านหลัง โดยมันจะทำงานร่วมกับส่วนด้านหน้าด้วย ดังนั้นถ้าเราจะเขียนเว็บเรียนแค่ php อย่างเดียวไม่พอ ต้องเรียนเรื่องอื่นๆคู่ไปด้วย เดี๋ยวจะค่อยๆอธิบาย เรียนรู้ไปทีละนิดนะครับ โดยในส่วนของเบื้องหน้า เรื่องความสวยงามจะยังไม่เน้น แต่จริงๆ ถ้ารู้มาบ้างก็ดีเช่น HTML แต่ถ้าไม่รู้เดี๋ยวผมจะค่อยๆอธิบาย

 

เกร็ดเล้กน้อยเกี่ยวกับ php คือ สัญลักษณ์มันคือช้าง 

23

 

ติดตั้ง Webserver

php เป็นภาษาสำหรับเว็บ ซึ่งเว็บก็ต้องมี server คอยประมวลผล ดังนั้นเลยต้องติดตั้ง webserver ขึ้นมาจำลองในเครื่องเรา ในที่นี้ขอใช้เป็นโปรแกรมชื่อว่า WAMP ซึ่งเป็นตัวที่รวมๆเครื่องมือเกี่ยวกับการทำเว็บมาให้ในตัวเดียว

ดาวน์โหลดที่
http://www.wampserver.com/en/

กดติดตั้ง next รัวๆ แล้วก็เปิดโปรแกรม ถ้าทุกอย่างถูกต้องมันจะมีสัญลักษณ์เขียวๆ
แต่ถ้าสีส้มคือมีบาง service ใช้ไม่ได้ เช่น port ถูกแย่งโดยโปรแกรมอื่น ต้องหาทางแก้ไขเป็นเคสๆไป

1

 

ติดตั้ง VS Code

สำหรับมือใหม่ ก็ต้องหาเครื่อฝมือคู่ใจเอาไว้เขียนโปรแกรม มีให้เลือกเยอะมาก เช่น Sublime text , Visual Studio Code
ผมขอแนะนำเป็น Visual Studio Code นะ

https://code.visualstudio.com/

ดาวน์โหลด มาติดตั้ง next รัวๆ แล้วเปิดโปรแกรมขึ้นมา ซึ่งตัวนี้มันจะมี plugin สำหรับ php ด้วย

3

 

 

สร้างโฟลเดอร์ของโปรเจค

ให้ไปที่โฟลเดอร์ที่เราติดตั้ง wamp ภายในจะมีโฟลเดอร์ชื่อ www อยู่ อันนี้คือโฟลเดอร์จำลองพื้นที่บน server ของเรา
ให้สร้างโฟลเดอร์เพิ่มชื่ออะไรก็ได้ ในที่นี้ผมจะทำเว็บเก็บรูปภาพอาหาร ขอตั้งชื่อว่า myfood

2

 

ใน VS ไปที่ File > Open Folder

5

 

แล้วเลือกโฟลเดอร์โปรเจคของเรา

4

 

จากนั้นกด File > new File จะได้ไฟล์เปล่าๆก่อน แล้วกด File > Save
บันทึกชื่อว่า index.php ในโฟลเดอร์โปรเจคของเรา

7

 

Hello World

ไฟล์ index.php

พิมพ์โค้ดดังนี้

8

<?php 
    echo"Hello world";
?>

จำไว้เลยว่า ภาษา php นั้นจะต้องมีคำสั่งเปิดคือ <?php แล้วก็มี ปิด ?> เสมอ
และคำสั่ง echo ก็คือปริ้นข้อความ

เสร็จแล้วอย่าลืมกด Save นะ

การรันจะต้องไปเปิดมาเว็บไซต์ของเรา ก็คือเปิด Browser เช่น Chrome แล้วเข้าเว็บ
localhost/myfood/index.php 

จะแสดงผลลัพธ์ออกมา

9

หลักการการอ้างถึงไฟล์ ก็ง่ายๆแบบนี้แหละ คือจาก localhost มันจะวิ่งไปหาโฟลเดอร์ www ใน WAMP นั่นเอง
เพราะอย่างที่บอกไปตอนต้นว่าโฟลเดอร์ www มันคือการจำลองพื้นที่เก็บไฟล์บน server

10

รู้จักตัวแปรใน php

ตัวแปรคือ การเก็บข้อมูล ใน php จะมีสัญลักษณ์ $ นำหน้า จบคำสั่งแล้วจะปิดท้ายด้วย ;

$value = 0;

อันนี้คือ ประกาศตัวแปรชื่อ value มีค่า 0

สามารถใช้บวก ลบ คูณ หารได้ เช่น

<?php 
    $value = 10;    // ตัวแปร value มีค่า 10
    $power_value = $value * $value; // ตัวแปร power_value มีค่า 10 * 10 
    echo $power_value; // แสดงค่า
?>

ลองกด save แล้วไป refresh หน้าเว็บ

11

จะเห็นว่า echo สามารถเอาตัวแปรมาแสดงค่าได้เลย ไม่ต้องใส่ ก็ได้

 

การคอมเม้น

คอมเม้นคือ การระบุสัญลักษณ์ไม่ให้คำสั่งทำงาน อาจจะเขียนเป็นคำอธิบาย หรือลบโค้ดนั้นชั่วคราว มีสองแบบ คือ คอมเม้นบรรทัดเดียวกับหลายบรรทัด

<?php 
    // comment บรรทัดเดียว

    /*
        คอมเม้น
        หลายบรรทัด
    /*
?>

 

 

การต่อ String ใน php

ถ้าจะเอาค่าตัวแปร มาใช้ร่วมกับ string แสดงใน echo ต้องใช้วิธีเชื่อม string
ใน php จะใช้จุด . เช่น

<?php 
    $value = 10;
    $power_value = $value * $value;
    echo "Power of ".$value." is ".$power_value;
?>

13

 

Refresh หน้าเว็บ

12

 

หรือว่าจะเอามาเก็บในตัวแปรก่อนแล้วค่อย ปริ้นก็ได้ผลลัพธ์เหมือนกัน

<?php 
    $value = 10;
    $power_value = $value * $value;
    $str = "Power of ".$value." is ".$power_value;
    echo $str;
?>

 

ขึ้นบรรทัดใหม่

ขึ้นบรรทัดใหม่จะใช้คำสั่ง <br> ซึ่งขึ้นบรรทัดใหม่เป็นการทำงานเบื้องหน้า
มันเลยไม่ใช่ภาษา php จะเป็นภาษา HTML แต่ว่าก็สามารถเอามาใช้ร่วมกันได้
คือเอา <br> มาใช้ใน echo

<?php 
    echo "Hello Benz.";
    echo "<br>I'am fine.";
?>

19

 

ลอง refresh

20

 

คำสั่ง if-else

เขียนโปรแกรมก็ต้องมีการสร้างทางเลือก ในที่นี้ใช้คำสั่ง if  คือ ถ้า … แล้วจะให้ทำอะไร

<?php 
    if( เงื่อนไข ){
       ถ้าเงื่อนไขเป็นจริง ทำตรงนี้
    }else {
       ถ้าเงื่อนไขเป็นเท็จ ทำตรงนี้
    }
?>

 

เช่น คะแนน = 86 แล้วมีเกณฑ์คะแนนมาให้
0 – 49 = F
50 – 59 = D
60 – 69 = C
70 – 79  = B
80+ = A

 

จะเขียนได้ว่า

<?php 
    $score = 87;
    if($score < 50){
        echo "Grade F";
    }else if($score < 60){
        echo "Grade D";
    }else if($score < 70){
        echo "Grade C";
    }else if($score < 80){
        echo "Grade B";
    }else {
        echo "Grade A";
    }
?>

14

 

Refresh หน้าเว็บ

15

 

รู้จักกับ Array

Array คือ ตัวแปรชุด เช่น ตัวแปรตัวเดียวแต่เก็บชื่อค่าหลายชื่อ วิธีการคือใช้วงเล็บก้ามปู [ ] ครอบ และข้างในก็เป็นชื่อ คั้นด้วย ,
และวิธีการเข้าถึงจะใช้ตัวเลข เรียกว่า index โดย index จะเริ่มที่ 0 ไล่ไป 1 2 3 4…

<?php 
    $os_name = ["Android" , "iOS" , "Windows" , "MacOS"];
    echo "<br>".$os_name[0];
    echo "<br>".$os_name[1];
    echo "<br>".$os_name[2];
    echo "<br>".$os_name[3];
?>

 

Refresh หน้าเว็บ

17

 

Array และ key

นอกจากการเข้าถึงตัวแปรใน array ด้วย index แล้วสามารถใช้ key ได้ด้วย ซึ่งมันก็คือการกำหนดชื่อให้กับ index เพื่อให้เข้าใจมากขึ้นนั่นเอง

<?php 
    $os = ["name"        => "Android" , 
           "version"     => "8.0" , 
           "version_name"=> "Oreo" ,
           "release_date"=> "August 21, 2017"];
    
    echo "<br>".$os["name"];
    echo "<br>".$os["version"];
    echo "<br>".$os["version_name"];
    echo "<br>".$os["release_date"];
?>

29

 

 

รู้จักกับฟังชันก์

ฟังชันก์คือ การแยกส่วนการทำงานออกมาเป็นส่วนๆ เพื่อให้สามารถเรียกใช้งานได้ง่ายขึ้น เช่น ฟังชันก์ของการหาค่าของกำลัง 3
ใครอยากรู้ว่า ค่านี้กำลัง 3 จะมีค่าเท่าไหร่ ก็เรียกฟังชันก์นี้ได้ ซึ่งค่าที่ส่งเข้าไปในฟังชันก์จะเรียกว่า พารามิเตอร์ โดยจะมีกี่ตัวก็ได้

วิธีการเขียนก็ง่ายมาก คือมีคำว่า function ด้านหน้า ตามด้วยชื่อ แล้วก็มีวงเล็บตาม
ในวงเล็บคือค่าที่รับเข้ามา ขอบเขตการทำงานของ function จะอยู่ใน { ถึง }

<?php 
   function fn($parameter){
      // return something
   }
?>

 

วิธีการเรียกใช้งาน

$value = fn( $parameter );

โดยฟังชันก์จะมี return หรือไม่ก็ได้ หรือจะไม่มี parameter ก็ได้

ลองเขียนฟังชันก์หา ผลกำลังสาม

<?php 
    function getPower3($v){   // ประกาศฟังชันก์ รับพารามิเตอร์ชื่อ v
        return $v * $v * $v;  // เอา v มาคูณกันสามครั้ง แล้ว return กลับไป
    }

    $a = 7;
    $b = 56;
    $c = 187;
    echo "<br>".$a."^3 = ".getPower3($a);  // เอา a ยกกำลังสาม
    echo "<br>".$b."^3 = ".getPower3($b);  // เอา b ยกกำลังสาม
    echo "<br>".$c."^3 = ".getPower3($c);  // เอา c ยกกำลังสาม
?>

21

 

ลองรัน

22

จะเห็นฟังชันก์ช่วยลดโค้ดการทำงาน แยกออกมาเป็นส่วนๆได้

 

ฟังชันก์อื่นๆของ php

ใน php เองก็มีฟังชันก์ที่เตรียมไว้ให้แล้ว เช่น ฟังชันก์ที่ชื่อ print_r โดยจะสามารถใช้กับตัวแปร array ได้
คือมันจะปริ้นข้อความออกมาให้เลยว่า index นี้มีค่าอะไรบ้าง ไม่ต้องเขียนเอง มีฟังชันก์ให้ใช้งานเยอะมากๆ ลองหาข้อมูลดูได้

<?php 
    $name = ["Android" , "iOS" , "Windows" , "MacOS"];
    print_r($name);
?>

18

 

รู้จัก For Loop

มีหลายๆครั้งที่เราต้องทำงานซ้ำๆ แล้วก็อาจมีโค้ดซ้ำๆได้ เช่น มีโจทย์ว่าให้ปริ้นสูตรคูณแม่ 2

ถ้าเราเขียนตรงๆ ก็จะเขียนแบบปริ้นง่ายๆได้แบบนี้

<?php 
    echo "<br> 2x1 = 2";
    echo "<br> 2x2 = 4";
    echo "<br> 2x3 = 6";
    echo "<br> 2x4 = 8";
    echo "<br> 2x5 = 10";
    echo "<br> 2x6 = 12";
    echo "<br> 2x7 = 14";
    echo "<br> 2x8 = 16";
    echo "<br> 2x9 = 18";
    echo "<br> 2x10 = 20";
    echo "<br> 2x11 = 22";
    echo "<br> 2x12 = 24";
?>

25

 

ลองรัน

24

 

จะเห็นว่าโค้ดมีความซ้ำซ้อนอยู่ ก่อนหน้านี้เราเรียนเรื่อง ฟังชันก์ (fucntion) สามารถนำมาลองใช้กับเรื่องนี้ได้
คือแยกการทำงานการคูณและปริ้นออกมาเป็นฟังชันก์ แล้วรับค่าเป็นตัวคูณเข้ามา จะได้แบบนี้

<?php 
    function printTwoMultiply($a){
        echo "<br> 2x".$a." = ".($a*2);
    }

    printTwoMultiply(1);
    printTwoMultiply(2);
    printTwoMultiply(3);
    printTwoMultiply(4);
    printTwoMultiply(5);
    printTwoMultiply(6);
    printTwoMultiply(7);
    printTwoMultiply(8);
    printTwoMultiply(9);
    printTwoMultiply(10);
    printTwoMultiply(11);
    printTwoMultiply(12);
?>

26

ลองรันจะได้ผลลัพธ์เดิม

จะเห็นว่า ถ้าเราต้องปริ้นผลคูณไปถึง 100 เราก็ต้องเขียน 100 บรรทัดเลย และสังเกตว่า มีเลขยังเรียงกัน 1 2 3 4 5 6.. อีกด้วย ตรงนี้แก้ไขปัญหาด้วยการใช้ for loop นั่นเอง ซึ่งก็ให้โปรแกรมทำการรันเลขพวกนี้ให้ นี่คือ for loop

วิธีการคือ

    for(กำหนดค่าเริ่มต้น ; เงื่อนไขที่จะทำงาน ; หลังจากทำรอบเสร็จ){
        // ทำงาน
    }

เช่น

for($i=0;$i<=12;$i++){ // กำหนดค่า i เป็น 0 เงื่อนไขคือทำจนกว่า i<=12 ตอนทำรอบเสร็จก็ให้เพิ่มค้า i ขึ้น 1
   // 
}

ลองนำมาใช้กับการปริ้นสูตรคูณแม่ 2

<?php 
    function printTwoMultiply($a){
        echo "<br> 2x".$a." = ".($a*2);
    }

    for($i=0;$i<=12;$i++){ // i จะเพิ่มขึ้นเรื่อยๆ 0 1 2 ถึง 12
        printTwoMultiply($i);  // เรียกฟังชันก์ โดยส่งค่า i เข้าไป
    }

?>

27

จะเห็นว่า โค้ดสั้นมากขึ้น เป็นส่วนๆอีกด้วย เราจะปริ้น 100 บรรทัดก็แค่กำหนดค่าตรงเงื่อนไขนั่นเอง

 

รู้จัก While Loop

for loop นั้นต้องรู้จำนวนรอบที่แน่นอน เช่น 1-100 แต่ก็มีหลายๆครั้งที่เราไม่รู้ว่าต้องทำถึงเมื่อไหร่ แต่รู้ว่าทำถึงเงื่อนไขไหน แบบนี้ต้องใช้ while loop เช่น ให้ปริ้นผลคูณกำลังสองของ 2 จนกว่าจะมีค่ามากกว่า 1,000

ซึ่งจะมีสองแบบคือ เช็คเงื่อนไขก่อนแล้วค่อยทำ กับทำแล้วค่อยเช็คเงื่อนไข

เช็คเงื่อนไขแล้วค่อยทำ ลูปแบบนี้อาจจะไม่ได้ทำเลยสักรอบ เพราะไม่เข้าเงื่อนไขตั้งแต่ต้น

    while(เงื่อนไข){  ถ้าเงื่อนไขเป็นจริงทำในวงเล็บ
        //
    }

 

ส่วนแบบทำก่อน 1 รอบ แล้วค่อยเช็ค อันนี้ยังไงก็ทำก่อนรอบแรกแน่ๆ อย่างน้อยคือ 1 รอบ

do{
  //
}while(เงื่อนไข);

 

ลองเขียนลูป ให้ปริ้นผลคูณกำลังสองของ 2 จนไปเรื่อยๆกว่าจะมีค่ามากกว่า 1,000
จะเห็นว่าเราไม่รู้ว่ากี่รอบ ก็ใช้ loop แบบนี้ได้

<?php 
    $result = 1;
    while($result <= 1000){
        $result = $result *2;
        echo "<br>".$result;
    }
?>
<?php 
    $result = 1;
    do{
        $result = $result *2;
        echo "<br>".$result;
    }
    while($result <= 1000);
?>

30

Loop ซ้อน Loop

เราสามารถ loop มาซ้อนกันได้ เพื่อให้ทำงานวนซ้ำและใน 1 รอบก็มีวนซ้ำข้างในอีก เช่น ต้องการปริ้น 1-10 จำนวน 10 ครั้ง
จะเห็นว่าปริ้น 1-10 ก็ลูปนึง ถ้าจะทำอีก 10 ครั้งก็เอารูปมาซ้อนอีกที ทำลูปปริ้น 1-0 เสร็จ ก็ขึ้นบรรทัดใหม่

<?php 
    for($i=0; $i<10; $i++){
        for($j=1; $j<=10; $j++){
            echo $j." ";
        }
        echo"<br>";
    }
?>

31

 

รู้จักกับ Foreach

อีกตัวที่ควรรู้จักคือ Foreach มันคือการใช้ loop ร่วมกับ array จะเห็นว่า array คือข้อมูลชุด ซึ่งมีบ่อยครั้งที่เราต้อง loop เพื่อเข้าถึงข้อมูลแต่ละตัวใน array ดังนั้น foreach เลยเกิดมาเพื่อสิ่งนี้ โดยมันจะวนลูปสมาชิก array ให้เลย

foreach ( $arr as $data){  // วนลุป arr ทีละตัว แต่ละลูปสมาชิก array นั้น ชื่อว่า data
   // เอาตัวแปร data มาใช้
}

 

เช่น มี array อยู่ชุดนึง จะปริ้นค่า ก็ใช้ foreach ได้

<?php 
    $arr = ["One" , "Two" , "Three" , "Four"];

    foreach($arr as $data){
        echo"<br>".$data;
    }
?>

32

จะเห็นว่าจำนวนรอบก็คือ จำนวนสมาชิกใน array นั่นเอง ดังนั้นเราสามารถเขียนแบบ For loop ได้ โดยเงื่อนไขคือทำตามจำนวนสมาชิกของ array และวิธีรู้จำนวนสมาชิกของ array คือใช้ฟังชันก์ count($arr)

<?php 
    $arr = ["One" , "Two" , "Three" , "Four"];

    for($i=0 ; $i < count($arr) ; $i++){
        echo"<br>".$arr[$i];
    }
?>

สรุปคือ foreach คือรูปย่อของ loop ที่ใช้กับ array นั่นเอง

 

การบ้าน

เพื่อความเข้าใจมากขึ้น ลองเขียนให้ปริ้นสูตรคูณแม่ 2 ถึง 24 โดยใช้ความรู้เรื่อง Loop + Function

28a

โค้ดเฉลยการบ้าน
https://gist.github.com/benznest/4bf8141a65bd8c27e244496ca7e52b25

 

ต่อไปเป็นโจทย์คลาสสิคสำหรับเรื่อง loop คือการปริ้นสามเหลี่ยม กำหนดให้ตัวแปรแถว = 10

ปริ้นลูปสีเหลี่ยม

37

ปริ้นลูปสามสีเหลี่ยม A

33

 

ปริ้นลูปสามสีเหลี่ยม B

34

 

ปริ้นลูปสามสีเหลี่ยม C
ใบ้ว้าให้ใช้ <font color=’white’>O</font> แทนการเว้นวรรคช่องว่าง จะได้สวยๆ

35

 

ปริ้นลูปสามสีเหลี่ยม D

36

 

เฉลยการบ้านปริ้นสามเหลี่ยม

https://gist.github.com/benznest/699fe927d44e622ef1e0de3b9408a2cc

 

อีกข้อเพิ่มเติม คือ โจทย์ปริ้นนาฬิกาทรายครับ

38

เฉลยปริ้นนาฬิกาทราย

https://gist.github.com/benznest/36a86c07d6819cee377b0bda90d85ee6

 

สรุป

บทความนี้ได้สอนการติดตั้ง Web server จำลอง คือ โปรแกรม WAMP แล้วก็ติดตั้ง VS Code ไว้เขียนโปรแกรม จากนั้นก็สอนพื้นฐาน php เรื่องตัวแปร if-else , function จนถึง for loop บทความนี้สอน php เบื้องต้น แล้วก็ echo ปริ้นข้อความ ซึ่งเอามาใช้ร่วมกับ HTML ด้วย ในบทความนี้มีการใช้ <br> ซึ่งคือขึ้นบรรทัดใหม่

 

จบแล้ว

ขอจบตอน 1 เพียงเท่านี้ก่อน บทความนี้เป็นเรื่องพื้นฐานมากๆ ตอนหน้าจะพาไปทำที่ยากขึ้นไปอีกนิดครับ