Monday, December 24, 2012

Running php 5.x on windows using tomcat 4.x or 5.x

Running php 5.x on windows using tomcat 4.x or 5.x

By Angsuman Chakraborty, Gaea News Network
Saturday, December 11, 2004

What it solves:
  1. Using php 5.x on Tomcat 4.x or 5.x
  2. Enabling php only in one web application, instead of globally.

The simplest possible configuration is described. The descriptions are terse assuming your intelligence.
We will assume php will be installed in c:\ drive. Substitute with drive letter of your choice.
Instructions
  1. Download latest php 5.x zip file.
    I used http://www.php.net/get/php-5.0.2-Win32.zip/from/a/mirror .
  2. Download latest Collection of PECL modules. I used http://www.php.net/get/pecl-5.0.2-Win32.zip/from/a/mirror .
  3. Unzip php 5.x zip file anywhere, normally c:\php
  4. Copy php.ini-dist, in c:\php, as php.ini
  5. Uncomment the line (remove semi-colon at the beginning) in php.ini:
    ;extension=php_java.dll
  6. Extract php5servlet.dll from pecl zip file to c:\php (Uncheck "Use Folder Names" in WinZip).
    Ensure that the file is actually present in c:\php
  7. Install Tomcat and create a directory under webapps. Lets say it is named fun.
  8. Create WEB-INF directory under fun
  9. Create lib directory under WEB-INF
  10. Create web.xml under WEB-INF with the following contents:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app PUBLIC
      "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
      "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    <servlet>
     <servlet-name>php</servlet-name>
      <servlet-class>net.php.servlet</servlet-class>
     </servlet>
     <servlet>
      <servlet-name>php-formatter</servlet-name>
      <servlet-class>net.php.formatter</servlet-class>
     </servlet>
     <servlet-mapping>
      <servlet-name>php</servlet-name>
      <url-pattern>*.php</url-pattern>
     </servlet-mapping>
    
     <servlet-mapping>
      <servlet-name>php-formatter</servlet-name>
      <url-pattern>*.phps</url-pattern>
     </servlet-mapping>
    </web-app>
       
  11. Extract php5srvlt.jar and extract/unjar (jar xvf …) it under c:\
  12. Modify both the files reflect.properties and servlet.properties to change the line library=phpsrvlt to library=php5servlet and save them. This indicates the file name of the dll file which is loaded by the Java application to serve the requests. In my version the name of the dll was php5servlet.dll. Your mileage may vary. This has no connection with the name of the jar file which can be anything.
  13. Re-create the jar file
  14. Copy the jar file to WEB-INF\lib directory created earlier
  15. Add c:\php to your System or User Path in Windows enironment (Hint: Right-click and select Properties from My Computer)
  16. Create a file test.php under fun with the following code:
    <?php phpinfo(); ?>
  17. Start Tomcat (Go to [Tomcat installation directory]\bin and type Tomcat).
  18. Open your browser and go to http://localhost:8080/fun/test.php
  19. Ensure that there are no errors displayed. Instead you get an informative screen with php version information and whole lot of details
Let me know if this document is helpful to you.
Update: Made minor revision to highlight some key elements.
Solutions to common problems by users:
Whoever is getting this error “java.lang.UnsatisfiedLinkError: no php5servlet in java.library.path”. Please check the two properties file, whether there are any blank spaces. I was stuck in this problem for 2 days. There should be only one line, and no blank spaces. Check it now!!!. This is where the problem is lying.
–Arundhati
The versions of php and pecl must be the same.
–Mirek Mocek
You might want to add a reboot step at the end of your instructions. It would eliminate a lot of the problems with the unsatisfied link errors.
– Chuck Rosendahl
Note:
If you find this tutorial useful, please consider donating and enjoy the pleasure of giving.

Sunday, December 23, 2012

ตัวดำเนินการ Operators

ตัวดำเนินการ Operators
ตัวดำเนินการทางด้านคณิตศาสตร์ Arithmetic Operators
การใช้งานชื่อตัวดำเนินการ ความหมาย
$a + $bบวก หาผลรวมระหว่าง $a กับ $b
$a - $bลบ หาผลต่างระหว่าง $a กับ $b
$a * $bคูณ หาผลคูณระหว่าง $a กับ $b
$a / $b หารการหารระหว่าง $a กับ $b
$a % $bหารหาเศษ การหารเพื่อหาเอาเศษ ระหว่าง $a กับ $b
ตัวดำเนินการทางด้านการเพิ่มลดค่า Incrementing/Decrementing
การใช้งานชื่อตัวดำเนินการ ความหมาย
++$aPre-increment เพิ่มค่าทีละ 1 ก่อน แล้วค่อยให้ค่ากับตัวแปร
$a++Post-increment ให้ค่ากับตัวแปรก่อนแล้วค่อยเพิ่มค่าทีละ 1
--$aPre-Decrement ลดค่าทีละ 1 ก่อนแล้วค่อยให้ค่ากับตัวแปร
$a--Post-Dicrement ให้ค่ากับตัวแปรก่อนแล้วค่อยลดค่าทีละ 1

ตัวดำเนินการทางด้านตรรกศาสตร์ Logical Operators

การใช้งานชื่อตัวดำเนินการ ความหมาย
$a and $bและ เป็นจริง เมื่อ $a และ $b มีค่าเป็น จริง
$a or $bหรือ เป็นจริง เมื่อ $a หรือ $b มีค่าเป็น จริง
$a xor $bและ เป็นจริง เมื่อ $a และ $b ตัวใดตัวหนึ่งเป็น จริง>
! $aตรงกันข้าม เป็นจริง เมื่อ $a มีค่าเป็น เท็จ
$a && $bและ เป็นจริง เมื่อ $a และ $b มีค่าเป็น จริง
$a || $bหรือ เป็นจริง เมื่อ $a หรือ $b มีค่าเป็น เท็จ

ตัวดำเนินการทางเปรียบเทียบ Comparison Operators

การใช้งานชื่อตัวดำเนินการ ความหมาย
$a == $bเท่ากับ เป็นจริง เมื่อ $a มีค่าเท่ากับ $b
$a != $bไม่เท่ากับ เป็นจริง เมื่อ $a มีค่าไม่เท่ากับ $b
$a < $bน้อยกว่า เป็นจริง เมื่อ $a น้อยกว่า $b
$a > $bมากกว่า เป็นจริง เมื่อ $a มีค่ามากกว่า $b
$a <= $bน้อยกว่าหรือเท่ากับ เป็นจริง เมื่อ $a มีค่าน้อยกว่าหรือเท่ากับ $b
$a >= $bมากกว่าหรือเท่ากับ เป็นจริง เมื่อ $a มีค่ามากกว่าหรือเท่ากับ $b
ตัวควบคุมการทำงาน (Control Structures)
        ใน การเขียนโปรแกรมคอมพิวเตอร์นั้น คอมพิวเตอร์จะทำงานโดยเรียงลำดับลงมาจากบน - ลงล่าง (Top - Down) แต่ถ้าหากเราต้องการสั่งให้คอมพิวเตอร์ทำงานย้อนกลับ หรือมีการทำงานซ้ำ เราต้องมีตัวควบคุมการทำงานดังนี้
if...else...elseif
ตัวอย่างการใช้ if ตรวจสอบเงื่อนไขเดียว


       < ?
           $a=30;
           $b=20;
           if($a>$b)
               {
                    echo"a มีค่ามากกว่า b";
               }
        ? >
ตัวอย่างการใช้ if...else ตรวจสอบ 2 เงื่อนไข

       < ?
           $a=30;
           $b=50;
           if($a>$b)
                 {
                     echo"a มีค่ามากกว่า b";
                 }
               else
                 {
                    echo"a มีค่าน้อยกว่า b";
                 }
         ? >
While
       คำ สั่ง while เป็นคำสั่งที่ใช้ในการวนรอบ โดยจะมีการตรวจสอบเงื่อนไขก่อนแล้วค่อยมีการทำงานตามลำดับ แต่ถ้าเงื่อนไขไม่เป็นจริงก็จะออกจากการวนรอบของ while ทันที ดังตัวอย่างต่อไปนี้

        < ?
          $num=1;
          while=($num < =10)
             {
                echo $num++;
                echo"< br >";
             }				   				        
        ? >
Do.. while
       คำ สั่ง Do ..while เป็นคำสั่งที่ใช้ในการวนรอบ โดยจะทำงานตามคำสั่งที่ต้องการก่อน แล้วค่อยมีการตรวจสอบเงื่อนไขทีหลัง ซึ่งถ้าเงื่อนไขเป็นจริงก็จะวนรอบขึ้นมาทำงานตามคำสั่งที่ต้องการใหม่ แต่ถ้าเงื่อนไขเป็นเท็จ ก็จะออกจากวนรอบทันทีดังตัวอย่าง การหาผลบาก 1 ถึง 10 ต่อไปนี้

        < ?
          $num=1;
          $sum=0;
          do{
                $sum=$sum+$num;
                $num++;
              }while ( $num < = 10);
                echo"ผลลัพธ์ที่ได้คือ : $sum";
        ? >
