แปลงเวลา 24 ชม.ไป 12 ชม. (am/pm) หรือแปลงกลับ 12 ชม.(am/pm)ไป 24 ชม.กับ PHP

บันทึกโดย TaTump วันที่ 10 January 2009 | 702 views
#24hour ->  12 hour
print( date("g:i a", strtotime("13:30:30")) );
# hour ->  24 hour
print( date("H:i:s", strtotime("1:30 pm")) );

Ref : http://style-vs-substance.com/convert-24-hour-military-time-to-12-hour-ampm-time-in-php/2007/10/

Fatal error: Call to undefined function: mssql_connect()

บันทึกโดย TaTump วันที่ 30 November 2008 | 821 views

พอดีเขียน PHP รัน โดย IIS ใช้ Windows XP เซ็ตอับลงได้ปกติ แต่พอถึงคราวต้องติดต่อ MS-SQL กลับเกิด Error

“Fatal error: Call to undefined function: mssql_connect()”

วิธีแก้ 2 ขั้นตอน (ถ้าไม่ได้ก็ สวดมนต์คับ)

  1.  เอา comment ของ extension=php_mssql.dll ออกแล้ว (อยู่ใน php.ini)
  2. ถ้ายังไม่ได้อีก ให้ copy ไฟล์ ntwdblib.dll (อยู่ใน zip ไฟล์ PHP หรือถ้าเราใช้ Appserd ก็อยู่ที่ C:\AppServ\php5) เอาไปไว้ใน C:\WINDOWS\system32 จากนั้น Restart IIS ถ้าไม่ได้ ก็ Restart Windows ซะเลย

สุดท้ายท้ายสุด ถ้าไม่ได้ตามไปดูที่ลิงค์นี้ ใช้ Extensions PHP5 บน Windows ไม่ได้ ทำไงดี.

Class Captcha ตัวจิ๋ว

บันทึกโดย TaTump วันที่ 14 September 2008 | 1,727 views

วิธีใช้คือสร้างแท็ก img เรียกปกติแต่เปลี่ยนจากเรียกรูป มาเรียกไฟล์ php แทนคับ

<IMG src="captcha.php"  BORDER="0">

สามารถแก้ จำนวนอักขระ และชื่อ Session ได้ที่ไฟล์ captcha.php คับ

ตัวอย่าง: http://www.memo8.com/lab/php/captcha/demo.html

ดาวน์โหลด: http://www.memo8.com/lab/php/captcha/captcha.rar

ฟังก์ชั่นสร้าง Tag Cloud

บันทึกโดย TaTump วันที่ 29 July 2008 | 489 views

ก็ตามรูปด้านบนคงไม่ต้องอธิบายกันมาก จริงๆฟังก์ชั่นนี้ผมเอามาแก้ไขเพิ่มเติมนิดหน่อย ดูต้นฉบับ คลิกที่นี่ วิธีใช้งานตามตัวอย่างด้านล่างครับ

function

function printTagCloud($tags,$url,$css) {

$max_size = 32; //กำหนด ขนาด font ใหญ่ สุดที่นี่
$min_size = 12; // กำหนด ขนาด font เล็ก สุดที่นี่

ksort($tags);
$max_qty = max(array_values($tags));
$min_qty = min(array_values($tags));

$spread = $max_qty - $min_qty;
if ($spread == 0) {
$spread = 1;
}

$step = ($max_size - $min_size) / ($spread);

foreach ($tags as $key => $value) {
$size = round($min_size + (($value - $min_qty) * $step));

$printTagCloud .=  '<a href="'.$url. $key.'" style="font-size: ' . $size . 'px" title="' . $value . ' things tagged with ' . $key . '" class="'.$css.'">' . $key . '</a> ';
}

return $printTagCloud ;
}

Example

$tags = array('PHP' => 32, 'Google' => 431, 'ASP.NET' => 622, 'JAVA' => 51, 'WEB 2.0' => 23, 'Linux' => 971, 'Firefox' => 407, 'Idea' => 82, 'Music' => 227);
$url="http://www.memo8.com/toolkits/?s=";
$css="LinkNormal";

echo printTagCloud($tags,$url,$css);

- ค่าที่ส่งก็มี tag ที่กำหนดให้เป็น Array ตามตัวอย่าง
- Url สำหรับลิงค์
- CSS ใส่ ชื่อ class css เพิ่มความสวยงาม

ดูตัวอย่าง : http://www.memo8.com/lab/php/tag-cloud/tag-cloud.php

ดาวน์โหลด : http://www.memo8.com/lab/php/tag-cloud/tag-cloud.phps

Export Excel อย่างง่ายกับ PHP

บันทึกโดย TaTump วันที่ 10 June 2008 | 2,438 views

ดูโค้ดก่อนแล้วกัน

<?php
header("Content-Type: application/vnd.ms-excel");
header('Content-Disposition: attachment; filename="MyXls.xls"');#ชื่อไฟล์
?>

