14 กรกฎาคม 2554

เพิ่มค่าเข้าไปใน Array พร้อมด้วยค่า Index

โดยปกติแล้วหากเวลาจะเพิ่มค่าเข้าไปใน Array PHP จะมีฟังชั่น array_push() เพื่อให้ใช้งาน

ตัวอย่างเช่น

<?php
  $stack = array("ส้ม", "กล้วย", "มะละกอ", "ทุเรียน");
   array_push($stack ,"ลองกอง");
   print_r( $stack );
?>

ผลลัพธ์ :

Array
(
    [0] => ส้ม
    [1] => กล้วย
    [2] => มะละกอ
    [3] => ทุเรียน
    [4] => ลองกอง
)

แต่ถ้าหากเรามีค่า Array ดังนี้  $myarray = array('f' => 'ส้ม',  'b' => 'กล้วย');

เมื่อใช้คำสั่ง array_push()  : array_push($myarray, 'มะละกอ');

ก็จะได้ ผลลัพธ์ :

Array (
  [f] => ส้ม
  [b] => กล้วย
  [0] => มะละกอ // ค่าที่เพิ่มเข้ามาด้วย array_push()
)

ซึ่งระบบจะสร้าง Index array ให้อัตโนมัติ แต่หากเราอยากจะเพิ่ม Index array เข้าไปด้วยก็จะใช้วิธีนี้ไม่ได้

ตรงนี้จะต้องสร้าง function เพิ่มเข้ามา ซึ่งได้มี ฝรั่ง (น่าจะ อินเดีย) ได้ทำการสร้างไว้ให้ดูเป็นตัวอย่างแล้ว คือ

function array_push_assoc($array, $key, $value){
 $array[$key] = $value;
 return $array;
}

และ วิธีใช้งาน

$myarray = array_push_assoc($myarray, 'h', 'hello');

ข้อมูล :
http://www.select2web.com/php/array_push.html
http://jaswanttak.wordpress.com/2010/04/23/php-associative-array-push/





16 มิถุนายน 2554

ตัด Subfolder ออกจาก Link Wordpress

หาำกเราได้สร้าง เว็บไซต์มาสักเว็บหนึ่ง ภายในเครื่องของเราหรือ Localhost ก็จะมี โฟลเดอร์ (Folder) เพื่อเก็บเว็บไซต์ต่าง ๆ ที่อยู่ในเครื่อง เวลาเราทดสอบ ก็จะพิมพ์ลิงค์ไปที่เบราเซอร์ เช่น http://localhost/โฟลเดอร์ที่เก็บเว็บไซต์

ในโฮสติ้ง จริงๆ เขาก็จะมี Public_html โฟลเดอร์มาให้หนึ่งโฟลเดอร์ เพื่อที่จะวางเว็บไซต์ที่เราีต้องการ หากว่าเราเก็บไฟล์ต่าง ๆ ของ Wordpress ไว้ที่ Public_html เลย เราก็จะมีเว็บไซต์ก็จะมีลิงค์ที่สวยงาม คือ http://www.test.com แต่หากว่าเราสร้างโฟลเดอร์มาเก็บไฟล์อีกทีหนึ่งจะมีลิงค์ดังนี้ http://www.test.com/folder

ใน Wordpress จะมีวิธีตัด folder ที่สร้างออกจากลิงค์ ตามวิธีต่อไปนี้ (ใช้ localhost เพื่อทดสอบหน่ะครับ)

1. สร้างโฟลเดอร์ test ขึ้นมาภายใน WWW แล้วติดตั้ง Wordpress ไปตามปกติจนสิ้นสุดกระบวนการ

2. เมื่อสร้างเสร็จล๊อกอินเข้าไปจัดการโดยไปที่เมนูซ้ายมือ Setting->General
ตั้งค่า WordPress address (URL) : http://localhost/test และ Site address (URL) : http://localhost

3. ก็อบปี้ index.php and .htaccess ออกมาวางที่ WWW หรือ นอก โฟลเดอร์ test