For
       คำ สั่ง For เป็นคำสั่งที่ใช้ในการวนรอบ แต่จะไม่มีการตรวจสอบเงื่อนไข จะทำตามค่าที่ได้กำหนดไว้แล้วเท่านั้น ดังตัวอย่างต่อไปนี้

          < ?
              for($num=1;$num < = 10;$num++;)
                {
                      echo"$num < br >";
                }
          ? >
Break
       คำสั่ง Break เป็นคำสั่งที่ใช้ในการหลุดออกจากเงื่อนไข หรือ จบเงื่อนไขทันที ดังจะเห็นได้จากตัวอย่างต่อไปนี้

      < ?
          $num=0;
          while=($num < =50)
             {
                if($num==20)
                     {
                        Break;
                     }
                    echo"$num < br >";
                    $num++;
              }			   				        
        ? >
Continue
       คำ สั่ง Continue เป็นคำสั่งที่ใช้ควบคู่กับคำสั่งวนรอบ โดยเมื่อโปรแกรมทำการรันคำสั่งนี้ จะเป็นการกระโดดไปเริ่มต้นรอบใหม่ทันที (ใช้กับคำสั่ง for คำสั่ง while) ตัวอย่างเป็นการพิมพ์เลขคู่จาก 0 ถึง 50

       < ?
         for($num=0;$num< =50;$num++)
             { 
                 if($num % 2)
                     {
                        continue;
                     }
                     echo"$num < br >";
              }
       ? >
Switch
       คำสั่ง Switch เป็นคำสั่งที่ใช้ในการเลือกเงื่อนไขจำนวนมาก ๆ ซึ่งจะสะดวกกว่าการใช้คำสั่ง if ดังตัวอย่างต่อไปนี้

        < ?
          $num=2;
          switch($num)
              {
                case=0:
                     echo"num มีค่าเท่ากับ 0";
	                 break;
                case=1:
                     echo"num มีค่าเท่ากับ 1";
                     break;
                case=2:
                     echo"num มีค่าเท่ากับ 2";
                     break;
                default;
                     echo"num ไม่มีค่าเท่ากับ 0,1 หรือ 2 เลย";
             }			   				        
          ? >
Include()
       คำสั่ง Include เป็นการเรียก PHP script ที่อยู่ในไฟล์อื่นเข้ามาทำงานโดยสามารถเรียกใช้งานภายใต้โครงสร้างของการวนรอบ (Loop)

        < ?
          $fi=array('inc1.inc','inc2.inc','inc3.inc');
          for=($num=0;$num < count($fi);$num++)
             {
                 include $fi[$num];
             }			   				        
        ? >