<html xmlns:o="urn:schemas-microsoft-com:office:office"

xmlns:x="urn:schemas-microsoft-com:office:excel"

xmlns="http://www.w3.org/TR/REC-html40">

<HTML>

<HEAD>

<meta http-equiv="Content-type" content="text/html;charset=tis-620" />

</HEAD><BODY>

<TABLE  x:str BORDER="1">

<TR>

<TD><b>AAA</b></TD>

<TD><b>AAA</b></TD>

<TD><b>AAA</b></TD>

</TR>

<TR>

<TD>BBB</TD>

<TD>BBB</TD>

<TD>BBB</TD>

</TR>

<TR>

<TD>001</TD>

<TD>002</TD>

<TD>003</TD>

</TR>

<TR>

<TD>ภาษาไทย</TD>

<TD>ภาษาไทย</TD>

<TD>ภาษาไทย</TD>

</TR>

</TABLE>

</BODY>

</HTML>

จุดหลักๆมีอยู่ 3 จุด
1. แป่ะ Header เพื่อบอกว่าจะเปิดไฟล์ Excel

<?phpheader("Content-Type: application/vnd.ms-excel");header('Content-Disposition: attachment; filename="MyXls.xls"');#ชื่อไฟล์?>

2.ส่วนนี้มีผลกับการแสดง Excel จำเป็นมาก

<html xmlns:o="urn:schemas-microsoft-com:office:office"xmlns:x="urn:schemas-microsoft-com:office:excel"xmlns="http://www.w3.org/TR/REC-html40">

3. อันนี้แหล่ะที่จะทำให้ข้อมูลที่นำหน้าด้วยเลขศูนย์แสดงขึ้นมา เพราะกำหนดให้เป็น String

<TABLE  x:str BORDER="1">

ตัวอย่าง คลิกที่นี่
ดาวน์โหลด คลิกที่นี่

อ่านเพิ่มเติมได้ที่นี่ครับ (อธิบายดีจริงๆ) : http://sixhead.com/2008/03/06/easy-export-to-excel/

ฟังก์ใส่ลายน้ำในรูป (Watermark Images)

บันทึกโดย TaTump วันที่ 1 June 2008 | 386 views

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

ลักษณะการทำงานก็คือ เราจะต้องมีรูปไว้อยู่แล้ว อาจจะผ่านกระบวนการ upload หรืออะไรก็ตาม แล้วเราก็นำที่อยู่รูปต้นฉบับ และที่อยู่รูปลายน้ำ ส่งไปให้ฟังก์ชั่นทำงาน โดยฟังก์ชั่นจะใส่ลายน้ำแล้วทับรูปเดิมให้ เป็นอันเสร็จพิธี อุอุ
“ทำเป็นต้นแบบเล็กๆน่ะครับ เอาไว้พัฒนาต่อยอด”

Download ไฟล์ที่นี่

date_default_timezone_set(”Asia/Bangkok”);

บันทึกโดย TaTump วันที่ 21 May 2008 | 509 views

จู่ๆ โปรแกรมที่ข้าเจ้าเขียนก็มี ข้อความเตือนประมาณนี้ ลักษณะเหมือนไม่ได้ Set timezone(เวลาในพื้นที่) หรือใครไป config อะไำรสักอย่าง แต่ก่อนไม่มี เดี๋ยวนี้มีเป็นของตัวเอง “เฮ้ยยยยอารายเนี่ย….T_T”

Strict Standards: phpinfo() [function.phpinfo]: It is not safe to rely on the system’s timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Asia/Bangkok’ for ‘ICT/7.0/no DST’ instead

เอาล่ะมาดูซิว่าเกิดอะไรขึ้น phpinfo เปิดดูหน่อย…

date_default_timezone_set

เมื่อรู้แล้วว่า “no value” ก็ เปิดไฟล์ php.ini แล้วหาคำว่า date.timezone และ set เป็น “Asia/Bangkok” เพราะเราคือคนไทย (หมายถึง server อยู่ที่ไทย)

date.timezone = Asia/Bangkok

อย่าลืม restart Apache เด้อ
ปิ้ว…. ผมไม่มีสิทธิ์แก้ไฟล์ php.ini อ่ะ เลยมีวิธีที่สอง ก็พิมพ์คำสั่งนี้ไว้บนบรรทัดแรกของไฟล์ซะเลย

date_default_timezone_set("Asia/Bangkok");

เรียบร้อย…ไปดูหนังต่อดีกว่า อุอุ…

ย่อรูปเป็น Thumbnail สำหรับแสดงผล

บันทึกโดย TaTump วันที่ 19 April 2008 | 161 views

จะว่าไป การย่อรูปThumbnail นี้ก็ไม่ค่อยเวิร์คเท่าไหร่เพราะมันจะมาประมวลจับรูปขนาดใหญ่มาย่อเป็น Thumbnail เอาอีตอนแสดงผลนี่แหล่ะ แต่อาจจำเป็นบางกรณี เอามาแป่ะไว้ก่อนแล้วกัน
Code