4. เิปิดไฟล์ index.php แล้วแก้ไข require('./wp-blog-header.php'); เป็น require('./test/wp-blog-header.php');
ตรงคำว่า test คือโฟล์เดอร์ที่สร้างไว้

5. ล๊อกอิน เข้าหน้าแอดมิน เพื่อไปแก้ไข Permalinks ซึ่งเราก็ทำการกดเซฟเพื่ออัพเดทค่าตามปกติ Wordpress จะจัดการให้เองโดยอัตโนมัติ

หลังจากนั้นก็ทดลองเข้าระบบ http://localhost ก็จะเ้ข้าไปสู่ Wordpress ที่เราสร้างไว้ในโฟลเดอร์ test ซึ่งจะตัด /test ออกให้เลย


ข้อมูลเพิ่มเติมที่ : http://marcosblog.com/2010/04/12/how-to-install-wordpress-in-a-sub-folder/

10 มิถุนายน 2554

ทำลิงค์ (Link) Wordpress ให้สวยงาม

    หากทำเว็บบล๊อก หรือ เว็บไซต์ ด้วย Wordpress แล้วต้องการที่จะให้ Link ออกมาสวยงาม และ น่าจะเหมาะสำหรับทำ SEO ก็จะต้องไป เซต ค่า เพื่อให้ Wordpress แสดง Link ออกมาสวย ดังนี้
   - ล็อกอิน wp-admin
   - ไปที่เมนู Setting -> Permalink
   - Wordpress จะมีตัวเลือกให้ 5 ตัวเลือก

    - Default = http://localhost/wordpress/?p=123
    - Day and name = http://localhost/wordpress/2011/06/10/sample-post/
    - Month and name = http://localhost/wordpress/2011/06/sample-post/
    - Numeric = http://localhost/wordpress/archives/123
    - Custom Structure = ค่าที่เราต้องการ
เลือกที่  Custom Structure แล้วใส่ค่า  /%category%/%postname%  ลงไป ก็จะได้ ลิงค์
    
     - http://localhost/wordpress/5555/หัวข้อที่เลือก
 
Wordpress ก็จะแสดงค่าที่สวยงามออกมาให้ ครับ
 

2 มิถุนายน 2554

ส่งเมล์ด้วย phpmailer

   ก่อนอื่นต้องเข้าไปโหลด  Class Phpmailer  มาก่อนจากเว็บ http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php4/PHPMailer%20v2.0.4%20for%20PHP4/ โดยผมเลือกโหลดที่ เวอร์ชั่น PHPMailer_v2.0.4 หลังจากดาวน์โหลดมาเสร็จแล้วทำการ แตกไฟล์ ก็จะมีไฟล์ในนั้นมากมายเราเอาไว้แค่ 3 ไฟล์ครับ คือ

1.class.phpmailer.php
2.class.smtp.php
3.class.pop3.php

ซึ่งในขั้นตอนต่อไปก่อนที่จะทำการ ทดลองส่งเมล์ ให้เราแก้ปัญหาเบื้องต้นก่อนทำการทดลอง คือ

1.แก้ $Charset ในไฟล์ class.phpmailer.php จาก iso-8859-1 เป็น utf-8 เพื่อให้เมล์ของเรารองรับภาษาไทย
2.เปิด ;extension=php_openssl.dll ในไฟล์  php.ini โดยลบเครื่องหมาย ; ด้านหน้าแล้วทำการ รีสตาร์ท Apache หนึ่งครั้ง เพื่อทำการเปิดใช้งาน SSL (อ่านเพิ่มเติม)

หลังจากแก้ไขตาม 2 วิธีข้างต้นเสร็จแล้วก็เริ่มทำการสร้างไฟล์เพื่อทดสอบการส่งเมล์ของเราตามนี้เลยครับ

<?php
require('class.phpmailer.php');

$mail = new PHPMailer();
$mail->From = 'chaiwit@xxx-xxx.com'; // เมล์ที่เราใช้ในการส่ง
$mail->FromName = 'chaiwit'; // ชื่อที่ส่ง