Require();
       คำ สั่ง Require(); เป็นการเรียก PHP script ที่อยู่ในไฟล์อื่นเข้ามาทำงานคล้ายกับคำสั่ง Include() แต่ไม่สามารถเรียกใช้งานภายใต้โครงสร้างของการวนรอบ (Loop) ได้ดังตัวอย่าง

         < ?
              require('library.inc");
         ? >
Fanctions
       ฟังก์ชัน นั้นนอกจากที่มากับตัว Libraries ของ PHP แล้ว เราสามารถที่จะเขียนฟังก์ชันการทำงานขึ้นใช้เองได้ ซึ่งมีอยู่ 2 แบบด้วยกันคือ
       1. ฟังก์ชันที่ไม่มีการส่งค่าระหว่างฟังก์ชัน
       2. ฟังก์ชั่นที่มีการส่งค่าระหว่างฟังก์ชั่น


         < ?
               function task()
                 {
                     echo"http://task.rid.ac.th< br>";
                     echo"Contact : srisod@hotmail.com< br>";
                     echo"Thank you";
                 }
                     task();
          ? >

การกำหนดชนิดของข้อมูล (Types) ให้กับตัวแปร

การกำหนดชนิดของข้อมูล (Types) ให้กับตัวแปร
         ในภาษา PHP จะเหมือนกับภาษาระดับสูงอื่น ๆ คือมีการกำหนดตัวแปร ซึ่งวธีการกำหนดตัวแปรใน PHP นั้นจะใช้ เครื่องหมายดอลล่าร์ ($) ดังนี้

$a=1; # ตัวอย่างที่ 1
$a=2; # ตัวอย่างที่ 1
         ประโยชน์อย่างหนึ่งของตัวแปรนั้น คือการเก็บค่าข้อมูลชั่ว คราวเพื่อใช้ในการประมวลผล ซึ่งค่าข้อมูลที่ตัวแปรสามารถเก็บได้จะมีทั้ง ตัวอักษร ตัวเลข ดังตารางต่อไปนี้
Integersตัวเลขจำนวนเต็ม เช่น 123, - 233
Floating point numbersตัวเลขที่มีทศนิยม เช่น 123.22
Stringsตัวอักษร ข้อความ เช่น "HELLO PHP"
Arraysข้อมูลเป็นชุด กลุ่มสมาชิก
Objectsข้อมูลในลักษณะของการเรียกใช้เป็น Class Object หรือ Function
Type jugglingข้อมูลในลักษณะที่ขึ้นกับตัว Operator
Integers
       ตัวอย่างการใช้งาน ตัวเลขจำนวนเต็ม (Integers)


             $a=123;       #ตัวอย่างที่ 1
             $a=-456;      #ตัวอย่างที่ 2
             $a=0789;     #ตัวอย่างที่ 3 มีค่าเท่ากับ (789) ฐานแปด
             $a=0x10;      #ตัวอย่างที่ 4 มีค่าเท่ากับ (10)  ฐานสิบหก
ตัวเลขทศนิยม (Floating point numbers)
       ตัวอย่างการใช้งาน Floating point numbers


             $a=1.732;       #ตัวอย่างที่ 1
             $a=1.2e5;       #ตัวอย่างที่ 2
ข้อความ (Strings)
       ตัวอย่างการใช้งาน Strings ใช้ในการเก็บข้อมูลที่ เป็นค่าคงที่ เช่นข้อความต่าง ๆ ในการกำหนดข้อมูลประเภท Strings นั้น จะมีรหัสควบคุมดังนี้

ตารางรหัสควบคุม String
\nสำหรับขึ้นบรรทัดใหม
\rCarriage ใช้สำหรับให้ตัว Cussor ไปอยู่ที่ต้นของบรรทัด
\tใช้ในการเลื่อน Tab
\\ใช้ในการพิมพ์เครื่องหมาย \ (Backslash)
\$ใช้ในการพิมพ์เครื่องหมาย $ (Dollar Sing)
\"ใช้ในการพิมพ์เครื่องหมาย " (Double-Quote)
\[0-7]{1,3}ช้กำหนดอักขระเป็นรหัส ASCII ฐาน 8
\X[0-9A-Fa-f]{1,2}ใช้กำหนดอักขระเป็นรหัส ASCII ฐาน 16
       ตัวอย่างการใช้งาน Strings

             $a="Test";
             $b=$a  "PHP";
             echo"$b";
       ผล : Test PHP
กลุ่มข้อมูล (Arrays)
       อะเรย์ คือ การเก็บข้อมูลเป็นชุด โดยแต่ละชุดจะมีสมาชิกได้หลายตัว และเราอ้างถงสมาชิกในอะเรย์นั้นได้โดยใช้เครื่องหมาย [...]

อะเรย์ 1 มิติ (Single Dimension Arrays)

             $a[0]="test";      #กำหนดให้สมาชิก 0 ของอะเรย์ a เก็บค่า test
             $a[1]="php";      #กำหนดให้สมาชิก 1 ของอะเรย์ a เก็บค่า php
             $b["var"]=50      #กำหนดให้สมาชิก var ของอะเรย์ b เก็บค่า 50
อะเรย์หลายมิติ (Multi - Dimensional Arrays)

             $a[1]=$f;                             #อะเรย์แบบ 1 มิติ
             $a["var"]=$f;                       #อะเรย์แบบ 1 มิติ
             $a[1][0]=$f;                         #อะเรย์แบบ 2 มิติ
             $a["var"][2]=$f;                   #อะเรย์แบบผสม 2 มิติ
             $a[3]["tmp"]=$f;                   #อะเรย์แบบผสม 2 มิติ
             $a["var"][4]["tmp"][0]=$f;    #อะเรย์แบบผสม 4 มิติ
ข้อมูลแบบวัตถุ (Objects)
        Objects คือการเขียนชุดคำสั่งที่ มีลักษณะเป็นโปรแกรมย่อยเชิงวัตถุ ในการทำงาน อาจจะอยู่ในรูปของ Class หรือ Function การทำงาน เช่น


       class who
            {
               function get_who()
                  {
                     echo"My name is PHP";
                  }
            }
            $name=new who;
            $name->get_who(); 
       จาก โค้ดเราได้สร้างคลาส who และมีฟังก์ชั่นชื่อ get_who อยู่ภายในคลาส ต่อมาเราได้สร้างตัวแปร name ที่เป็นออบเจกต์ที่เกิดจากคลาส who ($name=new who;) ตัวแปร name ที่เราสร้างจากคลาส who จะมีคุณสมบัติเหมือนกับคลาส who คือสามารถให้ฟังก์ชั่น get_who ได้ ($name->get_who();) จากตัวอย่างจะเห็นได้ว่าเวลาเรียกใช้ เราสามารถเรียกใช้แค่ฟังก์ชั่นที่เราสร้างชั้นเท่านั้น ลักษณะงานที่เราทำงานบ่อย ๆ ก็ควรที่จะเขียนเป็นฟังก์ชั่นไว้เรียกใช้งาน จากตัวอย่างนี้ ผลลัพธ์ที่ได้คือข้อความว่า My name is PHP
Type juggling
        เป็นการเก็บข้อมูลในลักษณะที่ขึ้นกับตัว Operator ตัวอย่างการใช้งาน Type juggling

       $var=5+"10 Small";
     $var มีค่าเท่ากับ 15 โดยดูจาก Operator เป็นเครื่องหมาย + ทำให้ PHP มองค่าทั้งสองเป็นตัวเลข (integer)

การเขียนอธิบายโปรแกรมด้วย Comment

การเขียนอธิบายโปรแกรมด้วย Comment
       ในการเขียน คำบรรยายโปรแกรม หรือการยกเลิกโค้ดคำสั่งบางบรรทัดชั่วคราวหรือการเพิ่มรายละเอียดโปรแกรมเพื่อใช้เตือนความจำ ซึ่งเป็นส่วน ที่ไม่เกี่ยวข้องกับตัวโปรแกรม เราสามารถใช้สัญลักษณ์ // และ # เพื่อบอกให้ตัวแปลภาษาไม่ต้องสนใจประโยคเหล่านั้นได้ดังตัวอย่าง

         < html >
                < head >
                       < title > TEST PHP < /title >
                < /head >
         < body >
                < h3 > TEST ECHO < /h3 >
                < ?// echo "HELLO PHP"; ? >
        < /body >
        < /html >
       จะ เห็นได้ว่าตัวแปลภาษา PHP จะไม่สนใจโค้ดที่ถูก Comment อยู่จึงทำให้ผลลัพธ์ที่ออกมามีแต่ประโยคที่เกิดจาก HTML เพียงอย่างเดียว จะเห็นผลลัพธ์ดังนี้
TEST PHP

ตัวอย่างโปรแกรมที่เขียนด้วย PHP

ตัวอย่างโปรแกรมที่เขียนด้วย PHP
       เมื่อเราได้รู้จัก โครงสร้างภาษา PHP และได้ทราบว่า PHP สามารถทำงานควบคู่กับ HTML ได้ โดยสร้างโค้ดต่อไปนี้


         < html >
                < head >
                       < title > TEST PHP < /title >
                < /head >
         < body >
                < h3 > TEST ECHO < /h3 >
                < ? echo "HELLO PHP"; ? >
        < /body >
        < /html >
       จาก นั้นเรานำไฟล์ที่สร้างขึ้นไปเก็บไว้ที่ Home Directory ของ Web server ที่เราใช้ เช่น ถ้าใช้ OmniHTTPd จะมี Home Directory เป็น C:\httpd\HtDocs  ถ้าเป็น Personal Web Server จะมี Home Directory เป็น C:\Inetpub\wwwroot   ถ้าเป็น UNIX จะมี Directory เป็น /home/httpd/htdocs สุดท้ายคือการดูผลลัพธ์โปรแกรม ให้เราเรียก Browser ขึ้นมา (ให้เราสังเกตที่ Taskbar ว่า Web server ทำงานอยู่หรือไม่) จากนั้นระบุ URL ดังนี้ http://127.0.0.1/test.php จะเห็นผลลัพธ์ดังนี้
TEST PHP
TEST ECHO
       จะเห็นผลลัพธ์ดังรูป โดยประโยคแรกจะเกิดจากคำสั่ง HTML ส่วนประโยคด้านล่างจะเกิดจากคำสั่ง PHP

รูปแบบโครงสร้างพื้นฐานของ PHP

รูปแบบโครงสร้างพื้นฐานของ PHP         PHP เป็นภาษาที่สามารถใช้งานร่วมกับภาษา HTML ได้ ในการเขียนรหัส (Code) โปรแกรม มีวิธีการเขียนได้หลายรูปแบบ จึงจำเป็นต้องมี สัญลักษณ์ที่บ่งบอกถึงขอบเขตของ PHP เพื่อที่จะแยกโค้ด PHP ออกจากโค้ด HTML ได้อย่างชัดเจน โดยมีรูปแบบในการเขียนแทนด้วยสัญลักษณ์ต่าง ๆ ที่เรา สามารถนำมาใช้แยกโค้ด PHP ได้มีดังนี้

1. การเขียนแบบ SGML (Standard Generalized Markup Language) เป็นรูปแบบการเขียนที่เป็นมาตรฐานของภาษาประเภท xxML โดยมีรูปแบบ
การเขียนดังตัวอย่าง
         < ?
              echo("PHP SGML Syntax\n");
         ? >
		 
       เปิดด้วยแท็ก < ? และปิดด้วยแท็ก ? > ภายใต้แท็ก < ? ... ? > คือคำสั่งที่ เราเขียนขึ้น ตามหลักของภาษา PHP

2. การเขียนแบบ XML Document เป็นรูปแบบการเขียนของภาษาประเภท XML
โดยมีรูปแบบ ชื่อของภาษาที่ใช้อยู่บริเวณ TAG เปิด การเขียนดังตัวอย่าง
         < ?PHP
              echo("PHP Language Syntax\n");
         ? >
		 
       เปิดด้วยแท็ก < ?PHP และปิดด้วยแท็ก ? > ภายใต้แท็ก < ? ... ? > คือคำสั่งที่ เราเขียนขึ้น ตามหลักของภาษา PHP

3. การเขียนแบบภาษา Script เป็นรูปแบบการเขียนคล้ายกับภาษา JAVA Script
การเขียนดังตัวอย่าง
         < script language="PHP">
              echo("PHP Script Language Style\n");
        < /script >
		 
       เปิดด้วยแท็ก < script language="PHP"> และปิดด้วยแท็ก < /script >

4. การเขียนแบบ ASP (Active Server Page) เป็นรูปแบบการเขียนที่เป็น
มาตรฐานของภาษาประเภท ASP โดยมีรูปแบบ
การเขียนดังตัวอย่าง
         < %
              echo("PHP ASP Syntax\n");
         %>
		 
       เปิดด้วยแท็ก < % และปิดด้วยแท็ก % > ภายใต้แท็ก < % ... %> คือคำสั่งที่ เราเขียนขึ้น ตามหลักของภาษา PHP

โครงสร้างของภาษา PHP

โครงสร้างของภาษา PHP

PHP คืออะไร
     ในช่วงแรกภาษาที่นิยมใช้งานบนระบบ เครือข่าย คือ ภาษา HTML (Hypertext Markup Language) แต่ภาษา HTML มีลักษณะเป็น Static คือ ภาษาที่มีลักษณะของข้อมูลคงที่ ซึ่งไม่เพียงพอต่อความต้องการในปัจจุบันที่นิยมใช้ระบบเครือข่าย Internet เป็นศูนย์กลางในการติดต่อระหว่างกัน ทำให้ต้องการใช้เว็บไซต์ที่มีลักษณะเป็นแบบ Dynamic คือ เว็บไซต์ที่ข้อมูลสามารถเปลี่ยนแปลงได้โดยอัตโนมัติตามเงื่อนไขต่าง ๆ ที่ผู้เขียนเว็บไซต์เป็นผู้กำหนด และการควบคุมการทำงานเหล่านี้จะกระทำโดยโปรแกรมภาษาสคริปต์ เช่น ภาษา PHP ซึ่งเป็นภาษาหนึ่งที่ได้รับความนิยมเป็นอย่างมากในปัจจุบัน

     PHP ถูกสร้างขึ้นในปี ค.ศ.1994 โดย Rasmus Lerdorf ต่อมามีผู้ให้ความสนใจเป็นจำนวนมาก จึงได้ออกเป็นแพ็คเกจ "Personal Home Page" ซึ่งเป็นที่มาของ PHP โดยภาษา PHP เป็นแบบ Server Side Script และเป็น Open Source ที่ผู้ใช้ทั่วไปสามารถดาวน์โหลด Source Code และโปรแกรมไปใช้ฟรี ได้ที่ http://www.php.net

     พอกลางปี ค.ศ.1995 เขาก็ได้พัฒนาตัวแปลภาษา PHP ขึ้นมาใหม่ โดยใช้ชื่อว่า PHP/FI เวอร์ชั่น 2 ซึ่งได้เพิ่มความสามารถในการรับข้อมูลที่ส่งมาจากฟอร์มของ HTML (จึงมีชื่อว่า FI หรือ Form Interpreter) นอกจากนั้นยังเพิ่มความสามารถในการติดต่อกับฐานข้อมูลอีกด้วย จึงทำให้ผู้คนเริ่มหันมาสนใจ PHP กันมากขึ้น

     ในปี 1997 มีผู้ร่วมพัฒนา PHP เพิ่มอีก 2 คน คือ Zeev Suraski และ Andi Gutmans (กลุ่มที่เรียกตัวเองว่า Zend ซึ่งย่อมาจาก Zeev และ Andi ) โดยได้แก้ไขข้อบกพร่องต่างๆ และเพิ่มเติมเครื่องมือให้มากขึ้น

โครงสร้างของภาษา PHP
     ภาษา PHP มีลักษณะเป็น embedded script หมายความว่าเราสามารถฝังคำสั่ง PHP ไว้ในเว็บเพจร่วมกับคำสั่ง(Tag) ของ HTML ได้ และสร้างไฟล์ที่มีนามสกุลเป็น .php, .php3 หรือ .php4 ซึ่งไวยากรณ์ที่ใช้ใน PHP เป็นการนำรูปแบบของภาษาต่างๆ มารวมกันได้แก่ C, Perl และ Java ทำให้ผู้ใช้ที่มีพื้นฐานของภาษาเหล่านี้อยู่แล้วสามารถศึกษา และใช้งานภาษานี้ได้ไม่ยาก
ตัวอย่างที่ 1
1
2
3
4
5
6
7
8
9
10
<html>
<head>
<title>Example 1 </title>
</head>
<body>

<?
   echo"Hi, I'm a PHP script!";
?>

</body>
</html>

     จากตัวอย่าง บรรทัดที่ 6 - 8 เป็นส่วนของสคริปต์ PHP ซึ่งเริ่มต้นด้วย <? ตามด้วยคำสั่งที่เรียกฟังก์ชั่นหรือข้อความ และปิดท้ายด้วย ?> สำหรับตัวอย่างนี้เป็นสคริปต์ที่แสดงข้อความว่า "Hi, I'm a PHP script" โดยใช้คำสั่ง echo ซึ่งเป็นคำสั่งที่ใช้ในการแสดงผลของภาษาสคริปต์ PHP ซึ่งจะแสดงผลดังนี้
 เราสามารถฝังคำสั่ง PHP ไว้ในเว็บเพจหนึ่งๆ โดยเปิดและปิดด้วยแท็ก(Tag) ของ PHP กี่ครั้งก็ได้ ดังตัวอย่างต่อไปนี้

ตัวอย่างที่ 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<html>
<head>
<title>Example 1 </title>
</head>
<body>

<table border=1>
<tr>
<td>
<? echo"PHP script block 1"; ?></td>
<td>
<? echo"PHP script block 2 "; ?></td>
</tr>
</table>

<?
   echo"PHP script block 3 <br> ";
   echo date("ขณะนี้เวลา H:i น.");
?>

</body>
</html>

แสดงผลลัพธ์

ความสามารถของภาษา PHP
  • เป็นภาษาที่มีลักษณะเป็นแบบ Open source ผู้ใช้สามารถ Download และนำ Source code ของ PHP ไปใช้ได้โดยไม่เสียค่าใช้จ่าย
  • เป็นสคริปต์แบบ Server Side Script ดังนั้นจึงทำงานบนเว็บเซิร์ฟเวอร์ ไม่ส่งผลกับการทำงานของเครื่อง Client โดย PHP จะอ่านโค้ด และทำงานที่เซิร์ฟเวอร์ จากนั้นจึงส่งผลลัพธ์ที่ได้จากการประมวลผลมาที่เครื่องของผู้ใช้ในรูปแบบของ HTML ซึ่งโค้ดของ PHP นี้ผู้ใช้จะไม่สามารถมองเห็นได้
  • PHP สามารถทำงานได้ในระบบปฎิบัติการที่ต่างชนิดกัน เช่น Unix, Windows, Mac OS หรือ Risc OS อย่างมีประสิทธิภาพ เนื่องจาก PHP เป็นสคริปต์ที่ต้องทำงานบนเซิร์ฟเวอร์ ดังนั้นคอมพิวเตอร์สำหรับเรียกใช้คำสั่ง PHP จึงจำเป็นต้องติดตั้งโปรแกรมเว็บเซิร์ฟเวอร์ไว้ด้วย เพื่อให้สามารถประมวลผล PHP ได้
  • PHP สามารถทำงานได้ในเว็บเซิร์ฟเวอร์หลายชนิด เช่น Personal Web Server(PWS), Apache, OmniHttpd และ Internet Information Service(IIS) เป็นต้น
  • ภาษา PHP สนับสนุนการเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming)
  • PHP มีความสามารถในการทำงานร่วมกับระบบจัดการฐานข้อมูลที่หลากหลาย ซึ่งระบบจัดการฐานข้อมูลที่สนับสนุนการทำงานของ PHP เช่น Oracle, MySQL, FilePro, Solid, FrontBase, mSQL และ MS SQL เป็นต้น
  • PHP อนุญาตให้ผู้ใช้สร้างเว็บไซต์ซึ่งทำงานผ่านโปรโตคอลชนิดต่างๆ ได้ เช่น LDAP, IMAP, SNMP, POP3 และ HTTP เป็นต้น
  • โค้ด PHP สามารถเขียน และอ่านในรูปแบบของ XML ได้