<?header("Content-type : image/png");

header("Content-type : image/jpeg");

header("Content-type : image/gif");

$filedir= $_GET['filedir'];// พาธรูปที่นี่

$img_orig=ImageCreateFromJPEG($filedir);

$width_orig = ImagesX($img_orig);

$height_orig = ImagesY($img_orig);

$height_thm = 80;

$width_thm=round($height_thm*$width_orig/$height_orig);

$img_thm = imagecreateTrueColor($width_thm,$height_thm) ;

ImageCopyResized($img_thm,$img_orig,0,0,0,0,$width_thm+1,$height_thm+1,$width_orig,$height_orig);

imagejpeg($img_thm,"",75);

imagejpeg($img_thm);

imagedestroy($img_thm);

imagedestroy($img_orig);

?>

ก๊อปโค้ดด้านบน save เป็นชื่ออะไรก็ได้ สมมติให้ชื่อ “thumbnail.inc.php” เวลาเรียกใช้ก็โดยส่งค่าพาธไฟล์เพื่อ Resize ไปกับตัวแปล ‘filedir’ วิธีเรียกก็เรียกดังนี้นะครับ

<img src="http://tatump.10thingsabout.com/blog/thumbnail.inc.php?filedir=ชื่อพาธ">

ปล. PHP ต้องมี Extension GD Lib ด้วยนะจ๊ะ

ปล.2 ถ้าจะเปลี่ยนขนาด Thumbnail ให้เปลี่ยนที่ $height_thm = 80; เด้อ (สูตรนี้ใช้ความสูงเป็นหลักในการคำนวณความกว้างอัตโนมัติ)

อยากรู้ว่าอีก 2 เดือนหน้า เป็นวันเดือนปีอะไร จะทำไงหว่า…?

บันทึกโดย TaTump วันที่ 24 February 2008 | 256 views

สืบเนื่องมาจากต้องเขียนระบบหมดอายุสินค้าอัตโนมัติ ประมาณว่าถ้าขึ้นไปแล้วอีก 2 เดือนให้เอาสินค้าลงไม่ต้องแสดงน่ะนะ เอาล่ะแล้วเราจะรู้ว่าได้ไงว่ามันครบสองเดือนแล้ว ขั้นแรกคือ เราต้องหาให้ได้ก่อนว่า 2 เดือนข้างหน้ามันคือ วันเดือนปีอะไร

ขอติ๊ต่างว่าวันที่สินค้าเป็น 2008-12-15 นะ ดังนั้นล่วงหน้า 2 เดือน คือ 2009-02-15

มาดูโค้ดกันเลย

$DateStart=date("2008-12-15");//- 1. แปลงวันที่ให้เป็น timestamp ก่อน เพื่อเอามาคำนวณ วันเวลาล่วงหน้าได้

$strtime = strtotime($DateStart);

//- 2. คำนวณ วันเวลาล่วงหน้าได้ ด้วยการ บวกเดือนเพิ่มอีก 2 เดือน

$caltime=strtotime("+2 Month",$strtime);

//- 3. จากค่าด้านบนยังคงเป็นtimestamp อยู่ดังนั้นนต้องแปลงย้อนกลับไปเป็นวันที่ปกติี่

$ResultDate=date("Y-m-d", $caltime);

//- Result

echo "วันที่ล่วงหน้า 2 เดือนคือ:". $ResultDate;

อ่ะฮ่า!!! ทีนี้เราก็จะได้ผลลัพท์วันที่ล่วงหน้าแล้ว  ส่วนเงื่อนไขการตรวจสอบข้อมูลก็ ใช้ SQL เช็คกันต่อไปนะจ๊ะ หรือจะเทคนิคใครเทคมันแล้วกันนะ

โค้ดด้านบนนี้เราสามารถเอาไปดัดแปลง เป็นดูเวลาย้อนหลัง หรือจะเพิ่มเป็นหลักปีก็ได้นะครับ ลองไปศึกษา PHP-Manual เพิ่มเติมดู ไม่ยากอย่างที่คิด

ย้อนหลัง หรือ เดินหน้า ด้วย mktime()

บันทึกโดย TaTump วันที่ 31 January 2008 | 117 views

เช่น ต้องการย้อนหลังไป 2 วัน
code

<?php$month=date("m");

$day=date("d")-2; //ย้อนหลังไป 2 วัน

$year=date("Y");

$mk_data=mktime(0, 0, 0, $month, $day, $year);

echo date("d-m-Y", $mk_data);

?>

จากโค้ดคือเอา 2 ไป”ลบ – ” วัน หากจะเดินหน้าให้เป็น “บวก +” แทน

$day=date("d")+2;

ส่วนเดือน และปีก็รูปแบบเดียวกันกับ วันนะครับ

$month=date("m")-4;
$year=date("Y")-2;

Page 1 of 3123»