$to =array ('chaiwit'=>'chaiwit@xxx-xxx.com');  // to array ใช้ในกรณีส่งหลาย ๆ คนพร้อมกัน
foreach ($to as $name=>$email){
    $mail->AddAddress($email,$name);
}

$cc =array ('chaiwit'=>'chaiwit@xxx-xxx.com'); // cc array ใช้ในกรณี cc หลาย ๆ คนพร้อมกัน
foreach ($cc as $cc_name=>$cc_email){
    $mail->AddCC($cc_email,$cc_name);
}

$bcc =array ('chaiwit'=>'chaiwit@xxx-xxx.com'); // bcc array ใช้ในกรณี bcc หลาย ๆ คนพร้อมกัน
foreach ($bcc as $bcc_name=>$bcc_email){
    $mail->AddBCC($bcc_email,$bcc_name);
}

$mail-> Subject    = 'Test Send Mail'; // หัวข้อเมล์ที่ทำการส่ง ซึ่งใช้ภาษาไทยได้ (เพราะทำการตั้งค่า Charset เป็น utp-8 แล้ว)
$mail-> Body        = 'Mail Detail'; // เนื้อหาของเมล์

$mail->IsHTML (true);
$mail->IsSMTP(); // เปิดใช้ Smtp
$mail->Host = 'ssl://smtp.gmail.com'; // ส่งผ่าน Smtp ของ google
$mail->Port = 465; // พอร์ต
$mail->SMTPAuth    = true;

$mail->Username = 'chaiwit@gmail.com'; // Account ของ Gmail
$mail->Password = 'xxx';

$mail->Send();
$mail->ClearAddresses();
?>


อ่านเพิ่มเติมได้ที่ http://www.select2web.com/php/send-email-with-phpmailer.html

24 พฤษภาคม 2554

ย้าย webroot สำหรับ run php และ ฐานข้อมูล MySQL

ย้าย Webroot สำหรับรัน Php  คือ

 start -> All program -> Appserv -> Configuration Server -> httpd.conf

ค้นหาคำว่า

DocumentRoot "C:/AppServ/www"

และคำว่า

<Directory "C:/AppServ/www"> 


แล้วแก้ไข พาธ ในเครื่องหมายคำพูดเป็น พาธ ที่ต้องการ

-------------------------------------------------------------------------------------------

ย้ายฐานข้อมูล Mysql

start -> All program -> Appserv -> Configuration Server -> my.ini

ค้นหาคำว่า

datadir="C:\AppServ/MySQL/data/"

เปลี่ยน พาธ ในเครื่องหมายคำพูดเป็น พาธ ที่ต้องการ



ข้อมูลจากเว็บ  select2web.com

28 เมษายน 2554

Javascript เพิ่ม คอมม่า (,) ให้กับเลข ตามหน่วยต่าง ๆ

<form name="frmMain" action="" method="post">

<script type="text/javascript">

function addCommas(nStr)
{
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}

function chkNum(ele)
{
var num = parseFloat(ele.value.replace(/,/g,''));
ele.value = addCommas(num.toFixed(2));
}
</script>

-----------------------------------------------
วิธีนำไปใช้งาน

<input type="text" name="txtNumber" value="" OnChange="JavaScript:chkNum(this)">
</form>

ข้อมูลจาก : thaicreate.com

สิ่งที่ควรจำของ Cakephp

 ในการบันทึกค่าที่ส่งมาจาก Form ลงในฐานข้อมูล จะใช้คำสั่งที่เหมือนกันคือ

    $this->Book->create();  //เรียกใช้ Method create() เพื่อสร้างแถว
    $this->Book->save($this->data) // บันทึกข้อมูลที่ส่งมา คือ $this->data

ถ้าหากว่าในหน้า Form เราไม่มี Field ที่ชื่อว่า id  Cakephp จะมองเป็นการบันทึกข้อมูลลงไปใหม่ (INSERT)
แต่ถ้าหากว่ามี Field ที่ชื่อว่า id แล้ว  Cakephp จะมองเป็นการแก้ไข (UPDATE) ด้วย id ที่ส่งเข้ามานั้นโดยอัตโนมัติ