PHP คืออะไร

PHP คืออะไร

หลายคนที่ทำเว็บไซต์ด้วย HTML หรือโปรแกรมช่วยสร้างเว็บไซต์ต่างๆ เช่น Dreamweaver แล้วอาจสงสัยว่าเมื่อทำ form สำหรับ รับค่าเช่น ชื่อ ที่อยู่ เสร็จแล้วจะเก็บค่ายังไง หรือจะทำอย่างไรต่อ หรือเว็บบอร์ดทำงานอย่างไร CMS ทำงานอย่างไร ทำไมบางเว็บไซต์สามารถโต้ตอบกับ ผู้ใช้งานได้ คำตอบของทุกคำถามคือ PHP ครับ

PHP นั้นเป็นภาษาสำหรับใช้ในการเขียนโปรแกรมบนเว็บไซต์ สามารถเขียนได้หลากหลายโปรแกรมเช่นเดียวกับภาษาทั่วไป อาจมีข้อสงสัยว่า ต่างจาก HTML อย่างไร คำตอบคือ HTML นั้นเป็นภาษาที่ใช้ในการจัดรูปแบบของเว็บไซต์ จัดตำแหน่งรูป จัดรูปแบบตัวอักษร หรือใส่สีสันให้กับ เว็บไซต์ของเรา แต่ PHP นั้นเป็นส่วนที่ใช้ในการคำนวน ประมวลผล เก็บค่า และทำตามคำสั่งต่างๆ อย่างเช่น รับค่าจากแบบ form ที่เราทำ รับค่าจากช่องคำตอบของเว็บบอร์ดและเก็บไว้เพื่อนำมาแสดงผลต่อไป แม้แต่กระทั่งใช้ในการเขียน CMS ยอดนิยมเช่น Drupal , Joomla พูดง่ายๆคือเว็บไซต์จะโต้ตอบกับผู้ใช้ได้ ต้องมีภาษา PHP ส่วน HTML หรือ Javascript ใช้เป็นเพียงแค่ตัวควบคุมการแสดงผลเท่านั้น

นอกจากภาษา PHP แล้วยังมีภาษาอื่นอีกหรือไม่
คำตอบคือมีครับ เช่น ASP , JSP แต่ที่นิยมมาก คือ PHP เพราะเป็นภาษาที่สามารถศึกษาได้ง่าย ทำงานได้มีประสิทธิภาพ ทำให้เป็นที่นิยมอย่างยิ่งในปัจจุบัน รวมทั้งมีชุมชนคนใช้งาน และคู่มือที่ ดีมาก และสำคัญสุดคือฟรีครับ การใช้งานภาษา PHP ไม่ต้องมีค่าใช้จ่ายใดๆทั้งสิ้น ทุกคนสามารถเข้าถึงได้

การจะเขียน PHP ต้องมีอะไรบ้าง
อย่างที่บอกไปว่า PHP นั้นจำเป็นจะต้องมีการประมวลผลดังนั้นการใช้งานเราจะต้องมี Web Server เพื่อให้ตัว PHP สามารถทำงานได้ ต่างจาก HTML งั้นจะทำอย่างไรถ้าเราไม่ได้เช่า Web Server เอาไว้จะใช้งาน PHP ไม่ได้หรือ คำตอบคือได้ครับ แต่เราจะต้องลงโปรแกรม ให้เครื่องที่เราใช้งานอยู่นั้นทำงานเหมือนกับ Web Server ซะก่อนซึ่งโปรแกรมนั้นชื่อว่า Apache ครับเป็นโปรแกรมฟรีเหมือนกัน นี่เป็นข้อดี ที่ทำให้ทุกคนรัก PHP ครับ หลังจากที่เราทำให้เครื่องของเรานั้นเหมือนกับ Web Server แล้วจะเก็บข้อมูลเว็บไซต์เช่น คำตอบของเว็บบอร์ด จะเก็บอย่างไร คำตอบคือต้องมีโปรแกรมฐานข้อมูลอีกตัวเข้ามาช่วยครับ ซึ่งโปรแกรมที่แนะนำคือ MySQL ครับฟรีอีกเช่นกัน ทั้งหมดสำหรับมือใหม่อาจ จะเริ่มลงโปรแกรมทั้งหมดนั้นยากนะครับ จึงมีโปรแกรมที่รวมทุกอย่าง เพื่อจำลองเครื่องของเราให้เป็น Web Server เลยสามารถลงได้ง่ายๆ ซึ่ง จะมีสอนในบทต่อไปนะครับ

การพัฒนาเว็บไซต์ด้วย PHP
สำหรับผู้พัฒนาเว็บไซต์ด้วย PHP นั้นปรกติจะทำการจำลองเครื่องของตัวเองให้เป็น Web Server ระหว่างการพัฒนาเพื่อดูการทำงาน ของโปรแกรมที่เขียนขึ้นมาครับ จากนั้นจึงจะอัพไฟล์ทั้งหมดลงใน Web Server จริงครับ ในส่วนของ Web Server นั้นทาง Hellomyweb ก็มีให้บริการอยู่นะครับ สนใจคลิกที่นี่ครับ ถามว่าเราจะให้เครื่องคอมพิวเตอร์ของเรานั้นทำงานได้เหมือนกับ Web server จริงได้หรือไม่ คำตอบคือได้ครับ แต่มันออกจะไม่คุ่มค่า ทางการเงินนะครับ เพราะเราต้องเสียค่าไฟ ค่าอินเตอร์เน็ต เครื่องคอมก็ต้องเปิดไว้ตลอดปิดไม่ได้ เวลาผู้ใช้งานจากภายนอกมาเรียกใช้ก็รองรับไม่ได้ไม่มาก ดังนั้นการเช่า Web Server ภายนอกจะคุ่มค่ามากกว่าครับ หากต้องการจะพัฒนาเว็บไซต์เพื่อใช้งานจริงๆ

สำหรับคนที่มีข้อสงสัยหรือมีคำถามสามารถตั้งคำถามได้ที่ Webboard ของ Hellomyweb นะครับ ทางเรายินดีตอบทุกคำถามครับ สำหรับบทต่อไปจะพูดถึงโปรแกรมที่ทำการจำลองเว็บไซต์ของเราให้เป็น Web Server ครับ

Wednesday, October 3, 2012

การปรับแต่ง Read More ใน Wordpress

การปรับแต่ง Read More ใน Wordpress

Read More คืออะไร ?
Read More เป็นฟังก์ชั่นหนึ่งในการเขียนบทความใน Wordpress ที่ช่วยแบ่งบทความที่ยาวออกเป็น 2 ส่วน
  • ส่วนที่ 1 : เป็นส่วนที่แสดงอยู่ในหน้าแรกของเว็บไซต์ และจะจบท้ายบทความด้วย Read more..
  • ส่วนที่ 2 : เป็นบทความที่แบ่งซ่อนไว้ จะแสดงให้เห็นเมื่อมีการคลิ๊กอ่านที่ชื่อเรื่อง หรือที่ Read more.
การบอกให้ Wordpress รู้ว่าส่วนใดเป็นส่วนที่ 1 หรือ ส่วนที่ 2 ด้วยการใส่ <--more--> แทรกเข้าไปในบทความ

ปรับแต่งทำไม ?
ไม่ชอบ ที่จบบทความ แล้วตามด้วย Read more.. อยากให้มีข้อต้องการกำหนดเอง

ปรับแต่งตรงไหน ?
ให้เปิดไฟล์ index.php ในไฟล์ธีม default หา the_content()
the_content('Read the rest of this entry »')
ตามตัวอย่างจะเห็นว่าตอนนี้หากเราใช้ฟังก์ชั่น Read more เราจะพบข้อความ Read the rest of this entry >>
จากนั้นลองเปลี่ยนข้อความเป็น the_content('คลิ๊ก..เพื่ออ่านบทความต่อ')
จะพบว่าเมื่อใช้ฟังก์ชั่น Read more ตอนนี้ข้อความจะเปลี่ยนเป็น คลิ๊ก..เพื่ออ่านบทความต่อ

หา Path ของ Website

หา Path ของ Website

วิธีหา Path ของ Website
เคยมีปัญหากันไหมครับ เวลาจะติดตั้ง Script ลงเว็บไซต์บางครั้ง ต้องใส่ค่า Path ที่ติดตั้งโปรแกรม
แล้วจะเอาค่าอะไรไปใส่ แต่ละโฮสต์ก็ใช้ค่าไม่เหมือนกัน

<?php
//Gets the document root
$root = getenv("DOCUMENT_ROOT") ;
Echo $root;
?>

เอา โค้ดด้านบนไปใช้ได้เลยครับ อย่างของผมเซฟเป็นไฟล์ชื่อ docroot.php แล้วอัพโหลดไปวางไปที่ root ที่จะติดตั้งสคริปส์ เรียกใช้ docroot.php ก็จะแสดงชื่อ Path ของ website ออกมา

หมายเหตุ : SMF PATH (ใช้โฮสต์ที่เป็น Directadmin)
หลังจากใช้ docroot.php ข้างบนได้ Path ออกมาเอาไปใส่ใน SMF ขึ้น Bad Path

/home/ชื่อuser/domains/ชื่อเว็บ.com/public_html/ไดเร็คทอรี่ที่ติดตั้ง SMF

ถ้าใช้ตามด้านบนแล้วขึ้น Bad Path ให้ลองตัด /home/ชื่อuser ออกนะครับ ให้เหลือแค่ด้านล่าง

/domains/ชื่อเว็บ.com/public_html/ไดเร็คทอรี่ที่ติดตั้ง SMF

เขียนยังไงให้ code php แสดงในหน้าบทความ Blogger

เขียนยังไงให้ code php แสดงในหน้าบทความ Blogger

แสดง code php ในหน้าบทความ Blogger
ที่เขียนเรื่องนี้เพราะเหตุมาจากจะเรื่อง หา Path ของ Website
เพราะเขียนโค้ดลงไป โค้ดที่เขียนก็หายไปบ้าง แสดงผลไม่ครบบ้าง
เลยต้องไปค้นหาวิธีมา ทำให้ทราบว่าต้องใช้แท๊ก

ครอบที่โค้ดที่จะเขียนซะก่อน

ถัดมาเป็นเครื่องหมาย

ก็ไม่สามารถแสดงผลใน Blogger ได้


สรุปว่า code ที่ต้องใช้เพื่อให้แสดงผลเป็น code ในบทความ หา Path ของ Website

ได้ผลดังข้างล่าง
<?php
//Gets the documet root
$root=getenv("DOCUMETN_ROOT");
Echo $root;
?>

Thursday, July 19, 2012

ฟังก์ชัน PHP ที่มีประโยชน์

PHP มีฟังก์ชันภายในที่ทำงานกับข้อความและการแสดงผล ในเบื้องต้นจะแนะนำบางฟังก์ชันที่มีประโยชน์

nl2br

ถ้า สังเกตให้ดีจะพบว่าข้อความที่มีการเว้นบรรทัดนั้น เมื่อแสดงผลด้วย HTML จะไม่ขึ้นบรรทัดใหม่ใน browser ของผู้ใช้ เนื่องจากการตัด whitespace ดังนั้นการแสดงผลให้เว้นบรรทัด ให้เรียกฟังก์ชัน nl2br() ที่จะแปลงตัวอักษรบรรทัดใหม่ให้เป็น </br> tag ตามสคริปต์นี้

<?php

$stringval =<<<NLSTRING

นี่เป็นตัวอย่างข้อความที่
ประกอบด้วยการขึ้นบรรทัดใหม่
และต้องการดูผลลัพธ์
ให้เหมือนกับข้อความต้นทางนี้

NLSTRING;

                  echo nl2br($stringval);

?>

ผลลัพธ์คือ

นี่เป็นตัวอย่างข้อความที่
ประกอบด้วยการขึ้นบรรทัดใหม่
และต้องการดูผลลัพธ์
ให้เหมือนกับข้อความต้นทางนี้

var_dump

มี บ่อยครั้งที่อาจจะมีการทดลองหรือเขียนโปรแกรม และมีความต้องการดูเนื้อหา รวมทั้งธรรมชาติแบบไดนามิคส์และไม่มีการประกาศประเภทข้อมูลให้ตัวแปรอย่าง ชัดเจน หมายความว่าจะไม่ทราบประเภทข้อมูลปัจจุบันที่แน่นอน ฟังก์ชัน var_dump แสดงประเภทและค่าของตัวแปรในผลลัพธ์ สำหรับข้อความ var_dump ให้จำนวนตัวอักษรในข้อความ

<?php

$floatval = 123e-456;
$intvar = 123456;
$stringval = "Hello world";

var_dump($floatval);      echo "<br/>\n";
var_dump($intvar);        echo "<br/>\n";
var_dump($stringval);    echo "<br/>\n";

?>

ผลลัพธ์จากคำสั่งข้างบนคือ
float(0)
int(123456)
string(10) ?Hello world?

print_r

ฟังก์ชัน print_r คล้ายกับ var_dump แต่สร้างผลลัพธ์ที่อ่านได้ง่าย print_r  ให้มีการเพิ่มค่าตัวเลือก(เรียกว่า พารามิเตอร์) ที่บอกให้ฟังก์ชันนี้ส่งออกผลลัพธ์เป็นข้อความแทนที่การส่งผลลัพธ์ออกไป

<?php

$stringval = "เรายินดีให้บริการสินค้าหัตถกรรมฝีมือปราณีต";

print_r ($stringval);    echo "<br/>\n";
$result = print_r ($stringval, TRUE);
echo $result;

?>

ผลลัพธ์จากคำสั่งข้างบนคือ
เรายินดีให้บริการสินค้าหัตถกรรมฝีมือปราณีต
เรายินดีให้บริการสินค้าหัตถกรรมฝีมือปราณีต

var_export

ฟังก์ชัน แสดงผลสุดท้ายคือ ฟังก์ชัน var_export ที่คล้ายกับ var_dump มาก ยกเว้นผลลัพธ์ได้รับการนำเสนอค่าของข้อมูลแบบคำสั่ง PHP               

<?php

$arr = array(1, 2, 3, 4);
var_export($arr);

?>

ผลลัพธ์จากคำสั่งข้างบนคือ
array( 0 => 1, 1 => 2, 2 => 3, 3 => 4)

Quoted

ในการเขียนคำสั่งข้อความโดยเฉพาะคำสั่ง echo การใช้ quoted จะสร้างความสับสนให้กับตัวกระจาย PHP ได้ เช่น
echo "<td width="15%">";

คำสั่งนี้สร้างความผิดพลาด ดังนั้นต้องใช้ quoted ต่างกัน
echo "<td width='15%'>";

หรือ
echo '<td width="15%">';

ในการเขียนประโยคคำสั่งคิวรี่ การใช้ quoted ภายในประโยคคำสั่งจะทำตัวกระจาย MySQL เกิดความสับสน
INSERT INTO message VALUES("การสัมนาเรื่อง "การดูแลสุขภาพ" เริ่มเวลา 16.00 ");

การคำสั่งต้องใช้ slash (\) กับ quoted ที่ไม่ใช้ส่วนการห้อหุ้ม
INSERT INTO message VALUES("การสัมนาเรื่อง \"การดูแลสุขภาพ\" เริ่มเวลา 16.00 ");

ขอบคุณเนื้อหาดีๆจาก widebase.net

syntax error คือ

วันนี้ผมนึกครึ้มอกครึ้มใจอะไร มิทราบ ลองค้นหาคำว่า syntax error ในกูเกิล แทบไม่น่าเชื่อนะครับว่า คำๆนี้ มีคนอยากทราบความหมายมันเป็นจำนวนมากทีเดียว

เมื่อมีคนอยากทราบ ผมก็จะเขียน เผื่อจะช่วยวงการการเขียนโปรแกรมไทย ให้หายสงสัยในบางหัวข้อ ได้อีก 1 หัวข้อ
syntax error  ถ้าแปลตามตัวก็จะได้ความว่า ความผิดพลาดทางไวยากรณ์ ซึ่งก็คือผิดข้อกำหนดของภาษานั้นๆ เช่น อย่างภาษา php มีข้อกำหนดว่าต้องปิดท้ายคำสั่งด้วย ; แต่เราดันทะลึ่งลืม หรือบางครั้งเปิด { แต่ดันลืมปิด } หรือเขียนคำสั่งผิดไปเลย เช่น echo เขียนเป็น egho อย่างนี้เป็นต้น
เอาละครับเรามาพูดให้ลึกกันอีกสักหน่อย error ในการเขียนโปรแกรมนั้น จะมีอยู่ 3 ประเภท คือ
  1. syntax error คือ ผิดไวยากรณ์ error ชนิดนี้แก้ง่ายที่สุด
  2. runtime error คือ ผิดขณะรันโปรแกรม error นี้จะปรากฎขณะรันโปรแกรมเท่านั้น จะไม่ค่อยได้เจอกันบ่อยครับ error ประเภทนี้ แก้ยากขึ้นมาหน่อยนึง
  3. logic error คือ คิดผิด error ประเภทนี้แก้ยากที่สุด ยากมากๆด้วย เพราะมันจะไม่ฟ้องอะไรเลย แต่ผลลัพธ์ออกมาผิด อีกทั้งใจเรายึดมั่นว่ามันถูก เลยไปกันใหญ่
หวังว่าบทความนี้จะช่วยสร้างแสงสว่าง(ตราค้างคาว)ที่ปลายอุโมงค์ ได้บ้างไม่มากก็น้อยนะครับ

Error ที่ (น่าจะ) เจอบ่อย ของ PHP




Error ที่ (น่าจะ) เจอบ่อย ของ PHP
Parse error: syntax error, unexpected ‘;’ in E:wwwgameanswer_right.php on line 98
ลืม ; จบประโยค ให้แก้ทีบรรทัดเหนือ 98
Parse error: syntax error, unexpected ‘)’ in E:wwwgameplay_game_3.php on line 59
พิมพ์ ) ไม่ครบ อาจจะเปิด 3 แล้วปิด แค่ 2 ให้แก้ที่บรรทัดที่ฟ้อง

May. 09 16 วิธีแก้ปัญหา Parse error: syntax error, unexpected T_VARIABLE

ภาพไม่เกี่ยวข้องกับบทความ ไว้ดูให้สบายตา เฉยๆ
ปัญหานี้เกิดจากท่านลืมปิดประโยคคำสั่งด้วย ; (semi colon) ดูตัวอย่างโค้ดที่มีปัญหานะครับ
<?php
$to = "platoosom@gmail.com";
$from = "platoosom@hotmail.com";
$subject = "ลองส่งเมล์ที่มี notification"
$message = "ทดสอบ";
?>
เออเร่อจะเป็นดังนี้
Parse error: syntax error, unexpected T_VARIABLE in E:\www\tutorial\Untitled-1.php on line 5
ท่านจะเห็นว่า เราลืมปิด ; ท้ายบรรทัดที่ 4 เวลาฟ้องมันจะฟ้อง บรรทัดที่ 5 เพราะฉะนั้น เวลาแก้ท่านก็ดูเหนือบรรทัดที่ฟ้องไป 1 บรรทัด นะครับ

PHP เบื้องต้น

1. เริ่มต้นด้วย PHP

PHP เป็นภาษาตัวแปลสคริปต์ หมายความว่า language engine เรียกใช้สคริปต์ที่เขียนขึ้นโดยไม่มีขั้นตอนกลางในการคอมไพล์ หรือไปเป็นรูปแบบไบนารี สคริปต์ส่วนใหญ่ที่ใช้สร้างโปรแกรมประยุกต์เว็บอยู่ในที่เดียวกับไฟล์ HTML ตามปกติไฟล์เก็บสคริปต์จะเก็บเป็นนามสกุล .php ถึงแม้ว่าบุคคลทั่วไปจะใช้นามสกุลเก่าคือ .php3 และ .phtml พื้นที่เก็บไฟล์เหล่านี้จะขึ้นกับการตั้งค่าคอนฟิกให้แม่ข่ายเว็บส่งผ่าน ไฟล์เหล่านี้ไปยังตัวแปร PHP พื้นที่จัดเก็บไฟล์หรือเอกสารนี้ได้รับอ้างถึงในฐานะ document root

การใช้ PHP Tag

PHP Tag ตามตัวอย่าง เริ่มต้นด้วย <?  และปิดด้วย  ?>  คล้ายกับ  HTML tag  เพราะเริ่มต้นด้วยเครื่องหมายน้อยกว่า (<)  และปิดด้วยเครื่องหมายมากกว่า  (>)  สัญลักษณ์เหล่านี้ เรียกว่า  PHP tag  ที่บอกแม่ข่ายเว็บการเริ่มต้นและสิ้นสุดคำสั่ง  PHP  ข้อความระหว่าง tag จะได้รับการแปลในฐานะ  PHP ข้อความภายนอก tag เหล่านี้ได้รับการปฏิบัติเหมือน HTML ปกติ  PHP tag  ยอมให้หลีกจาก  HTML

รูปแบบ PHP tag

รูปแบบ  PHP tag มี 4 แบบ แต่ละแบบของคำสั่งอย่างเหมือนกัน

รูปแบบย่อ (Short style)
<?  echo "<h1>พูนพนา</h1>";?>

รูป แบบนี้เป็นรูปแบบง่ายที่สุดและเป็นไปตามมาตรฐานการประมวลผล SGML (Standard Generalized Markup Language) การใช้ tag ประเภทนี้ต้องให้ใช้ short tag ในไฟล์คอนฟิก php.ini ที่คำสั่ง short_open_tag ให้เป็น enable แต่ไม่แนะนำเนื่องจากไม่เป็นไปตามมาตรฐาน XHTML และมาตรฐานส่วนขยายเช่น PEAR

รูปแบบ  XML
<?php echo "<h1>พูนพนา</h1>";?>

 tag รูปแบบนี้สามารถใช้กับเอกสาร  XML  (Extensible  Markup  Language)  ถ้าวางแผนให้ทำงานกับ  XML  ต้องใช้รูปแบบนี้

รูปแบบ  SCRIPT
< SCRIPT LANGUAGE='php'> echo "<h1>พูนพนา</h1>"; </SCRIPT>

tag รูปแบบนี้  ยาวที่สุดและอาจจะคุ้นเคย ถ้าเคยใช้  JavaScript  หรือ  VBScript

รูปแบบ  ASP
<% echo "<h1>พูนพนา</h1>"; %>

tag รูปแบบนี้เหมือนกับ Active Server  Pages  (ASP)  สามารถใช้ได้  ถ้าตั้งค่าคอนฟิกคำสั่ง  asp_tags ให้เป็น enable

ประโยคคำสั่ง  PHP

ประโยคคำสั่ง  PHP ใช้บอกตัวแปล PHP ให้ทำงาน โดยให้อยู่ระหว่าง tag เปิดและปิด
ตัวอย่างนี้ใช้ประโยคคำสั่งแบบหนึ่ง
echo "<p>พูนพนา</p>";

คำสั่ง  echo  ตามตัวอย่างเป็นการพิมพ์ข้อมูลเมื่อส่งไปที่  browser  สามารถมองเห็นผลลัพธ์ของข้อความ  "พูนพนา"  ปรากฎใน  browser

ที่ ท้ายประโยคคำสั่ง echo มี semicolon( ; ) เครื่องหมายนี้ใช้แยกประโยคคำสั่งใน PHP  เหมือนกับจุด (.) ที่ใช้แยกประโยคในภาษาอังกฤษ  ถ้าเคยเขียนโปรแกรมด้วย  C หรือ  Java  จะมีความคุ้นเคยกับการใช้  semicolon

Whitespace

ตัว อักษรช่องว่าง  เช่น บรรทัดใหม่ (carriage returns),  space และ tab  รู้จักในชื่อ  whitespace  ตัวอักษรนี้ไม่ได้รับความสนใจจาก  PHP  และ  HTML ให้พิจารณา 2 คำสั่ง  HTML
<h1> พูนพนา ยินดีต้อนรับ </h1> <p> วันนี้ ท่านต้องการซื้อสินค้าอะไร? </p>

                และ
<h1> พูนพนา                          ยินดีต้อนรับ </h1>
<p>วันนี้ ท่านต้องการซื้อสินค้าอะไร? </p>

คำ สั่ง  HTML  2  ชุด  สร้างผลลัพธ์เหมือนกัน เพราะคำสั่งนี้ปรากฎใน  browser  อย่างไรก็ตามสามารถใช้  whitespace  ใน  HTML  เพื่อทำให้คำสั่ง  HTML  อ่านได้ง่าย  ถึงแม้ว่าไม่ต้องมี  whitespace  ระหว่างประโยคคำสั่ง  PHP  แต่ทำให้อ่านได้ ถ้าแยกแต่ละประโยคให้เป็นคนละบรรทัด  ตัวอย่างเช่น
echo "hello";
echo "world":

และ
echo "hello";  echo  "world";

คำสั่ง  2 ชุดให้ผลลัพธ์เหมือนกัน แต่ชุดแรกอ่านได้ง่ายกว่า

Comment

Comment ในคำสั่ง ทำหน้าที่เป็นหมายเหตุให้กับผู้อ่านคำสั่ง Comment สามารถใช้อธิบายวัตถุประสงค์ของสคริปต์ ทำไมถึงทำแบบนั้น การปรับปรุงครั้งสุดท้ายและอื่น ๆ

ตัวแปล  PHP จะไม่สนใจข้อความใน Comment โดยเฉพาะอย่างยิ่ง PHP parser ข้าม Comment ที่เทียบเท่ากับ whitespace

PHP สนับสนุน รูปแบบ Comment แบบ C, C++ และ Shell script

รูปแบบ  C เป็น Comment หลายบรรทัด
/*     Author: Chaiwat
Last Modified: 1 June 2005
This script processes the customer order.
*/

Comment หลายบรรทัด เริ่มต้นด้วย /* และปิดด้วย */ เหมือนภาษา C

Comment 1 บรรทัด สามารถใช้รูปแบบ C++
echo "<h1>พูนพนา</h1>"; // Start printing order

หรือ รูปแบบ  Shell script
echo "<h1>พูนพนา</h1>"; # Start printing order

เรียนรู้ php เบื้องต้น

entry นี้สำหรับผู้ต้องการเรียนรู้เกี่ยวกับ php เบื้องต้น
หากคุณเป็นคนหนึ่งที่ไม่เคยเขียนภาษาคอมมาก่อน ผมหวังว่าบทความนี้จะพอทำให้คุณรู้เรื่อง php ขึ้นมาอีกสักนิด
การที่คุณจะเรียนรู้ในการเขียนโค้ดด้วยภาษา php นั้น คุณควรมี Apache หรือโปรแกรมอื่น ที่จำลอง webserver ไว้บนเครื่องคอมพิวเตอร์ของคุณ และอีกโปรแกรมที่ควรใช้ให้เป็นคือ Dreamweaver หรือโปรแกรมเขียนโค้ดอื่นๆ เช่น notepad , editplus เป็นต้น สำหรับผู้เริ่มใช้อาจจะลองใช้ editplus ก่อนก็ได้ครับ เพราะตัวโปรแกรมไม่ยุ่งยากเท่า Dreamweaver
เรามารู้จัก php กันสักนิดนะครับ
php ย่อมาจาก PHP Hypertext Preprocessor เป็นอีกรูปแบบหนึ่งของภาษาสคริป ซึ่งทำให้เว็บเพจของคุณเกิดความ dynamic มากขึ้นกว่าการเขียนด้วย html ธรรมดา การโต้ตอบกับผู้ใช้งานได้ดีกว่า หากคุณเคยเขียนโค้ดมาบ้าง จะง่ายยิ่งขึ้นในการเรียนรู้ครับ 
ในการเขียน php นั้นจะมีรูปแบบดังนี้
<? 
คำสั่ง;
?> 
หากเขียนร่วมกับ xhtml ควรเขียนดังนี้
<?php คำสั่ง;
?>
==========================
เริ่มแรกในการเรียนรู้คือการลองจริง คุณควรลองเขียนโค้ดเล็กๆ ง่ายๆ ออกมาก่อน ตัวอย่าง
ผมต้องการแสดงคำว่า "Hello Thailand" ผมควรเขียนโค้ดอย่างไร
<?php echo "Hello Thailand";
?>
จะได้ดังรูปนี้ครับ
 
 
การเขียนคำสั่งให้พิมพ์คำออกมานั้นต้องใช้ echo ''; ช่วย ซึ่งเราจะเขียนด้วย " " หรือ ' ' ก็ได้ ด้านในคือประโยคที่ต้องการครับ เขียนร่วมกับ html ได้ เช่นคุณอยากจะให้ขึ้นบรรทัดใหม่ ดังตัวอย่าง
ผมต้องการแสดงคำว่า "Hello Thailand" ขึ้นบรรทัดใหม่ว่า "Sawadee" ควรเขียนโค้ดอย่างไร
<?php
echo "Hello Thailand <br> sawadee"; ?>
จะได้ดังรูปนี้ครับ 
 
 
จะใช้ br หรือ p ก็ได้ครับ 
 
ตัวอย่างการเขียนโค้ด php แบบแสดงค่าที่กำหนด
<?php
$test = 'test';
$test2 = 1;
echo $test.$test2; 
?> 
ค่าที่แสดงจะได้ดังรูปนี้
  
คำอธิบาย :
$test เป็นตัวแปรที่เรากำหนดมาโดยให้ชื่อว่า test การใส่ $ ข้างหน้าจะแสดงถึงตัวแปร $test2 ก็เช่นกัน เรากำหนดให้เป็นตัวประโยคโดยใช้ ' ' ครอบประโยคหรือข้อความตามต้องการ จะใช้ " " แทนก็ได้เช่นกัน
ส่วนค่าตัวเลข เราสามารถกำหนดโดยไม่ต้องใช้ฟันหนูครอบก็ได้
 
การเขียนโค้ด html ในคำสั่ง php มีวิธีการเขียนดังนี้
1. เขียนใน print ""; หรือ echo "";
2. ให้ระวังเรื่อง " " และ ' ' ให้ดีั ในกรณีดังต่อไปนี้
echo '<a href="http://rije.exteen.com">Rije\'s Blog</a>';
จะเห็นว่าในคำสั่ง html เราใช้ " " และของ php เราใช้ ' ' หากในโค้ด html เราจำเป็นต้องใช้ ' เช่น Rije's Blog หน้า ' เราต้องใส่ \ ข้างหน้า จะทำให้ระบบไม่อ่าน ' เป็นโค้ดไป อีกตัวอย่าง
echo "<a href=\"http://rije.exteen.com\">Rije's Blog</a>";
จะเห็นว่า php เราใช้ " " ครอบ และใน html เราก็ใช้ " " เช่นกัน แต่มี \ ข้างหน้า เนื่องจากคำสั่ง html นั้นอยู่ในค่ำสั่ง php อีกชั้น หากเราไม่ใส่ \ ข้างหน้า โค้ดจะตัดที่
echo "<a href="
อย่างนี้แทน ทำให้คำสั่ง html เราไม่สมบูรณ์ และโค้ด php ก็ขาด จะเกิด error ขึ้นได้
เพราะฉะนั้นในการเขียน html ใน php ต้องระมัดระวังเรื่อง ' ' และ " " ให้ดี
 
3. หากโค้ดมี html และ php รวมกัน ตัวอย่างเช่น เรากำหนดค่าตัวแปรใน php ชื่อ $test ขึ้นมา และต้องการให้แสดงระหว่างโค้ด html ต้องเขียนดังนี้
$test="Rije's Blog"; 
echo '<a href="http://rije.exteen.com">'.$test.'</a>';
 
จะเห็นว่าเราปิดคำสั่งด้วย ' ก่อนจากนั้น . และตามด้วยตัวแปร หากใส่โค้ดต่อก็ต้อง . แล้วเปิดคำสั่งด้วย ' เหมือนกันเสมอ 
ตัวอย่างที่แสดงจะเป็นดังภาพนี้
 
 
การเขียน if , else , elseif/else if
ในการเขียน php การใช้ if else นั้นเป็นเรื่องสำคัญ เพราะได้นำมาใช้จริงอย่างแน่นอนครับ ตัวอย่างการใช้ทั้ง 3 แบบ
1. if(คำสั่ง){ค่าที่แสดงตามคำสั่ง}
$test="test";
if($test=="test") echo "yes";
ในกรณีนี้ เรากำหนด $test จากนั้นใช้ if มาหาค่าว่า "ถ้าหากว่า $test มีค่าเป็น test จริงให้แสดง yes ออกมา" หากค่าไม่ใช่ test ก็จะหลุดจาก if และไม่แสดงค่าใดๆ ครับ
 
 
2. if(คำสั่ง){ค่าที่แสดงตามคำสั่ง} else{แสดงหากได้่ค่าอื่น}
$test="test";
if($test=="test2"){
echo "yes";

else {
echo "no";


จากโค้ดข้างต้นจะเห็นว่า เรากำหนดค่า $test ขึ้นมาให้มีค่า test ในคำสั่ง if else คือ "หากค่า $test มีค่าเท่ากับ test2 จริงๆ ให้แสดงค่า yes แต่หากไม่ใช่ให้แสดงค่า no" ดังนั้นค่าที่แสดงจึงเป็น no นั่นเองครับ
 
 
3. if(คำสั่ง1){แสดงค่าของคำสั่ง 1} else if(คำสั่ง2){แสดงค่าคำสั่ง 2} else{แสดงค่าอื่นนอกเหนือจากคำสั่ง}
ในกรณีนี้ เราต้องการคำนวณหรือเทียบค่าตามคำสั่งหลายชั้น หากค่าสั่งที่ 1 ไม่เป็นจริง ก็จะไปต่อคำสั่งที่ 2 หากไม่เป็นจริงจะหลุดจากลูป if ไปที่ else จบคำสั่ง ตัวอย่าง
$test = 4+4;
if($test==5){
echo "5";
}
else if($test=8){
echo "8";
}
else{
echo "wrong";
}
จาำโค้ดข้างต้นจะเห็นว่า เราได้กำหนดค่า $test เป็น 4+4 คำตอบที่ถูกต้องคือ 8 จะได้ว่า "หาก ค่า $test เป็น 5 ให้แสดงค่า 5 แต่ถ้า $test เป็น 8 ให้แสดงค่า 8 แต่หากค่า $test ไม่เป็นดังคำสั่งทั้งหมดก็จะแสดงคำว่า wrong ออกมา" ดังนั้นจากคำสั่งจึงแสดงค่า 8 ออกมาครับ
 
 
สัญลักษณ์ต่างๆ ที่ควรรู้
==  หมายความว่า  เท่ากับ
!=  หมายความว่า  ไม่เท่ากับ
<  หมายความว่า  น้อยกว่า
>  หมายความว่า  มากกว่า
<=  หมายความว่า น้อยกว่าหรือเท่ากับ
>=  หมายความว่า  มากกว่าหรือเท่ากับ
+=  หมายความว่า  ค่าที่มีอยู่ + ค่าหลัง =
$a=1;
$b=2;
$a+=$b;

ค่า $a ที่ได้จะเป็น 3 
-=  หมายความว่า  ค่าที่มีอยู่ - ค่าหลัง =
$a-=$b;
ค่า $a ที่ได้จะเป็น -1 
.=  หมายความว่า  เชื่อมคำกับค่าที่มีอยู่
$a = "you";
$a .= " & ";
$a .= "i";
$a จะได้ค่าเป็น "you & i" ครับ 
 
การส่งค่ารับค่า
ในการเขียนคำสั่งให้ส่งค่าและรับค่าใน php นั้นไม่ใช่เรื่ืองยากเลยครับ หากผมสร้างแบบฟอร์มขึ้น ให้กรอกค่าใดๆ ก็ได้ เมื่อกด submit ค่าที่เรากรอกก็จะไปแสดงในหน้าเดิมนั้น หรือจะให้แสดงในหน้าเพจใหม่ก็แล้วแต่ครับ หากเขียนให้แสดงในหน้าเดิม เราจะเขียนโค้ดแค่ไฟล์เดียว แต่หากแสดงหน้าอื่นเราต้องเขียน 2 ไฟล์ครับ ผมจะยกตัวอย่างส่งค่าในหน้าเพจเดิมครับ ซึ่งตัวอย่างผมเขียน html + php นะครับ
<?php
$show = $_POST['test']; 
if($show!=""){
echo $show;
}
echo '<form action="'.$PHP_SELF.'" method="post">
<input type="text" name="test"><br>
<input type="submit" name="submit" value="show"
</form>'; 
?>
จะได้ดังภาพนี้ครับ
  
เมื่อกรอกข้อมูลลงไปกด show จะเป็นดังภาพนี้ครับ
 
 
อธิบายยาวเหยียด :
จากโค้ดข้างต้นจะเห็นว่า ผมกำหนดค่า $test เป็น $_POST['test'] ในที่นี้ทำไมผมจึงใช้ $_POST[] นั่นก็เพราะว่า
ค่าจาก form เราส่งค่า method มาแบบ post และใน input ค่านั้นเราใช้ชื่อว่า test  หมายความว่า เราส่งค่า test ซึ่งเก็บค่าที่เรากรอกเอาไว้มาในรูปแบบ post ในการรับค่าจาก form นั้นเราต้องเขียนโค้ดรับค่าโดยใช้ $_POST[] รับค่าแบบ post มา หากส่งค่าแบบ get ก็จะใช้ $_GET[] ครับ
ผมส่งค่ากลับมาเพจเดิมใช้ action แบบนี้ครับ
action ="'.$PHP_SELF.'"
เป็นการส่งค่ากลับคืนเพจเดิม ผมใช้ '.คำสั่ง.' คั่นกลาง เพราะเป็นโค้ด php คั่นกลางระหว่าง html เราต้องปิด ' ที่เปิดไว้ตรง echo ' เสียก่อน การใส่ค่าตัวแปรต้องใช้ . ตามด้วยตัวแปรนั้นๆ หากไม่จบคำสั่ง echo ก็ใช้ .' เปิดเขียนโค้ดต่อ เมื่อจบจึงตามด้วย '; ครับ 
ผมกำหนดค่า $show ให้มารับค่าจา่ก $_POST['test'] เอาไว้ และนำไปคำนวณใน if
"ถ้าหากว่าค่า $show ไม่ใช่ค่าว่าง ให้แสดงค่า $show ออกมา"
และหากเป็นค่าว่างก็จะไม่แสดงค่า แต่จะขึ้น form มาให้กรอกครับ และแม้จะมีค่า $show ก็ยังมี form ให้กรอกเช่นกัน เพราะถัดจาก if ไม่มีค่าใดๆ มากำหนดว่า หากมีค่า $show แล้วต้องไม่แสดง form หากต้องการให้ไม่แสดง form เมื่อมีค่า $show เราต้องใช้ else มาเพิ่ม โดยนำ echo ที่ข้างในคำสั่งมีคำสั่ง form ไว้ข้างใน ดังตัวอย่างต่อไปนี้
else{
 
echo '<form action="page.php" method="post">
<input type="text" name="test"><br>
<input type="submit" name="submit" value="show"
</form>';
} 
เมื่อกรอกค่า ค่าที่แสดงจะเป็นดังภาพนี้ครับ

 
ไม่ยากเลยใช่ไหมครับ 
นี่เป็นพื้นฐานเบื้องต้นเท่านั้นครับ หากต้องการเรียนรู้เจาะลึกมากกว่านี้ ผมแนะนำให้ลองหาข้อมูลได้จากใน google หรือซื้อหนังสือสอนเขียน php มาศึกษาดูครับ หากมีปัญหาใดๆ ผมยินดีให้คำปรึกษาเสมอครับ ถามกันเข้ามาได้ ถ้าผมตอบได้ผมจะตอบให้นะครับ 
 
ps. ขอบคุณคุณ programmeur ที่ช่วยแก้คำผิดให้นะครับ
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 
Design by I Love PHP