วันศุกร์ที่ 29 ตุลาคม พ.ศ. 2553

jquery mask input

ช่วยให้กรอกข้อมูลที่มีรูปแบบได้ตรงกับความต้องการง่ายขึ้นครับ
mask input
download

วันพฤหัสบดีที่ 28 ตุลาคม พ.ศ. 2553

php barcdoe

code-128-font
php barcode code

web programming download

รวมไฟล์ให้ download ครับ

jquery auto-province v1.0a5
http://www.ziddu.com/download/7567053/jquery.auto-province1.0a5.zip.html

jquery thai-autocomplete v1.0a2
http://www.ziddu.com/download/7538819/jquery.thai-autocomplete1.0a2.zip.html

google map editor (php)
http://www.ziddu.com/download/6102819/gmap1.0a1.zip.html

jquery ajax example 1-3
http://www.ziddu.com/download/7041856/jquery-ajax-01.zip.html
http://www.ziddu.com/download/7441624/jquery-ajax-02.1.zip.html
http://www.ziddu.com/download/7435303/jquery-ajax-03.zip.html
http://www.ziddu.com/download/7503515/multi_iframe_submit.zip.html
http://www.ziddu.com/download/7677483/jquery-ajax-04.zip.html
http://www.ziddu.com/download/7770677/jquery-form-validation-01.zip.html

jquery multilevel combobox php
http://www.ziddu.com/download/7660090/jquery-multilevel-combobox-php.zip.html

jquery multilevel combobox asp.net (c#)
http://www.ziddu.com/downloadlink/7432325/jquery-multilevel-combobox-asp.net.zip

jquery dhtml
http://www.ziddu.com/download/7639744/jquery-dhtml-01.zip.html
http://www.ziddu.com/download/8140659/jquery-dhtml-03.zip.html

ตัวอย่างการนำ jquery มาใช้กับ database
http://www.ziddu.com/download/7499181/jquery-insert-update-delete.zip.html

เรียกใช้ php function โดยใช้ ajax
http://www.ziddu.com/download/6732230/call-php-function-by-ajax.zip.html

jquery datepicker in textarea
http://www.ziddu.com/download/6617247/jquery-datepicker-in-textarea.zip.html

jquery monthpicker
http://www.ziddu.com/download/6794241/monthpicker.zip.html

ตัวอย่างการใช้ jquery-cycle
http://www.ziddu.com/download/6719884/jquery-cycle.zip.html

quick chat (php+ajax)
http://www.ziddu.com/download/6144018/quick-chat.zip.html

DragonHtmlCategory (คลาส php สำหรับสร้าง web directory หมวดกระทู้เว็บบอร์ด และ หมวดรายการสินค้าไม่จำกัดระดับชั้น)
http://www.ziddu.com/downloadlink/5677958/DragonHtmlCategory1.3Final.zip

php upload file url
http://www.ziddu.com/download/6871607/php_upload.zip.html

loading json - actionscript 2.0
http://www.ziddu.com/download/6576558/json_actionscript2.0.zip.html

database counter (php+mysql)
http://www.ziddu.com/download/5124111/dbcounter.zip.html


thai captchars v2.0 (cakephp plugin)
http://www.ziddu.com/download/6377442/thai_captchas-2.0.zip.html

web stats v1.2 (cakephp plugin)
http://www.ziddu.com/downloadlink/6674252/web_stats-1.2.zip

ไฟล์แบบใช้ constant และ function ช่วยในการ include file
http://www.ziddu.com/download/6482362/absolute_path.zip.html

ไฟล์แบบใช้การ set_include_path ช่วยในการ include file
http://www.ziddu.com/download/6483841/absolute_path2.zip.html

โปรแกรม php sort-menu โปรแกรมเรียงลำดับรายการแบบง่ายๆ
http://www.ziddu.com/download/6767414/sort-menu.zip.html

c# tutorial (ebook ภาษาไทย)
http://www.ziddu.com/downloadlink/4473263/csharp_tutorial.rar

c# tutorial 2 (ebook ภาษาไทย)
http://www.ziddu.com/downloadlink/4473270/csharp_tutorial2.rar

c# ต่อกับ mssql
http://www.ziddu.com/downloadlink/4513494/CreateAndConnect.rar

c# การใช้คำสั่งใน ado.net
http://www.ziddu.com/downloadlink/4473077/ADO.NET.rar

วันพุธที่ 27 ตุลาคม พ.ศ. 2553

html5 local storage

คุณสมบัติใหม่ของ html5 : local storage ซึ่งจะเก็บข้อมูลไว้ได้นานและมากกว่า cookie หลายเท่า

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>html5</title>
<script type="text/javascript">
function save_data(){
localStorage.setItem('mydata', document.getElementById('t1').value);
}
window.onload = function(){
document.getElementById('t1').value = localStorage.mydata;
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>

ข้อมูลจะยังคงอยู่แม้ว่าจะปิด browser หรือลบ cookie ไปแล้ว<br/>

<textarea id="t1" cols="80" rows="15"></textarea>
<button onclick="save_data();">save</button>

</body>
</html>

html5

html5 มีความสามารถใหม่ๆ เพิ่มขึ้นมามากทีเดียวครับ
อย่างเช่น
การสร้างรูปภาพ graphic บนเว็บไซท์โดยใช้ canvas
การเพิ่มประเภท input ใน form
การบันทึกข้อมูลใน local storage (ฝั่ง browser)
โค้ดบันทึกข้อมูลใน local storage
และมีเพิ่ม tag semantic markup เพื่อให้เว็บมีความเป็น semantic มากขึ้น
(tag จะสื่อความหมายขององค์ประกอบในเว็บเพจได้มากขึ้น)

html5 tutorial

วันอังคารที่ 26 ตุลาคม พ.ศ. 2553

z-index

อยู่ระดับเดียวกัน z-index มากกว่าจะอยู่บน z-index ที่น้อยกว่า
z-index กำหนดค่าเป็นลบได้

div ที่อยู่ด้านในจะอยู่บน div ที่อยู่ด้านนอกเสมอ

ระดับชั้นจะนับจาก div แรกที่กำหนดค่า z-index
ไม่ได้นับจากระดับชั้น html ตามปกติ

ถ้า div1 ระดับนอกสุด 100 มี div1_1 ระดับใน 500
และ div2 ระดับนอกสุด 200 มี div2_1 ระดับใน 300
div2 จะทับ div1
div2 จะทับ div1_1 แม้ว่าจะมี z-index จะน้อยกว่า เนื่องจากนับจาก div ระดับแรกสุด คือ div1
div2_1 จะทับ div1 และ div1_1 แม้ว่าจะมี z-index จะน้อยกว่า div1_1
เพราะว่า div2_1 อยู่ใน div2 ซึ่งนำมาเทียบกับ div1 แล้ว div2 มี z-index มากกว่า div1


#Div0   ZNO
#Div0_1   Z12

#Div0_2   Z199
#Div0_2_1   Z201




#Div1   Z200
#Div1_1   Z1

#Div1_2   Z500



#Div2   Z300
#Div2_3   Z9

#Div2_1  Z8

#Div2_2    Z7




#Div3   Z400
#Div3_1  Z5


วันจันทร์ที่ 25 ตุลาคม พ.ศ. 2553

mysql complex query

$s = "SELECT LEFT(room,1) as room_floor GROUP_CONCAT(room) as g_room FROM tb WHERE status='on' GROUP BY LEFT(room,1)";
$r = mysql_query($s);
while($row = mysql_fetch_assoc($r)){
echo $row['room_floor'],...,$row['g_room'];

}

easy php template

index.php

<?php ob_start(); #require 'connect.php'; ?>
<script type="text/javascript">
window.onload = function(){
document.getElementById('test').innerHTML = 'content by js.';
}
</script>
<?php $tp_script = ob_get_clean(); ob_start(); ?>

<?php $tp_title = 'template designer';?>
<div>hello template world</div>
<div id="test"></div>

<?php $tp_content = ob_get_clean(); include 'tpl.php'; ?>


tpl.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=x-windows-874">
<title><?php echo empty($tp_title)?'':$tp_title;?></title>
<?php echo empty($tp_script)?'':$tp_script;?>
</head>
<body>
<!-- template editable in dreamweaver -->
<?php echo $tp_content;?>
</body>
</html>

เปลี่ยนสีรูปภาพโดยใช้ php และ่ jquery color picker

Demo
Download


<?php

if (empty($_GET['red'])){
$_GET['red'] = 0;
}
if (empty($_GET['green'])){
$_GET['green'] = 0;
}
if (empty($_GET['blue'])){
$_GET['blue'] = 0;
}

// Setup an image
$im = imagecreatetruecolor(372, 268);

$src1 = @imagecreatefromjpeg('shoe.jpg');
imagecopymerge($im, $src1, 0, 0, 0, 0, 372, 268, 100);

// Apply the overlay alpha blending flag
imagelayereffect($im, IMG_EFFECT_OVERLAY);

$src2 = @imagecreatefrompng('shoe2.png');
$red = imagecolorallocate($im, $_GET['red'], $_GET['green'], $_GET['blue']);
imagefill($src2, 33, 81, $red);
imagefill($src2, 157, 109, $red);
imagecopymerge($im, $src2, 0, 0, 0, 0, 372, 268, 100);

// Output
header('Content-type: image/png');

imagepng($im);
imagedestroy($im);

?>

jquery auto province

แสดงรายชื่อ อำเภอ จังหวัด และรหัสไปรษณีย์ จากการพิมพ์ชื่อตำบล
Demo
การทำงานจะช้าหน่อยครับเพราะใช้โฮสฟรีเป็นตัวทดสอบ
Download

=== เกี่ยวกับ jquery auto-province ===
ใช้ jquery + ajax + dhtml เพื่อเลือกชื่อ ตำบล อำเภอ และจังหวัดโดยอัตโนมัติ
โดยใช้เทคนิค ajax suggest หรือ autocomplete
โดยคุณ memee ผู้นำเสนอไอเดียนี้

=== การติดตั้ง ===
1) นำไฟล์ auto-province.sql ไป run ใน database ที่ต้องการใช้งาน
2) เปิดไฟล์ connect.php เพื่อปรับค่า config ที่ใช้ในการต่อ database
3) เปิดไฟล์ example.php เพื่อทดสอบผ่านทาง webserver อย่างเช่น http://localhost/auto-province/example.php

=== วิธีใช้งาน ===
1) ลองพิมพ์ชื่อตำบลในช่องตำบล
2) เลือก ตำบล อำเภอ จังหวัด รหัสไปรษณีย์โดยการคลิ้ก หรือการกด enter
3) เพิ่มรหัสไปรษณีย์ใหม่โดยการเลือกรายการ ตำบล อำเภอ จังหวัด ที่ไม่มีรหัสไปรษณีย์ หรือกด ctrl+insert
4) ลบรหัสไปรษณีย์โดยการเลือกรายการ ตำบล อำเภอ จังหวัด ที่มีรหัสไปรษณีย์และกด ctrl+delete

=== คุณสมบัติ ===
- พิมพ์ข้อความที่ช่องตำบลแล้วจะมี อำเภอ จังหวัด และรหัสไปรษณีย์ขึ้นให้เลือก
- หากไม่พบรหัสไปรษณีย์ให้เลือกสามารถเพิ่ม รหัสไปรษณีย์ได้
- สามารถลบรหัสไปรษณีย์ได้โดยกด ctrl+delete
- สามารถเพิ่มรหัสไปรษณีย์ได้โดยกด ctrl+insert

=== CHANGE LOG ===
v1.0a5 : แก้ไขปัญหาความสูงของลิงค์รายชื่อตำบล ให้มีขนาดพอดีกับการเลื่อนหน้าในหน้าต่างลิงค์รายชื่อตำบล
ใน firefox ในระบบปฎิบัติการ ubuntu-linux
v1.0a4 : เพิ่ม option add_postcode, delete_postcode
เพื่อใช้ในการยกเลิกการเพิ่มรหัสไปรษณีย์ใหม่และการลบรหัสไปรษณีย์
เพิ่ม option new_postcode_list_item ซึ่งเมื่อกำหนดค่าเป็น false
จะไม่แสดง list item ที่ใช้เป็นปุ่มเพิ่มรหัสไปรษณีย์
จะทำให้ไม่เกิดเหตุการณ์บังเอิญกดปุ่มเพิ่มรหัสไปรษณีย์โดยไม่ได้ตั้งใจ
สำหรับการเพิ่มรหัสไปรษณีย์จะสามารถใช้การกดปุ่ม ctrl+insert เพื่อเปิดหน้าต่างเพิ่มรหัสไปรษณีย์แทนครับ
v1.0a3 : แก้ไข function setTumbolList ให้ทำงานเร็วขึ้น
v1.0a2 : ปรับปรุง title bar และ stylesheet ของหน้าต่างรหัสไปรษณีย์
- แก้ไขปัญหาการกด enter ขณะเลือกรายชื่อกลายเป็นการ submit ใน opera
v1.0a1 : ปรับปรุงโปรแกรมเป็น jquery plugin
- จำกัดจำนวนการดึงข้อมูลเพียงแค่ 20 รายการแรกที่ข้อความสั้นที่สุดเท่านั้น เพื่อเพิ่มความเร็ว
- เพิ่ม ajax loader เพื่อให้ผู้ใช้รู้สึกว่าโปรแกรมกำลังทำงานอยู่ไม่ได้หยุดชะงักไปเฉยๆ
- แก้ปัญหาช่องโหว่การเพิ่มรหัสไปรษณีย์ที่ไม่ถูกต้องลงในฐานข้อมูล
v0.9a1 : เผยแพร่ไฟล์ครั้งแรก

=== การพัฒนาในอนาคต ===
ใน version 1.0a2 ได้พัฒนาให้ jquery auto-province เป็น jquery plugin แล้ว
ในอนาคตอาจจะเพิ่มให้สามารถปรับแต่งคุณสมับติต่างๆ และเพิ่มคำสั่ง
เพื่อให้สามารถทำงานได้หลากหลายมากขึ้น และปรับปรุงให้ใช้งานได้สะดวกมากขึ้นครับ

=== Reference ===

ดาตาเบสได้จาก
http://www.thaicreate.com/free-web-script/thailand-province-database.html
ของคุณ Mr.WIN

ดัดแปลงข้อมูลจากดาตาเบสโดยเพิ่มรหัสไปรษณีย์โดยอ้างอิงข้อมูลจาก
http://php.deeserver.net/download/get/106/postcode.rar
ของคุณ deawx
และเว็บไซท์
http://th.wikipedia.org/wiki/%E0%B8%A3%E0%B8%AB%E0%B8%B1%E0%B8%AA%E0%B9%84%E0%B8%9B%E0%B8%A3%E0%B8%A9%E0%B8%93%E0%B8%B5%E0%B8%A2%E0%B9%8C%E0%B9%84%E0%B8%97%E0%B8%A2%E0%B9%80%E0%B8%A3%E0%B8%B5%E0%B8%A2%E0%B8%87%E0%B8%95%E0%B8%B2%E0%B8%A1%E0%B8%88%E0%B8%B1%E0%B8%87%E0%B8%AB%E0%B8%A7%E0%B8%B1%E0%B8%94

วันอาทิตย์ที่ 24 ตุลาคม พ.ศ. 2553

nusoap webservice


<?php
include("nusoap-0.7.3/lib/nusoap.php");

$client = new nusoap_client('https://rdws.rd.go.th/ServiceRD/CheckTINPINService.asmx?WSDL',true);
$client->decode_utf8 = false;
$result = $client->call('ServicePIN',array('PIN' => '31021xxxxxxxx','username'=>'anonymous','password'=>'anonymous'));
if ($client->fault) {
echo '<h2>Fault</h2><pre>';
print_r($result);
echo '</pre>';
} else {
print_r($result);
}

?>

div position

how-to-get-div-css-to-appear-over-flash-files/

วิธีทำแล้วแต่ว่ามีวิธีการเขียนแบบไหนนะครับ แต่ถ้าใช้แบบผสมก็ทำทุกแบบที่เขียนครับ
1) <param name=”wmode” value=”transparent”> ใน tag embed ใส่ attribute wmode="transparent"

<object width="400" height="300">
<param name="wmode" value="transparent" />
<param value="true" name="allowfullscreen" />
<param value="always" name="allowscriptaccess" />
<param name="movie" value="..." />
<embed width="400" height="300" allowscriptaccess="always"
allowfullscreen="true" type="application/x-shockwave-flash"
src="..." wmode="transparent">
</embed>
</object>


2) แทรก parameter 2 ตัวได้แก่ "wmmode" และ "transparents" คู่กัน
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0','width','960','height','65','src','...','quality','high','pluginspage','http://www.macromedia.com/go/getflashplayer','wmode','transparent' ); //end AC code

3) แทรกคำสั่งเพิ่ม attribute ให้กับ swfobject
<script type="text/javascript">
var so = new SWFObject("movie.swf", "mymovie", "400", "100%", "8", "#336699");
so.addParam("wmode", "transparent");
so.write("flashcontent");
</script>

วันเสาร์ที่ 23 ตุลาคม พ.ศ. 2553

multi-column pagination by num


<?php
mysql_connect('localhost','root','12345') or die(mysql_error());
mysql_select_db('test') or die(mysql_error());
$limit = 30;
$nc = 5;
$link = 5;
$cp = @$_GET['page'];

function pager($tr,$limit,$cp,$show=5){
//ref:http://web-programming-bookmark.blogspot.com/
$tp = ceil($tr / $limit);
$cp = intval($cp); if ($cp < 1) $cp=1; if ($cp > $tp) $cp=$tp;
$start = abs(($cp-1)*$limit);
$fg = $cp%$show == 0 ? $cp-$show+1 : $cp-$cp%$show+1;
$pat = '<a href="?page=%d" %s>%s</a> ';
$s= sprintf("$pat $pat $pat", 1,'','[First] ', $first_of_group-1,'','&lt;&lt; ', $cp-1,'','&lt; ' );
for($i=$fg; $i<$fg+$show && $i<=$tp; $i++) $s.= sprintf($pat, $i, $i==$cp ? 'style="font-weight:bold;"' : '', $i);
$s.= sprintf("$pat $pat $pat", $cp+1,'','&gt; ', $i,'','&gt;&gt; ', $tp,'','[Last]' ); return array($s,$cp,$start);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620" />
<title>multi-column pagination by num</title>
<style type="text/css">
/*<![CDATA[*/
.pager a {text-decoration:none;color:navy;}
.cell {background-color:#CCCC00;border:solid green 2px;height:100px;width:100px;overflow:hidden;}
/*]]>*/
</style>
</head>
<body>

<?php
$tr = mysql_result(mysql_query( 'SELECT COUNT(*) FROM guestbook_test' ),0);
list($pager, $cp, $start) = pager($tr, $limit, $cp, $link);
$rs = mysql_query( "SELECT * FROM guestbook_test LIMIT $start, $limit" );
?>
<?php if ($tr > 0): ?>
<?php echo $pager;?>
<table border="0">
<?php $i=0; while($r = mysql_fetch_assoc($rs)): if($i%$nc==0):?><tr><?php endif;?>
<td>
<div class="cell"><?php echo $r['name'];?></div>
</td>
<?php if($i%$nc==$nc-1):?></tr><?php endif;$i++;endwhile;$i--;if($i%$nc!=$nc-1)echo'</tr>';?>
</table>
<?php echo $pager;?>
<?php else:?>
no any records.
<?php endif;?>

</body>
</html>




# --------------------------------------------------------
# Host: 127.0.0.1
# Database: test
# Server version: 5.1.34-community
# Server OS: Win32
# HeidiSQL version: 5.0.0.3272
# Date/time: 2010-10-24 11:05:40
# --------------------------------------------------------

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
# Dumping data for table test.guestbook_test: 300 rows
/*!40000 ALTER TABLE `guestbook_test` DISABLE KEYS */;
INSERT INTO `guestbook_test` (`id`, `name`, `detail`) VALUES (1, '4e681ae9d4a5e5698f08', 'bd307a3ec329e10a2cff8fb87480823da114f8f4'), (2, '24368c745de15b3d2d62', 'adfdcffd9458e3980c7b0a27e3c53c7e84231251'), (3, '3fc2c60b5782f641f76b', '039f2f810d2c4f2631a192e37a58ba1ff8248780'), (4, '4aadd661908b181d059a', '4a1604a55d06780b49eed51f080fd11f0cf42364'), (5, 'b44182379bf9fae976e6', 'a51a0312093b0b280af66804ff464d5003d762aa'), (6, 'f5deaeeae1538fb6c459', 'd98826f75b0a3529d13d6bbde4c9b4c4690d555d'), (7, 'd0f5edad9ac19abed9e2', '6116309181daaad30d9850c94183b963b7a58739'), (8, '88fee0421317424e4469', '27abda65bdedf4f26e868fc69b2d3f9c0ef8c55b'), (9, '1f0e3dad99908345f743', 'ab571f647827059af1f427e1932b8e95fe464034'), (10, '0060ef47b12160b91983', '249f970562c4ca75e9922c006f26fe3187c9f3b8'), (11, '0e080857e96278e6dba7', '0dc0aa67a8832112a3ab235633b0331b104d85de'), (12, '96e07156db854ca7b00b', '5e63673cbc075e2d21cef6bde4c591c263380bee'), (13, '7c0f63c15f8749d716ba', '412085c129e3538bc20644116c05ed7fc4c33aa0'), (14, 'a6e8ad49045f0bef72fb', 'a36aea06575f0485eb562fd39d6c649ff66c746f'), (15, '3d0236a18121ec86eff6', '070712c23d5a7197bce22cc097c928860c96187b'), (16, '69adc1e107f7f7d035d7', '2f83ff6a6a77e7aca11c87d1ee6f9b8fce10c821'), (17, '0a118184382a407bba7a', '1e8d0db4d285c13611cf3affd3dc3119d6569574'), (18, '46f76a4bda9a9579eab3', '807c96dd078cc58d390e6eae0488d04429877634'), (19, '19d19f93a4200dca6148', '9a3bb2c1c6a62ee0b83762e08bc651dea2cede4f'), (20, '4efc9e02abdab6b61662', '8028d42bab92b6ac1e8c41b0c4766e4994d33367'), (21, '71ee911dd06428a96c14', 'ecd03d5125ae3197c8df37622b8a4e7514e1b3a2'), (22, '69295f5f6bd7d1a08da4', '076502c184b03456d4a858f61aa2709e06026af3'), (23, 'b0bf8b3daf61246d1327', 'bd6b9c48d4edfb9bd8f525fb6ebd8de089dc5bfa'), (24, 'ff450ba01b0ca2695d62', '85cfa318728dba9c487d5dcf160b1c243a50401f'), (25, '12e59a33dea1bf0630f4', '360d4748cf103ccc8156a0d94596456ca0512c29'), (26, '74961657ae02e93fc17b', '9753e686f0a75399ca60ae03442353b4b7862ee2'), (27, 'f2708856060b3b50379a', 'fdcd8c7d50f004639ff415bc2d585fcdd34561b3'), (28, '1d0832c4969f6a4cc8e8', 'f0fd26008ea3e9adf7179d36ddb269583c0bf37e'), (29, '6a61d423d02a1c56250d', '41eeac9f2cb4dc9c3ea2f17786ad8471746719b7'), (30, 'd30d0f522a86b3665d8e', 'a602143828b77067022f6e0f10623fad4f346ce7'), (31, '28fc2782ea7ef51c1104', '5c1db421da9732ec803cb70434c6f7689b755cb7'), (32, 'a546203962b88771bb06', '839914b75e6f05e125a3ea948fa8b40f29460a79'), (33, 'd863d5ec458b0dc3b46c', '85755d7d0254a5e590031354dc5984ffeff70d4d'), (34, 'd10ddbe86fe1df4e50c9', '1fa14e37789fc5b5f6b5fa1fbfd0fe94eaec21ba'), (35, 'b4edda67f0f57e218a8e', 'c77be4d776f1eb0b0653d3d825d5cedb6950c1e9'), (36, '93963474edfd08f1f1e7', '6529ca051e6335a77eb74efcaac97b54fd8d908f'), (37, '63923f49e5241343aa7a', '268d2b8c52c20143354c7ab5403ae56c81faa11b'), (38, 'fb1378d0b80ae44aae00', '67403548f8644a7f6320245a898bd49729660708'), (39, '524f141e189d2a00968c', 'aeab2a27fe4d5b98eee7f174a7301f98b85a68e9'), (40, 'e820a45f1dfc7b95282d', '0741862137cb88cce80cca185e7466949cb94137'), (41, '7a2b33c672ce223b2aa5', '43b4d1d4656278e0d1055d505443f404f81ab422'), (42, '09ab23b6b607496f095f', '3b952e8cac8a77df2f3c2ecc2193793f7df2afc0'), (43, '3295c76acbf4caaed33c', '8d25b4c973c5dafa021036664b080a79e0bb69a0'), (44, '2c79b73d2716e9470ec6', '2f6ff2c23245604493df6d937f3627842577eefa'), (45, '80fee67c8a4c4989bf8a', 'a4d6d7701a87242dc1b54430c529b73683de48c3'), (46, 'dd1970fb03877a235d53', 'c7332976a95835182f8b2c8a2742e00c52bc65ea'), (47, '5901fe6483310c89c35b', 'fc5ab04944f17da73bb33362fb70110494afb251'), (48, '9c415bdd4dd66723ef7b', 'c021617d35e4fd074d25f23092ece1e8f1b3db5c'), (49, 'bdeeecd97342dada4721', '34e192298d71913580d7a220b40f6aeb7b74fdcb'), (50, '1f33d7cf6693dc6dcc70', '3c331613a26f366446dd2bb9297a8b4104e340d5'), (51, '58182b82110146887c02', '8a0d5a57533dd35f721690857a5e64a65a7e294e'), (52, 'adf8d7f8c53c8688e63a', '85ed038ac2e3e244786cc34667f7f3b31234aa08'), (53, '300ecf93b7224cf439b6', '53a6593ea063a3cda52a0e5ef1ec89326dd75176'), (54, '2d5d4cf93ccf992b3fe6', '5d983fb8b5d03811e337fa6c7e3949e90f77ba7c'), (55, '2da6cc4a5d3a7ee43c1b', '06a9faaae060b0ef27cabec6e75c775ff7a2c757'), (56, 'f023559c6d59c04e3804', '36ba342c33fdda45b3ea636ab01040330ab94322'), (57, '4e668929edb3bf915e1a', '03ff9e9cb1b99336f12cec39e54b06bdf17b8d73'), (58, '44089d5f715bc4112ad9', '27e5a26888e2f62c065f72bfc403724eba15a29e'), (59, 'eaa1da31f7991743d18d', '45604c57f22a3d83d904bea7fe0cd2fdec33bfab'), (60, 'f516dfb84b9051ed85b8', 'f1c162e8edb528b0bf34c56e74499b0d8e0cc3d2'), (61, 'e5f6ad6ce374177eef02', 'f13a41f4e66a94d91d041bd57d921312a88cd3d7'), (62, '019d385eb67632a7e958', '7a2b6ce23d01e0f235e87d58e4e9da422f67c65e'), (63, 'bdc363788b2b48c031bf', 'ce9c08972c7184ddf197e6281fcffa9ba2678b87'), (64, '26cd8ecadce0d4efd6cc', '5132b4f2af35ad2ca7d265d40bb7fb8d3165f4ab'), (65, '522a9ae9a99880d39e5d', '9b1fafd14b164333bf8d60010e00fd5dca3a7bfa'), (66, 'cf5ff72ca35f112b361d', '28a5350334f2d25719eab2c72e1175d463bd9031'), (67, 'f621585df244e9596dc7', '98f645f1b0514de8983890162a143cee05c90bca'), (68, '950a4152c2b4aa3ad78b', '335e36e506b72bb78257648e6ddeab83ce9a8839'), (69, '585eb4127afd003bd784', '10cc9ad16a2120ac04c115f1e6c5d0ede4511e63'), (70, 'd9d3837ee7981e8c0647', 'bdb0e626322c4c78420b81c3d93b1d25dfa2de9d'), (71, 'f3304160fbf7c5dc12be', 'd1e18e16aa4e1f89072e4fa3319f08b8025c3874'), (72, '0fd4b8a8354a77a3fa75', '3158e5f03a0a49527162d2089c27901dd431203b'), (73, '1299c1b7a9e0c2bf41af', '70b8dcb93382715a55ce5f2a8356ef5636a2d2da'), (74, '9271905e840548b8cada', '6f326f558eec1db9f1e569969c13a806b594821c'), (75, '44d47238d7d3e17aa176', '2290997cf4140b73fb0faa6eee588bd0aa0403cf'), (76, '75a7c30fc0063c4952d7', '4afa8f9e90756f0f919a124a1dfbba19be004edc'), (77, '9b9b05072dd20d1cc3e5', 'aa2fcaaa705cbefaf634be20dbf577d13ff28389'), (78, 'aedf8c04c36592dbe313', '603d6ae37af2b09b7bc8f7384840b4e4bb891aef'), (79, '217b4c71837fac172fab', '21cb91fe07368a0f6619722b30f4f11916fa53b5'), (80, 'bc2ba6bff2342259d8fb', '07906bd1b15a6b99ddba06f348809e93ac109966'), (81, 'b5ecbbf5782cc7fe9e45', '97da12e6534156c7bb258e5449f2d510c20d5c6b'), (82, '1a260649dac0ddb2290f', '0ee1bd6cd549fe4f6d96aee262995b056c2cf871'), (83, '3f088ebeda03513be71d', '78532a36aae864341242204d6cc28c926e7f3fa6'), (84, 'b3dd760eb02d2e669c60', '74e47cd1d6f905a236a916b2b04af43479b4b847'), (85, '4efb80f630ccecb2d3b9', '2863d7ae605104eeef364e3f164d3404e20f680c'), (86, 'e8de67aac98d923eb372', 'e8222aa035e9461b396b82abe71875dcc41403a3'), (87, '71a8b2ffe0b594a5c1b3', '6eea5216ce169fd6753767b1130eefdf45e5141f'), (88, 'af8d9c4e238c63fb074b', 'acff62fcaad12a5b226b85901415dc2b87cdce2e'), (89, '76444b3132fda0e2aca7', '0aa78e33962d7071d237690ca3fdfd11093f373f'), (90, '38ed4039c0b33e2ec51c', '8383da94fbc3893a50deddfd249fa33c22a1d215'), (91, '80c60e6ccca996995b27', '173e2ece985756384fc13564303c66ad5a6e7e96'), (92, '2f4fe03d77724a721700', '697b2af641581a09d8eba2f33cdb255ddb55f22e'), (93, '6e616e79d491ba426385', '4c1b52409cf6be3896cf163fa17b32e4da293f2e'), (94, '8ede06ecd4c633266fdc', 'b5d51df3594cd812f73f77f142ef2acabb704b8d'), (95, '14da92f2bdaec7f22180', 'e4e3359c4844ae4209898b47b62fc6a202e4e225'), (96, '8d2355364e9a2ba1f82f', 'ae822819370e5bbd154957d954f31ada17d19e7f'), (97, '5383c7318a3158b9bc26', '75d4c9b02467d96bc2ea6d655eb983d5a7a97a9b'), (98, '71a8b2ffe0b594a5c1b3', '9a54585f1231c973d2dda47e691985123524f125'), (99, '3aaa3db6a8983226601c', '8f787f45102d363e1b7d6ef37fc7b5dfdf956d72'), (100, '624567140fecc40163fe', 'd48b60f110d901e200eeb1774e735c9a39521d42'), (101, '86df7dcfd896fcaf2674', '98e2d0dde052c9c6ae9de3ce8f5b6a543714b50f'), (102, '43a115cbd6f478892453', 'c64c3395b5e1bed0dc58f15f7acfacc4efb3bf16'), (103, '29263a8cf61fb9addf56', 'af33a1949963943552f4344d5fc328917003d4a2'), (104, '54b2b21af94108d83c2a', '6980c2c688f47c4fb19d8872555fe78386eaf436'), (105, '99e4ff886ade11035098', '5c5e21f67a04de3f4edbab7f46e71d3aad525d9f'), (106, '74249bfb363306265299', 'a77b8776fc8e8b101134cd662ec6e95f7e89f42b'), (107, 'b4f8e5c5fb53f5ba8107', 'ebf687ed19f26861f7161630996f2f6549375a5a'), (108, 'f4f0edb08c97567ce6b0', '1832b2d0aadad73c8bc765ca176ca2cdcaa78374'), (109, 'a24281a03c28fa405eb2', '63afd0edc0371ad842d7a7ecc76260be4bc3e8c0'), (110, '78f1893678afbeaa90b1', 'cf0dd52aa71695b3fa9d6c320c218ad0cee1e7e4'), (111, 'fca0789e7891cbc05832', '3c43076927091194ca066d92026f5e755d36170b'), (112, 'd82a1853da4df5edcfc6', '82d685d6491861480e65c96428e2113a337590bc'), (113, '40b5f25a228570053bc6', '145f36653383565a93823aa1a2b2f1b0c50e331e'), (114, 'e0c641195b27425bb056', 'cd3f0c85b158c08a2b113464991810cf2cdfc387'), (115, 'b31df16a88ce00fed951', '54a734611576b0e683b676068450a54ad2c3ed2a'), (116, 'e8fd4a8a5bab2b3785d7', 'd60d68dadb4c6c04f36872d1252f589057ac73a8'), (117, '2d5951d1e3b31dfb7fd2', '5d58a4cf1b2f4166c22e82c2dc73adff7db151ea'), (118, '2ef3dce7c059b268cf8b', '804b1a3fb40cdad2188c037e95ef1a2415495221'), (119, 'c617ea9609ec34136076', '767cac3519f103995a6103795daba047714de742'), (120, 'b8f3ddac6bf90e1b80cb', '2f9f705a38307c470e3a819ac1f6df7a7fa0ffbc'), (121, 'd3e8fc83b3e886a0dc2a', '037327bbb1e57db9df3597747020724c04b776fd'), (122, '07a96b1f61097ccb54be', 'a2637870b7856ba0031050025ba59d77a61bb780'), (123, '08b7dc6e8b36bcaac158', 'c5e06d5e3fa1a0192d71ba9ae3c97385a282bf44'), (124, '9ddc70b3617c3e65c03f', '017f521f42d04b1e00374e9cd9ffd2cf0408d372'), (125, '41b0db49fd10d9592028', 'f0990a850b5810f5049caf49284f9f97b74bc251'), (126, '43ec517d68b6edd3015b', '9c7f472a7ba7c47e3790268817bb2d45ef428ea7'), (127, 'fa385fb5a8e79b41a0d3', '9802892de10c4eb91daafe3fc970b544f75ad997'), (128, 'efd7e9ed0e5e694ba6df', 'c6ca522279d048320dff76f6463376d6eced73dd'), (129, '142c65e00f4f7cf2e6c4', 'c8b480da2f55e147b7104a33aed6d1334071fdf4'), (130, '6f6d7ea73f8b34354a3e', '3b92a281bba1b0b0912e1a2e2a04d0243e3f1c44'), (131, 'c4127b9194fe8562c64d', '61925c2ca9eae69defbb0aa46d2feedab3e11c90'), (132, 'a081cab429ff7a3b96e0', '88dc38e029c5ff35ed3f103faca7ec14e7d77073'), (133, 'a6d8ecc0b8747fb7c28e', 'dca3b5e83276b8b1ba9f20bb05ee8606d1a7fb67'), (134, 'c6ede20e6f597abf4b3f', '62fe577db13fa2dfab66ac892614234f0889e433'), (135, 'd3d9446802a44259755d', '87529797683715b2658b70ce09788359831a6694'), (136, 'e34376937c784505d9b4', 'c28aca23f1ef3718a464383d925c66842078edaa'), (137, '9d12d071c18b535cda26', 'dbd3776d4fae66c6f854193c22cb95b09c2b522c'), (138, 'f2925f97bc13ad2852a7', 'cc197dedbd9abf95a82743b6d9e48ff44f7f1fba'), (139, '4996dcc43b5be197b588', 'da4b9237bacccdf19c0760cab7aec4a8359010b0'), (140, '10cc088a48f313ab3b1f', '17ba0791499db908433b80f37c5fbc89b870084b'), (141, 'f80ff32e08a25270b5f2', 'aebb269f1793d570326faf896380ca3fb1e4fb9b'), (142, 'ae0909a324fb2530e205', 'cad70ff317261eb8e01e179ee429ba343bc7bb2c'), (143, '71d7232b9fed020ca237', '7c2e15821c2a1ff3528029471cc418c8960ba179'), (144, '122e27d57ae8ecb37f3f', '2786802b76e9d205c41ac21079721157c4ee95c9'), (145, '9bdb8b1faffa4b3d4177', '82ad38f885211232bd89c439e0df9982d6ae74f7'), (146, '735a8b95123648555736', 'd219df5d5575e19e567ec1be682babf726a3baca'), (147, 'bf4334a2421c544eaa17', 'a153e22675856f949b7a811b298daeb9bb8947b7'), (148, 'fdbd31f2027f20378b1a', '544a6ce776b846b62f200eedabf8f2d0d0c3558d'), (149, '7eb7eabbe9bd03c2fc99', '56097895bc5230cba06d65b34d53820c3d81c416'), (150, '068004fef1759529ff6f', '49064482b782cf8b47acb071c6ed38bda3155c0d'), (151, '576e5effaa235485db53', '5241af651564ecc6c8949d8692e313664477a2f8'), (152, '598b3e71ec378bd83e0a', '5f21e9e496e66c2052c151cde84003cf2920c098'), (153, 'b035d6563a2adac9f822', '0f02629cb225b04f38eee92a8d6da794abff8a6a'), (154, 'e3978ba7ecdecc63be5f', '46d82d4ff9a1da171e1bcfd6feeb969ba28e408e'), (155, '706608cfdbcc1886bb7e', 'bc2d058727b1ffc46e7e956b4a8cb8ae9fe9dc0f'), (156, '48d4167a0f3bc10686a1', '9e1b6ff760982918e46d5166c54e5b60fa0d3299'), (157, 'e3978ba7ecdecc63be5f', '9bd7909ea32c89f68e82ed0cbe1f30a2e1d72b1c'), (158, '8252831b9fce7a49421e', '05eb915fbebb5cae2380562f739203d2a1594936'), (159, '685217557383cd194b4f', '45755cc8413b113916c6510ad30e0b71ac41ef04'), (160, '1a68e5f4ade56ed1d4bf', '83f44c8e69a8eb128a552fb6a5da7945d488cf3f'), (161, '51de85ddd068f0bc7876', 'f27b185bd960df59798f065da107793ecf0bd00c'), (162, '81b073de9370ea873f54', '857e17ffc4781a2ec016adfe176349d1719eb34a'), (163, '0a4dc6dae338c9cb0894', '009cf5cd194315400a412015e3ff4d9e95ab2d61'), (164, 'c4de8ced6214345614d3', 'b202977c0fc07e1c6b31961a905395a8ffb23121'), (165, 'ab452534c5ce28c4fbb0', '31001d9f9efd381262f4daa314839cb9416664d2'), (166, 'ef4e3b775c934dada217', '89d1c9fed3bb56983bc1ed0986843138a7602579'), (167, '12e35d9186dd72fe62fd', 'e42adf65f65e9c4e654f3ec59b341d5118b8c905'), (168, 'a0443c8c8c3372d662e9', '34c66477519b949b09b45e131347c17b5822a30a'), (169, 'b9acb4ae6121c941324b', '924235a2c5238dc63b88b7347ca36c2cba09c5b2'), (170, '217eedd1ba8c592db97d', '12dc672132ef15bbfdba913435b4ffe1581d6978'), (171, '3c51419c5607de9699da', '8026ea3366528fee456e81f76a30e768bf4d7cf9'), (172, '941c377c73c0efed759c', '3ae2996159ad15be2c874213b20c42feb6bf21f0'), (173, 'ec36e2ba64f11c9e910e', '4c4e40290c8198698716c0ac439005d51a630ad5'), (174, '26178fc759d2b89c45dd', 'b1c16753f8776ab41f2156723ca3ad12c8d3fd61'), (175, 'ec8ce6abb3e952a85b85', '5271534c381f9a0d88d4541d81b6f699abec8076'), (176, '59b85c256f758c22eae6', 'af00ef31bb91d056c29003a554e8c818aaab34f9'), (177, '043a1c71577f6249b071', '9c194121e86f68be8d2899443f30816a112d524a'), (178, 'eb1848290d5a7de9c9cc', '6c201efaf928c4db315bee1e4002a646d5714f13'), (179, 'ccc58dde99ac1c9f3253', 'eac14c103849acaa85f8ccbc4a1264414a066aca'), (180, '0ebefbe6a3b4e5e0d786', 'abf749051d8b000946c71a2e216e55eeb49cf414'), (181, '8cbd005a556ccd4211ce', '86ac7ae685419b7602fc69a6eb8d80c3914ad756'), (182, '92bbd31f8e0e43a7da8a', 'f111f376352dc911db43324cb1010603a820b93c'), (183, '2edfeadfe636973b42d7', 'fc9b86c5fcec82b7df1d0ffbf3e5ebd3cf67fec7'), (184, '885cb47f87718a2cd864', '7c753b72486156bc11e7416305a9c87ada24439e'), (185, '46e2516e4be5d286ca37', '2aed8cef33a640e55d1a7f9358fc92db260a4de9'), (186, '894b77f805bd94d29257', '5e06d22c8893e27d5a7243bd185faa94cc593072'), (187, 'ad8e88c0f76fa4fc8e54', '2d0c8af807ef45ac17cafb2973d866ba8f38caa9'), (188, '1397386b7a1507535c59', '578fc554ad4ca2870648bf32a9795091dab371b3'), (189, '2d44e06a7038f2dd98f0', '6f2c73e47a4a7da5ed35dc3954c0ea3e2fe863a3'), (190, 'c7a9f13a6c0940277d46', '8c1de5ff865bfa264811c5c0b601379bd9b6f823'), (191, '962e56a8a0b0420d8727', '69738eb161526ac3a7f050831a4b98f08c9d95e4'), (192, 'e32cc80bf07915058ce9', '7c2e15821c2a1ff3528029471cc418c8960ba179'), (193, 'a8c6dd982010fce8701c', '110758e6cb24ac07067a72a8d718dbafd5f5261c'), (194, 'df5354693177e83e8ba0', '7a9ca14dcab2ffdcfc790dac3afe5ba5be292823'), (195, 'b8ffa41d4e492f0fad2f', '9879748cf2fbdf6442ed89d87497e356c0209423'), (196, '60106888f8977b71e1f1', 'd29667fbb2ec302bdfa2c389db257aaaae519c25'), (197, '1141938ba2c2b13f5505', '9419c8cd00f6fb40461727dab25e62ed1e466c29'), (198, '2d579dc29360d8bbfbb4', 'dff48911e003ebe49473a85a4ad490b1d9a85111'), (199, 'b2eeb7362ef83deff5c7', 'b026a591b7cab6d7ab2879f988e3300d88e9d28d'), (200, 'd768f8ec110b0207ba7a', '90cefe7404ffb4fc8e121cafb0bb185c0b3d8c73'), (201, 'fa60438ac1719d11eb95', '5b243020a372ffdfdc5507633050e668faa674a3'), (202, '4f284803bd0966cc24fa', '67469575771df48906920b2a850ccc7fd96ddd32'), (203, '6d96718a701f5bfba283', 'da2c8153d1033a15a58956b06afc0da5b2737d4b'), (204, '3dfe2f633108d604df16', 'bc65e43d235d6b61464e9f8bc0859e45d90e5ac9'), (205, 'beb22fb694d513edcf55', '929d4b9dcc22eaa58c8e7d9895b5ac0e901a220c'), (206, '2cb6a27d266231298f8e', '440047e63edaf14b56a126478941e78df1726c0f'), (207, 'df9028fcb6b065e000ff', '49064482b782cf8b47acb071c6ed38bda3155c0d'), (208, 'dcacff2565700c8f88f5', '8621c903d2df1cadab84f4f958df7b53e6011f17'), (209, '4fac9ba115140ac4f1c2', 'c47ab2c905092f40e9ab88c4f01437566acb9fc2'), (210, '9a96a2c73c0d477ff2a6', '1721c6c183de1b3bcd0ba5e91d1145c1d136c35b'), (211, 'c34a7191f6e9948068b8', '80cc3ab97a5b0977b051895f76c0ef8a13a3c40e'), (212, '1f4477bad7af3616c1f9', '9a6aa8b8b6919d3b97d0f40c9eda85f5523c7dd2'), (213, 'f2501c71a070a8bb42e8', 'e25209a9755e4093686a2d7966cf519aa825607e'), (214, 'e555ebe0ce426f7f9b2b', 'ff3d3275e74dcbac2d970eea9ad779212cadda17'), (215, 'ae0e08163d22befd4635', '3ad22756498ee09bbffc29a627e4622e1ca9202f'), (216, '31c23973a376c90940f5', '6e914e59681d9170c7e308e1a0761351d6b5d47f'), (217, '46c67bed153cfbe02079', '859da0a80faeea932930821c5b0a4c8db1035cf0'), (218, '19702ce80aa823cd508f', 'f365960d6be332d3757ce1407b0cb363683da481'), (219, '5a0c828364dbf6dd4061', '2734410677a5bab3c9d09774226ccd8f0e6b4e0a'), (220, '58aaee7ae94b52697ad3', '2655db9710e289dd73f320da554ba0229c23d9e9'), (221, '326a8c055c0d04f5b065', 'b3127db559f42d94b65378c4eff75e7a51a21094'), (222, '812469e49663025b39e8', '873e374a759652a0c39b5f49a7834c674a330fe3'), (223, '0ff8033cf9437c213ee1', '643fec50e79c69bc6bbb7616afd3904acf40867c'), (224, '828b1eb30921659e22e5', '8cd64781c2534d80953532be0b0f6a02bc7ca9aa'), (225, '13d7dc096493e1f77fb4', '14eb81da2149d1bb668e232e96cefb9b51dbeed9'), (226, '5c572eca050594c7bc3c', '6fe3dfe314684a658c1b19ca7a8e3abd29afe23e'), (227, 'b3bbccd6c008e727785c', 'e2a1a159b8fb42a1fd874f5edcbb08707df02a92'), (228, 'de905148259ea27fa49e', '88197b09866a12813af0460c3abd113989862c6d'), (229, '576d026223582a390cd3', 'da73f2a1704c83909a2cea4ad496fbc746e4de1a'), (230, '9078f2a8254704bd7604', '7d2597e0451c0ce2be457d54d7b6a1f2c8755f0d'), (231, '60a6c4002cc7b29142de', '709ab2e645ba2fa720d49cd47015daa8ac786a55'), (232, '07ff46bb6597a4f81eed', 'f4cc5bc52436baa9505b2d60911299bbd560a79a'), (233, 'c9dd73f5cb96486f5e1e', '306c6439f1eabdccc3c3d42e19e403973e784d70'), (234, '735ddec196a9ca5745c0', '1ada5d1d8c5966b872190c472e8608536971afa2'), (235, 'fbb5d2cf4558b47551ad', '137d22929d35f70072157667115aebbcd3f81530'), (236, 'fb3deea8bff8902a6a09', 'fa25629e230f2a3135151aa25f5d94df0ab07b7c'), (237, '217e342fc01668b10cb1', '414318b3e1279774237a4abb345b2c61fe267d43'), (238, '7da18d0326a9f46a4817', '3113c7f452f57e07f53fbd5d0385a85448b094d0'), (239, '7fc9fd4c6654dea5be92', '06be19ff5cbfb5dba362873de9cba10fa3d48b9f'), (240, '2b8f621e9244cea5007b', 'ad63f5eec857aa76bb93fb3f9d5fa75499122db5'), (241, '5ecf33fd9caf42c3bd39', '00a84d7c02fa639f91c4cc532370f2d071612576'), (242, 'e7d6e2e80f0955c01f3e', '87496e984d6e0cc5d47f38cf3076e21af2bd4815'), (243, '7990ec44fcf3d7a0e5a2', '399bff92b2aa5398d723670ae743d7ad011cd28a'), (244, '251dbb5e528421776ff6', '4ecd15b3015c937544de753ffa2108336b2936e4'), (245, '82f5e54d8e425cf93af2', '42271387fd9aeff9e75d653d2f08c7da3e3d8ec6'), (246, '0e139b17a92b2df7d6c3', 'ef9cb1abfdb1d45bb08bd2742f179591c8266187'), (247, '1068c6e4c8051cfd4e9e', '15c94516bd535d2a40fd1d6128545d1300b18b88'), (248, '566a9968b43628588e76', 'e28b45cced3c89ad3835fbdf261367ebea91b180'), (249, 'f40ee694989b3e2161be', '1c90b882d4ac9c7d95d597bd8b37e3bfa36aec00'), (250, 'bb03e43ffe34eeb242a2', '348950a7bb98490a31f1f39ed1609647cb70f163'), (251, 'f82798ec8909d23e5567', '01de3733f173aab206c5e0539750c573672f14fa'), (252, 'c404a5adbf90e0963167', '74acb5d400836836f23eb1b5616c0cc76151477c'), (253, '8bb88f80d334b1869781', 'deb0c1ce86a6aa52258d960ff94accc75e3f8067'), (254, '4513c30b7d281d3bd5b6', '40bc268f88e6d1bbfcc03874d9ed50ec2889a711'), (255, '84fdbc3ac902561c0087', '8b1e80abca15b33ca7bf105e31725bfaa007c5f3'), (256, '6d0f846348a856321729', 'eb782cb36fc6e7eecc8f689731b2ba7bb73a7710'), (257, 'fc1a36821b02abbd2503', 'bf91d431389989d17674008c379587b6308503e4'), (258, '6048ff4e8cb07aa60b67', 'a29dad335dcd6248e6ba9ab3aaec627b49f68d74'), (259, '3636638817772e42b59d', 'bd3dbd7ab495032c8a5020c0cd28412720c9cdc5'), (260, '5c8cb735a1ce65dac514', 'c2c64287ee45fbb2727ec36b47256f77f17d977f'), (261, '8038da89e49ac5eabb48', '8e3c07a198efa67e51a01f3ab800663a57ea6e50'), (262, 'ebc03fa648c2cd7da9d6', '4240b033f5f22c9a9cab56bf555f71904b837b54'), (263, 'f47330643ae134ca204b', '3c5174b71d24aa217f93fc1b7439c1ee25e11556'), (264, 'c3cbd51329ff1a016917', '1a532553c8771a765adaeead52ffd5e07541b9a4'), (265, 'ddbc86dc4b2fbfd8a62e', 'c06dcec4b5978e64d32f7d5c292d7612cbe9dde7'), (266, 'f8e6ba1db0f3c4054afe', 'd8356d4de0b9c2106bcb2eb068937a5b0788e0c5'), (267, '009a5510ad149a8e0c75', '3db96f61d66b872fca548a19b248be5081dca824'), (268, '6c752cebb3e95bbb82cb', '2f7e7e2b415f5e61b667d9bafc453038023eca3c'), (269, '61c66a2f4e6e10dc9c16', '1ecaebc17c517485f0abe45d78a7bc38d58268ad'), (270, '6915849303a3fe936575', '5d3f5cfd4cec011c10d60f29039f05e23a44e37a'), (271, '7bad3bd3f0f97b500e33', '66718ee827f435c00017446e78f6892aadcb84d9'), (272, '1dffefa65e27e7187c6c', '920115baebfa933821486f5e4b6086f340032114'), (273, '8e0ce414531179ae9b7f', '41a4864df0d976211134f305dff4024bb29c3773'), (274, '8830c97ab60254cd0562', '858011a0f35faf85ad57bc7e1190038c4f36e4b2'), (275, 'e71e5cd119bbc5797164', 'ea8619473459933a892369c18e30e435aa973545'), (276, '818cdcf067c824a4e34f', '9931967c1a46b82e6f534e885097e04354f41db1'), (277, '331cc28f8747a032890d', 'd6462eee7fe2c5eecf3cf019c9e807f99aa9cf66'), (278, 'a78482ce76496fcf4908', 'b361a327c5cadb7142518c8324edcd9227f41f97'), (279, 'd6c651ddcd97183b2e40', '98342528b574fdcb56460a0d539a47add6b1d040'), (280, '939314105ce8701e6748', '31e1d6413e4cc0ea30937ddb9bb5b31eff99bd4c'), (281, 'aafd8346a677af9db717', '7134d7bfe126ff85950cf42ae7a6d57cd5942f0a'), (282, 'ddb30680a691d157187e', 'ec3da6b30d816558c1a54a901ed87f3c9b9b7adb'), (283, '6a508a60aa3bf9510ea6', '7581f9f7cb4e2c129cf3994be96f620fca5eb4c0'), (284, '0a93091da5efb0d9d564', '98e2d0dde052c9c6ae9de3ce8f5b6a543714b50f'), (285, 'a775361d1fd47a9823a9', '2a2b47bf21a372f267deccbb420567f3d450b3c0'), (286, '9823c9091899dc6f227f', '280332be31b6b91d55d8216650b3ea95ac6c26ee'), (287, '6d3a2d24eb109dddf783', '2499293f66ce5077d3f16bdbd38866eaacfc26ec'), (288, '248e844336797ec98478', 'c60d81f35d8be966fa0437e43f1feff777c6e121'), (289, 'f06048518ff8de203536', '5948d31aa79a3868067f1f20eebb43bf0d51fb39'), (290, '3677481dc67fc92d2347', '31ab76f4d6bf466a0e6935cfc8f323e848dc8a24'), (291, 'aba53da2f6340a8b89dc', '31d4596aaf7504ba33b2b1e75aa1ab1f08180eb3'), (292, '4493f5351e66c44bc875', 'c5f9eb3ff78f50a1061e4c9d8e3348b8b17b5eee'), (293, 'a5fdfa672284da6bf4f4', '6eaeb03ebe3d3a6249901ed4fd3a5f983c72b6ef'), (294, '5553cfaf751a4b14960b', '9419ed22e9bfa624dffba1dde6fbf9f4c71bd158'), (295, '6e69ebbfad976d4637bb', 'eab06fe04deb99232cb1b02d276577f3d78c6a1e'), (296, '36e425d506a15b14cec0', 'e1b95a305499c1b98baea8dde774c774f11d6018'), (297, 'f7ae58c7f1a1cc4abe92', '9302fab196d52aed4090a757f75d34e1beb9d2b1'), (298, '0747b9be4f90056c30eb', '41faf90387f29592b95900ca4af5347bd74442cb'), (299, '0c12278389532e91c601', 'fc27fbae8511b00b820da34fd107d27b11a72855'), (300, '5fd0245f6c9ddbdf3eff', '445cd2fd3273962bdf09425109a2d09f7170e837');
/*!40000 ALTER TABLE `guestbook_test` ENABLE KEYS */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

css cross browser curved corner border

curved-corner-border-radius-cross-browser

code download



สามารถใช้ได้ใน ie6 และ browser ในปัจจุบันเกือบทุกรุ่นครับ

display records multi-columns algorithm by num


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="th" xml:lang="th">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>records multi-columns template</title>
<style type="text/css">
/*<![CDATA[*/
.cell {background-color:#CCCC00;border:solid green 2px;height:100px;width:100px;}
/*]]>*/
</style>
</script>
</head>
<body>

ตารางหลาย column แบบ dynamic มีการปิด tag ที่ถูกต้องแสดงได้ใน dw และผ่าน xhtml valdation
<?php
//ไม่ได้ใช้ database นะครับ แต่สามารถนำไปประยุกต์ใช้กับ database ได้ทันที
//Hint: เปลี่ยน array_pop เป็น mysql_fetch_assoc, $num_rows เปลี่ยนเป็น mysql_num_rows

//ส่วน configuration
$num_rows = 30; //จำลองแถวใน database
$nc = 5; //จำนวน column

//ส่วนสร้างข้อมูลจำลอง ถ้าใช้กับ database จะไม่มีส่วนนี้แต่จะเปลี่ยนเป็นการใช้คำสั่ง mysql_query ฯลฯ
$row = array('ID'=>'1','name'=>'test'); //ข้อมูลจำลอง
$rows = array_fill(0,$num_rows,$row); //สร้างข้อมูลจำลอง จำนวน $num_rows แถว
?>
<?php if ($num_rows > 0):?>
<table border="0">
<?php $i=0; while($r = array_pop($rows)): if($i%$nc==0):?><tr><?php endif;?>
<td>
<div class="cell"><?php echo $r['name'];?><!-- แสดงข้อมูลใน div --></div>
</td>
<?php if($i%$nc==$nc-1):?></tr><?php endif;$i++;endwhile;$i--;if($i%$nc!=$nc-1)echo'</tr>';?>
</table>
<?php else:?>
no any records.
<?php endif;?>

</body>
</html>

วันศุกร์ที่ 22 ตุลาคม พ.ศ. 2553

php format date

<?php
$d = '25530129';
echo preg_replace('|^(\d{4})(\d{2})(\d{2})|','$1-$2-$3',$d);
?>

คำนวณ textbox array แบบอัตโนมัติ


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="th" xml:lang="th">
<head>
<meta http-equiv="content-type" content="text/html; charset=tis-620" />
<title>calculate number</title>
<script type="text/javascript">
//<![CDATA[
window.onload=function(){
var f = document.getElementById('box');
function calA(i){
var d = function (){
var k = f['k[]'][i];
var p = f['p[]'][i];
var a = f['a[]'][i];
k.value = k.value.replace(/[^\d\.]/g,'');
p.value = p.value.replace(/[^\d\.]/g,'');
a.value = (k.value*1) * (p.value*1);
if (a.value <= 0){
a.style.color = 'red';
} else {
a.style.color = 'black';
}
}
return d;
}
for(var i=0;i<f['k[]'].length;i++){
f['k[]'][i].onkeyup = calA(i);
f['p[]'][i].onkeyup = calA(i);
}
}
//]]>
</script>
</head>
<body>


<form method="post" action="?" id="box">
<input type="text" name="a" value="k" disabled="disabled" />
<input type="text" name="p" value="p" disabled="disabled" />
<input type="text" name="k" value="a" disabled="disabled" />
<?php echo '<br'.' />';?>
<?php foreach(range(1,5) as $m):?>
<input type="text" name="k[]" value="" />
<input type="text" name="p[]" value="" />
<input type="text" name="a[]" value="" />
<?php echo '<br'.' />';?>
<?php endforeach;?>
</form>

</body>
</html>

google custom search modify


<div style="overflow:hidden;width:280px;">
<div id="searchForm" style="width: 240px;">Loading</div>
</div>

...........................................
...........................................
...........................................
...........................................

<div style="overflow:hidden;width:715px;">
<div id="cse" style="width: 714px;">Loading</div>

<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
google.load('search', '1', {language : 'th'});
google.setOnLoadCallback(function() {
var customSearchControl = new google.search.CustomSearchControl('xxx:yyyi');
customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);

var searchFormElement = document.getElementById("searchForm");
var drawOptions = new google.search.DrawOptions();
drawOptions.setSearchFormRoot(searchFormElement);

customSearchControl.draw('cse');
customSearchControl.draw('cse',drawOptions);
}, true);
</script>
<link rel="stylesheet" href="css/sitesearch.css" type="text/css" />
<!-- images/btn_search.gif -->
</div>

pager adaptor function by num


<?php
function pager_adaptor($cp/*current page*/,$tp/*total page*/,$show=5){
//ref:http://web-programming-bookmark.blogspot.com/
if ($cp < 1) $cp=1; if ($cp > $tp) $cp=$tp;
$fg = $cp%$show == 0 ? $cp-$show+1 : $cp-$cp%$show+1;
$pat = '<a href="?page=%d" %s>%s</a> ';
$s= sprintf("$pat $pat $pat", 1,'','[First] ', $first_of_group-1,'','&lt;&lt; ', $cp-1,'','&lt; ' );
for($i=$fg; $i<$fg+$show && $i<=$tp; $i++) $s.= sprintf($pat, $i, $i==$cp ? 'style="font-weight:bold;"' : '', $i);
$s.= sprintf("$pat $pat $pat", $cp+1,'','&gt; ', $i,'','&gt;&gt; ', $tp,'','[Last]' ); return $s;
}
?>

<style type="text/css">
.pager a {text-decoration:none;color:navy;}
</style>
<div class="pager"><?php echo pager_adaptor($_GET['page'], 100, 9);?></div>

วันพฤหัสบดีที่ 21 ตุลาคม พ.ศ. 2553

ลิงค์เกี่ยวกับ web programming

web programming

web 2.0

javascript keyboard code

List of Http Headers

สร้าง msn chatbox ภายในเว็บของตัวเอง

create html chatbox

num2thai by dr yes


<?php //number to thai function by Dr.Yes<br>
function num2thai($thb) {
list($thb, $ths) = explode('.', $thb);
$ths = substr($ths.'00', 0, 2);
$thaiNum = array('','หนึ่ง','สอง','สาม','สี่','ห้า','หก','เจ็ด','แปด','เก้า');
$unitBaht = array('บาท','สิบ','ร้อย','พัน','หมื่น','แสน','ล้าน','สิบ','ร้อย','พัน','หมื่น','แสน','ล้าน');
$unitSatang = array('สตางค์','สิบ');
$THB = '';
$j = 0;
for($i=strlen($thb)-1; $i>=0; $i--,$j++) {
$num = $thb[$i];
$tnum = $thaiNum[$num];
$unit = $unitBaht[$j];
switch(true) {
case $j==0 && $num==1 && strlen($thb)>1: $tnum = 'เอ็ด'; break;
case $j==1 && $num==1: $tnum = ''; break;
case $j==1 && $num==2: $tnum = 'ยี่'; break;
case $j==6 && $num==1 && strlen($thb)>7: $tnum = 'เอ็ด'; break;
case $j==7 && $num==1: $tnum = ''; break;
case $j==7 && $num==2: $tnum = 'ยี่'; break;
case $j!=0 && $j!=6 && $num==0: $unit = ''; break;
}
$S = $tnum . $unit;
$THB = $S . $THB;
}
if($ths=='00') {
$THS = 'ถ้วน';
} else {
$j=0;
$THS = '';
for($i=strlen($ths)-1; $i>=0; $i--,$j++) {
$num = $ths[$i];
$tnum = $thaiNum[$num];
$unit = $unitSatang[$j];
switch(true) {
case $j==0 && $num==1 && strlen($ths)>1: $tnum = 'เอ็ด'; break;
case $j==1 && $num==1: $tnum = ''; break;
case $j==1 && $num==2: $tnum = 'ยี่'; break;
case $j!=0 && $j!=6 && $num==0: $unit = ''; break;
}
$S = $tnum . $unit;
$THS = $S . $THS;
}
}
return $THB.$THS;
}
$thb = mt_rand()/100; //random number;
echo number_format($thb,2)."<br>";
echo num2thai($thb);
?>

วันพุธที่ 20 ตุลาคม พ.ศ. 2553

การส่ง e-newsletter (mass email)

การส่งโดยใช้ function mail ให้กับทุกๆ เมล์เป็นวิธีที่ไม่มีประสิทธิภาพ ใช้ส่งผ่านทาง bcc
แทนจะประหยัดทรัพยาการ mail server มากกว่าครับ
sending mass email

วันอังคารที่ 19 ตุลาคม พ.ศ. 2553

php tutorial 1

คนที่จะเขียน php ได้จะต้องมีความรู้เกี่ยวกับ html, xhtml, css, javascript เป็นอย่างดีด้วยครับ ถึงจะเขียนเว็บได้ตรงกับที่ตั้งใจไว้

เราจะต้องติดตั้งเว็บ server อย่างเช่น apache http server หรือ iis http server ก่อนครับ

<?php echo 'Hello World';?>

ไล่สีโดยใช้ css cross browser gradient

ไล่สีโดยใช้ css สามารถใช้ได้ในเกือบทุกเบราเซอร์
cross browser gradient

วันจันทร์ที่ 18 ตุลาคม พ.ศ. 2553

xhtml template


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="th" xml:lang="th">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>xhtml template</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
//<![CDATA[
var baseUrl = '/cakephp/';
//]]>
</script>
</head>
<body>

<form name="form1" method="post" action="" enctype="multipart/form-data">
<select name="product_category">
<option value="" selected="selected">--please select--</option>
<option value="1">cat1</option>
<option value="1">cat2</option>
</select><br/>
<img alt="test image" src="http://www.google.co.th/images/srpr/nav_logo14.png"/><br/>
<input type="checkbox" name="show" value="1" checked="checked"/><br/>
<input type="text" name="detail_1" value="" /><br/>
<input type="text" name="detail_2" value="" readonly="readonly" /><br/>
<input type="submit" name="submit_button" value="send" />
</form>

</body>
</html>

function สำหรับคนที่ใช้ iconv ไม่ได้

convert-utf-8-to-tis-620-in-php
convert-tis-620-to-utf-8-in-php

ปรับค่าให้ php upload ได้มากกว่า 2M

แก้ไข php.ini
post_max_size = 20M
upload_max_filesize = 20M
memory_limit = 256M

HttpContext.Current.Request.ServerVariables

ALL_HTTP = HTTP_CACHE_CONTROL:max-age=0
HTTP_CONNECTION:keep-alive
HTTP_KEEP_ALIVE:115
HTTP_ACCEPT:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_CHARSET:ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP_ACCEPT_ENCODING:gzip,deflate
HTTP_ACCEPT_LANGUAGE:th-th,th;q=0.8,en-us;q=0.6,en-gb;q=0.4,en;q=0.2
HTTP_COOKIE:style_cookie=null; phpbb3_bfx5i_k=ef67ed3824969078; phpbb3_bfx5i_u=2; phpbb3_bfx5i_sid=93f956fa132b539a72e3b2f6c16a8336; ASP.NET_SessionId=fx154u555qmaitboddzdpqbr
HTTP_HOST:localhost:25789
HTTP_USER_AGENT:Mozilla/5.0 (Windows; U; Windows NT 5.1; th; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 ( .NET CLR 3.5.30729)

ALL_RAW = Cache-Control: max-age=0
Connection: keep-alive
Keep-Alive: 115
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Encoding: gzip,deflate
Accept-Language: th-th,th;q=0.8,en-us;q=0.6,en-gb;q=0.4,en;q=0.2
Cookie: style_cookie=null; phpbb3_bfx5i_k=ef67ed3824969078; phpbb3_bfx5i_u=2; phpbb3_bfx5i_sid=93f956fa132b539a72e3b2f6c16a8336; ASP.NET_SessionId=fx154u555qmaitboddzdpqbr
Host: localhost:25789
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; th; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 ( .NET CLR 3.5.30729)

APPL_MD_PATH =
APPL_PHYSICAL_PATH = C:\bts\
AUTH_TYPE = NTLM
AUTH_USER = NUM3\xplan2008
AUTH_PASSWORD =
LOGON_USER = NUM3\xplan2008
REMOTE_USER = NUM3\xplan2008
CERT_COOKIE =
CERT_FLAGS =
CERT_ISSUER =
CERT_KEYSIZE =
CERT_SECRETKEYSIZE =
CERT_SERIALNUMBER =
CERT_SERVER_ISSUER =
CERT_SERVER_SUBJECT =
CERT_SUBJECT =
CONTENT_LENGTH = 0
CONTENT_TYPE =
GATEWAY_INTERFACE =
HTTPS =
HTTPS_KEYSIZE =
HTTPS_SECRETKEYSIZE =
HTTPS_SERVER_ISSUER =
HTTPS_SERVER_SUBJECT =
INSTANCE_ID =
INSTANCE_META_PATH =
LOCAL_ADDR = 127.0.0.1
PATH_INFO = /bts/_admin/index.aspx
PATH_TRANSLATED = C:\bts\_admin\index.aspx
QUERY_STRING =
REMOTE_ADDR = 127.0.0.1
REMOTE_HOST = 127.0.0.1
REMOTE_PORT =
REQUEST_METHOD = GET
SCRIPT_NAME = /bts/_admin/index.aspx
SERVER_NAME = localhost
SERVER_PORT = 25789
SERVER_PORT_SECURE = 0
SERVER_PROTOCOL = HTTP/1.1
SERVER_SOFTWARE =
URL = /bts/_admin/index.aspx
HTTP_CACHE_CONTROL = max-age=0
HTTP_CONNECTION = keep-alive
HTTP_KEEP_ALIVE = 115
HTTP_ACCEPT = text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_CHARSET = ISO-8859-1,utf-8;q=0.7,*;q=0.7
HTTP_ACCEPT_ENCODING = gzip,deflate
HTTP_ACCEPT_LANGUAGE = th-th,th;q=0.8,en-us;q=0.6,en-gb;q=0.4,en;q=0.2
HTTP_COOKIE = style_cookie=null; phpbb3_bfx5i_k=ef67ed3824969078; phpbb3_bfx5i_u=2; phpbb3_bfx5i_sid=93f956fa132b539a72e3b2f6c16a8336; ASP.NET_SessionId=fx154u555qmaitboddzdpqbr
HTTP_HOST = localhost:25789
HTTP_USER_AGENT = Mozilla/5.0 (Windows; U; Windows NT 5.1; th; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 ( .NET CLR 3.5.30729)

โค้ดแบ่งช่วงอายุ โดยใช้ mysql calculate age range query


CREATE TABLE `user_profiles` (
`id` int(11) NOT NULL auto_increment,
`nm` varchar(50) NOT NULL,
`bd` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;



select

count(*) as age_count,
group_concat(nm) as names,
current_date,
bd,
year( current_date ) - year( bd ) + if( date_format( current_date, '%m%d' ) > date_format( bd, '%m%d' ) , 0, -1 ) AS age

from user_profiles

group by
year( current_date ) - year( bd ) + if( date_format( current_date, '%m%d' ) > date_format( bd, '%m%d' ) , 0, -1 )



SELECT

group_concat( NAMES ) AS age_range_names,
sum( age_count ) AS age_range_count,
if( age >=60, 'more than 60', if( age >=50, '50-59', if( age >=40, '40-49', 'less than 40' ) ) ) AS age_range_count

FROM

(SELECT
count( * ) AS age_count,
group_concat( nm ) AS NAMES ,
current_date,
bd,
year( current_date ) - year( bd ) + if( date_format( current_date, '%m%d' ) > date_format( bd, '%m%d' ) , 0, -1 ) AS age
FROM user_profiles
GROUP BY
year( current_date ) - year( bd ) + if( date_format( current_date, '%m%d' ) > date_format( bd, '%m%d' ) , 0, -1 )
) AS user_ages

GROUP BY if( age >=60, 'C6', if( age >=50, 'C5', if( age >=40, 'C4', 'C3' ) ) )

วันเสาร์ที่ 16 ตุลาคม พ.ศ. 2553

วันศุกร์ที่ 15 ตุลาคม พ.ศ. 2553

php column group table


<?php
include_once("config.inc.php");
//โค้ดส่วนนี้ควรจะรวมไว้ใน config.inc.php
$conn = mysql_connect($hostname,$username,$password) ;
mysql_query("SET NAMES UTF8");///**
if ( ! $conn )
die ( "ไม่สามารถติดต่อกับ MySQL ได้" );
mysql_select_db ( $dbname, $conn )
or die ( "ไม่สามารถเลือกฐานข้อมูล ได้" );
?>
<?php
$sql = "SELECT supdata.namecompany, product.product FROM supdata,product ORDER BY namecompany";
$r = mysql_db_query($dbname, $sql);
$num_rows = mysql_num_rows($r);
$i = 0;
$cp = array();
while ($i < $num_rows){ //build group data
$row = mysql_fetch_assoc($r);
$name = $row["namecompany"];
if (!isset($cp[$name]))
$cp[$name] = array();
$cp[$name][] = $row;
$i++;
}
?>
<table width="818" height="61" border="1">
<tr>
<th height="55"> บริษัท </th>
<th> product </th>
</tr>
<?php foreach($cp as $key=>$company):?>
<tr>
<td>
<?php echo $key;?>
</td>
<td>
<?php foreach($company as $sub):?>
<?php echo $sub['product'].nl2br("\n");?>
<?php endforeach;?>
</td>
<td><a href="edit.php?ids=<?php echo 'some_id' //ตรงนี้ยังไม่ทราบว่าคือข้อมูลอะไร?>">ดู</a></td>
</tr>
<?php endforeach;?>
</table>

ความรู้เกี่ยวกับ json

  1. json เอาไว้ใช้แปลงข้อมูลไปมาระหว่างภาษาน่ะ
    มันเป็นข้อมูลที่อยู่ในรูปแบบ javascript object notation ซึ่งในภาษาต่างๆ สร้างคำสั่งสำหรับแปลง json
    ให้อยู่ในรูปแบบโครงสร้างข้อมูลในภาษานั้นๆได้โดยตรง เลยอย่างเช่น array, object, string ฯลฯ
    แต่ถ้า xml จะเป็น tag ธรรมดาๆ ซึ่งไม่มีความเกี่ยวข้องกับโครงสร้างข้อมูลในภาษาต่างๆ อย่าง array หรือ object เลย
    เวลาใช้ก็เลยต้องไล่ parse tag xml จากนั้นค่อยนำมาแปลงกลับเป็น array หรือ object
    ซึ่งถ้าไม่นับรวมการใช้ xml มาใช้ในการจัดเก็บข้อมูลซึ่ง xml มีโครงสร้างเหมือนฐานข้อมูลมากกว่าทำให้ง่ายในการ search
    ในการแลกเปลี่ยนข้อมูลระหว่างภาษา อย่างเช่น javascript และ php, xml จะใช้ยากกว่า json ครับ
    เรื่องนิยามและรายละเอียดต่างๆ อ่านที่ เว็บไซท์ json.org ละกันครับ :)

    เนื่องจากมันเป็น string ธรรมดาๆ ทำให้สามารถนำตัวแปร แปลงเป็น json แล้วเก็บใน text file ได้เลยง่ายต่อการใช้อย่างมากเช่น

    file_put_contents('test.txt',json_encode(array('test','test2')));

    เวลาจะเอาตัวแปรมาใช้ก็

    $array = json_decode(file_get_contents('test.txt'));

    ซึ่งจะดีกว่า serailize() ของ php ตรงที่ test.txt นี่เป็นข้อมูลที่สามารถแปลงเป็นโครงสร้างข้อมูลในภาษาอื่นๆ ได้เกือบทุกภาษา :D


  2. ใน json ถึงแม้ว่าพอจะทำให้เป็น ansi หรือ tis620 ได้แต่ก็ไม่นิยมทำกันจะทำให้เป็น utf8 มากกว่าครับ
    ดังนั้นในการแปลงข้อมูลภาษาไทยจะต้องแปลงให้เป็น utf8 ก่อนครับ
    แง่บๆ พูดถึงในการแปลงข้อมูลใน php เป็น json นะแต่ใน javascript รูปแบบการจัดเก็บไม่รู้เป็นเป็น utf8 utf16 หรืออะไรก็ไม่รู้

    echo json_encode(array('ภาษาไทย','test2'));

    เวลา save ไฟล์โค้ด php นี้จะต้องเซฟเป็น utf8 ครับ
    แต่ถ้าเซฟไฟล์ php นี้เป็น ansi ก็จะต้องแปลงข้อมูลก่อนเช่น

    echo json_encode(array(iconv('TIS-620','UTF-8','ภาษาไทย'),'test2'));



  3. ในการใช้กับ ajax ก็ควรจะระบุ header เป็น utf8 ด้วยครับ :D

    <?php
    header('Content-type:application/json;charset=utf-8');
    echo json_encode(array('ภาษาไทย','test2'));

    สำหรับฝั่ง javascript สมมุติได้รับข้อมูลมาจากการ request ajax แล้วก็ให้ทำการ eval ตัวแปรครับ

    eval('var data = '+responseText+';');

    ก็จะได้ข้อมูลมาใช้งานครับ alert(data[0]+','+data[1]);
    พอดี javascript , json เป็นโครงสร้างข้อมูลของภาษาโดยตรงเลยใช้ eval ได้เลยครับ
    ถ้าเป็นภาษาอื่นๆ จะมี function decode json string อีกทีหนึ่งครับ

    ถึงแม้ว่าตอนเริ่มต้นข้อมูลของเราจะเป็น utf8 แต่เราสามารถใช้ข้อมูลที่ได้รับจาก php
    ในไฟล์ html ที่เป็น tis620 หรือ windows874 ได้ครับ เนื่องจากการข้อมูลที่ได้รับเมื่อมาอยู่ในรูป javascript
    จะถูก browser แปลง encoding ให้ตาม encoding ของหน้านั้นโดยอัตโนมัติครับ
    ตัวอย่างเช่นหน้าที่ระบุ charset โดยใช้
    <meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
    ก็ใช้ข้อมูลจาก

    <?php
    header('Content-type:application/json;charset=utf-8');
    echo json_encode(array('ภาษาไทย','test2'));

    ได้เลย โดยไม่ต้องแปลง encoding ครับ


  4. serialize() ใน jquery จะดึงเอาข้อมูลใน form ให้อยู่ในรูปแบบ input1=1&input2=2&input3=3 ครับ

    $.ajax({
    type: 'get',
    url: 'test.php',
    data: $('#formid').serialize()
    });
    //$('#formid').serialize() ก็คือข้อมูล input1=1&input2=2&input3=3 ครับ


    ใน key data ของคำสั่งยังสามารถส่งค่าเป็น object ได้ด้วยครับ

    $.ajax({
    type: 'get',
    url: 'test.php',
    data: {input1:1,input2:2,input3:3}
    });

    data: ซึ่งตรงนี้ {input1:1,input2:2,input3:3} ซึ่งเป็นผลลัพธ์ก็จะถูกแปลงเป็น input1=1&input2=2&input3=3 อีกทีหนึ่งครับ

    สำหรับ jquery จะมีคำสั่งในการแปลง json string จาก server มาเป็นโครงสร้างข้อมูล javascript ครับ (รู้สึกจะใช้ eval)

    $.ajax({
    url:'test.php',
    type:'GET',
    dataType:'json',
    success:function(e){
    alert(e[0]+','+e[1]); //ข้อมูล json ถูกแปลงเป็นโครงสร้างข้อมูลใน javascript แล้ว
    }
    });

    แต่ในการแปลงข้อมูลให้อยู่ในรูปแบบ json เพื่อส่งไปยัง server ตรง jquery ยังไม่มีคำสั่งนี้ครับ
    แต่ก็มีคนสร้าง jquery plugin สำหรับแปลงโครงสร้างข้อมูล javascript ไปเป็น json string ไว้แล้วครับ



อ่านเพิ่มเติมได้ที่
http://www.thaicreate.com/php/forum/032712.html

array_chunk


<?php

$sumAll = array(
0 => 0.25,
1 => 0.25,
2 => 0.36363636,
3 => 0.36363636,
4 => 0.5,
5 => 0.375,
6 => 0.71428571,
7 => 0.57142857,
);
$sumAll2 = array_chunk($sumAll,4);
$result = array();
foreach($sumAll2 as $four){
$t = 1; foreach($four as $one) $t *= $one; $result[] = $t;
}
echo '<pre>'; print_r($result); echo '</pre>';

?>

asp.net 3.5

เราไม่พบ dropdownlist asp.net 3.5 ใน iis เพราะ 3.5 เป็นตัวขยายของ 2.0 นั่นเอง

The reason being .NET 3.5 is not a stand alone framework like v2.0 or v1.1 . It is just an extension of the 2.0 framework

วันพฤหัสบดีที่ 14 ตุลาคม พ.ศ. 2553

asp.net error

Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.

Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off".

เกิดจากการตั้งค่า default ไม่ให้แสดง error กับเครื่อง remote (เครื่องๆ อื่นที่ไม่ใช่เครื่องที่ไม่ใช่เครื่องที่กำลัง run ไฟล์ asp.net)

แก้ไขโดยแทรก
<customErrors mode="Off" >
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>

ลงใน <system.web></system.web>



"The network BIOS command limit has been reached" error message in Windows Server 2003, in Windows XP, and in Windows 2000 Server"

แก้ไขโดย
ใส่ค่า MaxCmds มากๆ ที่
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters
และใส่ค่า MaxMpxCt มากๆ ที่
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver

แก้ไขค่า FCNMode เป็น 1 ที่
HKLM\Software\Microsoft\ASP.NET\FCNMode
edit FCNMode

จัดรูปแบบให้กับ string ใน .net

จัดรูปแบบให้กับ string โดยใช้ String.Format

การย้ายดาต้าเบส mssql server ไปยัง mssql server เครื่องอื่น (transfer database)

คลิ้กขวาที่ชื่อ database ใน object explorer
เลือกเมนู Tasks > Copy Database..

น่าเสียดายยังไม่มีใน sql server 2005 มีใช้ใน 2008 เท่านั้น

ถ้าใช้ตัว import export data จะย้ายได้เฉพาะฟิลด์ข้อมูลและ
ข้อมูลแต่คุณสมบัติอย่างเช่น identity(1,1) ไม่สามารถกำหนดให้กับ table ได้ ต้องมาตั้งใหม่ทีละอัน..

รวมคำศัพท์ภาษาอังกฤษ vocaburaly table

เป็นคำศัพท์ภาษาอังกฤษที่ผมรวบรวมในตอนที่อ่าน ebook แล้วก็ manual + ดูหนัง sub eng ต่างๆ น่ะครับ
ส่วนใหญ่จะนำมาจาก ฐานข้อมูลพจนานุกรม lexitron หรือไม่ก็ http://dict.longdo.com/

..................................
excerpt - ข้อความที่ตัดตอนมา ย่อหน้า
covey - กลุ่ม ฝูง
denote - แสดงถึง
opportunity - โอกาสที่ดี
propriety - ความเหมาะสม
curtain - ผ้าม่าน
lamp - ตะเกียง
verify - ยืนยันความถูกต้อง
vacuum - สุญญากาศ
tremendous - ใหญ่โตมาก
sufficiency - ความพอเพียง
acknowledgment - การยอมรับ
actuate - กระตุ้นให้ทำ
exceed - เกินกว่า มากกว่า
comprehensive - ครอบคลุม
attemp - พยายาม
either - เช่นกัน, อย่างใดอย่างหนึ่งในจำนวนสอง
intensive - เข้มข้น, ละเอียดถี่ถ้วน
intrude - บุกรุก
precede - อยู่หน้า, นำหน้า, นำ, มีมาก่อน
incorporate - รวมเข้าด้วยกัน
audience - ผู้ชม
fetter - ผูกมัด
unlike - แตกต่างจาก
adequate - เพียงพอ,เหมาะสม, สามารถพอที่จะทำได้
accomplish - ทำสำเร็จ, บรรลุผล
accord - สอดคล้อง
adjacent - ใกล้ชิด, ติดต่อกัน
anticipate - คาด, มุ่งหวัง, ทำนาย
approximate - ประมาณ, ใกล้เคียง
aspect - ลักษณะ, รูปการ, ด้านของปัญหา
attention - การเอาใจใส่,ความสนใจ, การพิจารณา
base on - ยึดถือ
beyond - พ้น ไกลจาก
bother - รบกวน,รบกวนจิตใจ
burden - ภาระ, ทำให้ยุ่งยาก
circumstance - สถานการณ์
collision - การปะทะกัน, ความขัดแย้ง
complementary - ประกอบ, ซึ่งทำให้ครบ
compromise - การประนีประนอม
hence - เพราะฉะนั้น
hire - การเช่า,การว่าจ้าง
implication - สิ่งที่เกี่ยวข้อง
incur - ก่อให้เกิด ทำให้เกิด
inquire - ถามหา,ไต่ถาม,สอบถาม
instance - กรณี, ตัวอย่าง
integrity - ความมั่นคง เป็นอันหนึ่งอันเดียวกัน
intervene - แทรกแซง ก้าวก่าย
invent - ประดิษฐ์
investigate - สำรวจ, สืบสวน, สอบสวน
issue - สิ่งที่ปล่อยออกมา, สิ่งตีพิมพ์, ชุด, ปัญหา
likely - เป็นไปได้ น่าจะเป็นไปได้
matter - สาระ
conjunction - สันธานเช่น and or, การชุมนุมกัน
convenient - สะดวก
mandatory - เกี่ยวกับคำสั่ง, ข้อบังคับ
measure - วัด, หาค่า, ประมาณ, กะ, ประเมิน
mention - กล่าวถึง, อ้างอิงถึง
notice - ข่าวสาร ข้อความเตือน
concentrate - รวมพลัง, เพ่งสมาธิ
concern - เกี่ยวกับ, กังวลเกี่ยวกับ
convince - ทำให้เชื่อมั่น, ทำให้มั่นใจ
cushion - หมอนพิง
delegate - ตัวแทน, ผู้แทน, แต่งตั้งตัวแทน
derive - ได้มาจาก
distribution - การแจก, การเผยแพร่
due to - เนื่องจาก
enable - ทำให้สามารถ
enforce - ทำให้ปฎิบัติตาม
essential - ซึ่งเป็นส่วนประกอบสำคัญ
foreign - ต่างประเทศ, ต่างชาติ
graceful - สวยงาม
notify - แจ้ง, ประกาศ, บอกให้ทราบ
observe - สังเกต
obvious - ชัดเจน, เข้าใจได้ง่าย
omit - ละเว้น
particular - โดยเฉพาะ, จำเพาะเจาะจง
purpose - วัตถุประสงค์
via - โดยทาง โดยเส้นทาง
worth - มีคุณค่า, ประโยชน์, ราคา
respect - ลักษณะ, ประเด็น, ความเคารพ, สัมพันธ์กับ
tear down - ถอดออกเป็นชิ้น ๆ
accommodate - จัดให้เหมาะ, ทำให้เข้ากับ
discipline - ทำให้มีวินัย
evident - ชัดแจ้ง
prominent - สะดุดตา
effort - ความพยายาม, อุตสาหะ
credential - หนังสือรับรอง, หลักฐานอ้างอิง
awesome - ยอดเยี่ยม, สุดยอด
impact - การอัด, การกระทบ, ผลกระทบ
narrative - เรื่องเล่า, การบรรยาย
rely on - ไว้ใจใน, ขึ้นอยู่กับ
insight - การเข้าใจอย่าถ่องแท้, ความเข้าใจที่ชัดเจน
pending - ซึ่งยังไม่จข, ยังไม่เสร็จสิ้น (ตรงข้าม complete)
sniff - สงสัย, ข้อสงสัย
erratic - ไม่แน่ไม่นอน
yield - ให้ผลผลิต
elegant - สวยงาม
negligible - ซึ่งไม่สำคัญ
consolidate - รวมเป็นหนึ่ง
curry - เครื่องแกง
nifty - เชี่ยวชาญ
solely - โดยลำพัง
bridge - เชื่อม
crucial - สำคัญมาก
mere - เพียงเท่านั้น
respective - ซึ่งเกี่ยวข้องกับแต่ละ~
adhere - ยึดมั่น
precious - ล้ำค่า, อันเป็นที่รัก
favor - ความช่วยเหลือ
with pleasure - ด้วยความยินดี
urgent - เร่งด่วน
agent - ตัวแทน
fasten - ผูก
traveler courier - มัคคุเทศหัวหน้ากลุ่มทัวร์
regard - ความเอาใจใส่, ปรารถนาดี
neglect - ไม่สนใจ, พลาด (เพราะประมาท หรือ เลินเล่อ)
pretend - แกล้งทำว่าเป็นจริง
amateur - สมัครเล่น
guidance - การแนะแนว
pitiful - น่าสงสาร
respect - เอาใจใส่,เคารพ
figure out - คำนวณ, หาคำตอบ
...., right? - ใช่ป่ะ (สำนวน)
pay attention to - เอาใจใส่ต่อ (สำนวน)
dedicate - อุทิศ
why does it have to be me?
you are the only one we have.
interfere - ก้าวก่าย
what kind of a person is he?
personality - บุคลิก
fond - สิ่งที่รัก
so do i (สำนวน)
married - แมริดึ
just - เพียงแค่
aunts - ป้า, น้ำสาว
cousin - ลูกพี่ลูกน้อง
none - ไม่มี
nephew - หลานชาย
backyard - สวนหลังบ้าน
antonym - คำที่มีความหมายตรงข้าม
go to bed == go to sleep
mean - หมายความว่า
terrestrial - เกี่ยวกับโลก, คนที่อาศัยบนโลก
it's none of your business - ไม่ใช่ธุระของคุณ
in ชื่อประเทศ
no longer - ไม่อีกต่อไป
stay - อยู่, ใช้แทน is, am, are ฯลฯ
southern - ทางใต้ , adj.
plot - เค้าโครงเรื่อง, ที่ดินแปลงเล็ก, วางแผน
to be used to - ถูกใช้เพื่อ
used to - เคย (และได้เลิกกระทำไปแล้ว)
contract - การสัญญา, ย่อ
a few - น้อย; few น้อยมาก
I hope so - หวังว่าเป็นอย่างนั้น (สำนวน)
sweet - ใจดี
narrator - ผู้บรรยาย
probably - น่าจะเป็นไปได้ , adv.
scary - น่าตกใจ
herb อ่านว่า เอิบบึ
plump - ท้วม
ultimately - ท้ายทีสุด
revolution - การปฏิวัติ
cohesive - ซึ่งติดกัน
daunt - ทำให้กลัว
challenge - การท้าทาย, เรียกร้อง, กระตุ้น
furthermore - นอกจากนี้
threaten - คุกคาม
discipline - การฝึกฝน, ข้อบังคับ
obsolete - ล้าสมัย
establish - แสดงให้เห็นว่า..
consequently - ดังนั้น
gravitate - ดูดเข้าหากัน
away - ไปที่อื่น, ไปทิศทางอื่น , adv.
artifact - สิ่งที่ประดิษฐ์ขึ้น
tendency - แนวโน้ม
mature - เติบโต , adj.
behind - ข้างหลัง, ล้าหลัง, สนับสนุน
industry - อุตสาหกรรม
proven - ผ่านการพิสูจน์ ***
client - ลูกค้า
standardize - ทำให้เป็นมาตรฐาน [ize$ = ทำให้เป็น]
combine - การรวมกัน
controversy - การโต้เถียงกัน
proposal - ข้อเสนอ
transmit - ถ่ายทอด, ส่ง
constraint - บังคับ, จำกัด
particular - โดยเฉพาะ
neighbor - เพื่อนบ้าน
suppose - สมมติว่า
regardless - โดยไม่คำนึงถึง
particularly - โดยเฉพาะอย่างยิ่ง
fair ปาณกลาง
decay - เสื่อมลง
nifty - เชี่ยวชาญ
propagation - การแพร่ข่าว
seldom - แทบจะไม่
methodology - วิธีการ
populate - อาศัยอยู่ ***
conform - ทำให้เหมือนหรือคล้ายกัน
convey - ขนส่ง, ถ่ายทอด, แสดงถึง
impose - กำหนด
narrative - เรื่องเล่า, คำบรรยาย
resource - ทรัพยากร
diverse - ประกอบไปด้วยหลายอย่าง ***
demand - ความต้องการ
contribute - มีส่วนทำให้,ทำให้ ***
contributor - การบริจาค, ผู้ช่วยเหลือ
upcomming - ซึ่งกำลังจะเกิดขึ้น
revision - การปรับปรุงใหม่
merit - คุณความดี, ข้อดี, ควรจะได้รับ **
circular - ซึ่งเป็นวงกลม, ไม่ตรง
diversity - ความหลากหลาย
adopt - เลือกใช้, รับเอา
bare - เปลือยเปล่า, เผยให้เห็น...
the rest - ส่วนที่เหลือ, การพักผ่อน
brief - โดยย่อ
represent - แสดงให้เห็น, เป็นสัญลักษณ์ของ
summary - ใจความสรุป
point out - มุ่งไปที่
influence - มีอิทธิพลต่อ
inherent - ซึ่งมีอยู่เป็นปกติ, โดยธรรมชาติ
blend - ผสม
predecessor - บรรพบุรุษ
proprietary - เป็นผู้ครอบครอง
hallmark - ตรารับรองมาตรฐาน
term - ภาคเรียน, คำศัพท์
detect - ค้นหา
pass - ส่งต่อไป, สอบผ่าน, อนุมัติ
the historical problem of.. - ปัญหา..ที่เคยเกิดขึ้นมาก่อน
stretch - ขยายออก, ยืดหยุ่น
assess - ประเมิน
inventory - รายการสิ่งของ, รายการคลัง
glossary อภิธานศัพท์
unify - รวมเป็นหน่วยเดียวกัน
role - บทบาท บทละคร
participant - ผู้มีส่วนร่วม
pleasant - น่ายินดี
inception - การก่อตั้ง
assemble - ประกอบเอามารวมกัน
gather ชุมนุม, นำมารวม, รวบรวม
endeavor - ความพยายาม
realistic - ปฎิบัติได้จริง
perceive - รับรู้
exploit - เอาเปรียบ, หาประโยชน์
obstacle - อุปสรรค
perception - แนวความคิด, ความเข้าใจ
document - บันทึกข้อมูลใส่กระดาษ, เทปฯลฯ, ใช้เอกสาร
statement - แถลงการณ์, ข้อความ, ถ้อยความ
prove - พิสูจน์
trade off - การแลกเปลี่ยน
likely - ดูดี, เป็นไปได้, เหมาะสม
rigorous - อย่างเข้มงวด
fabulous - ยอดเยี่ยม
emerge - เป็นที่รู้จัก, ปรากฎออกมา
exhaustive - ละเอียดถี่ถ้วน
robust - แข็งแรง, ทนทาน
diminish - ทำให้ลดลง
neat - เรียบร้อย เหมาะสม เพียวๆ
marginally - อย่างมีขอบเขต
paradigm - กรอบ, แบบจำลอง, ตัวอย่าง
largely - โดยส่วนมาก
frankly - อย่างตรงไปตรงมา
cohesive - ติดกัน,สัมพันธ์กัน
territory - อาณาเขต, แนวความคิด
take a step backward - เดินถอยหลัง
nutshell - เปลือกถั่ว, ผลไม้เปลือกแข็ง
in a nutshell - ในรูปแบบสรุป
arena - สนามกีฬา, เวที, สถานที่จัดงาน
thorough - ละเอียด ถี่ถ้วน
get off the ground - เริ่มต้น
session - การประชุม, ภาคการศึกษา, วาระ
critical - วิกฤต, ซึ่งมีผลกระทบต่อความมั่นคง, ซึ่งสำคัญมาก
incoming - ที่ใกล้เข้ามา, ที่เข้ามา
shipment - การขนส่งสินค้าทางเรือ, จำนวนสินค้าที่ส่งทางเรือ
look up - ค้นหา
the right ... - ... ที่ถูกต้อง
supervisor - ผู้ควบคุมดูแล
department - แผนก
fulfillment - การทำให้บรรลุผล, การทำให้เสร็จสมบูรณ์
staff - คณะผู้ทำงาน, เจ้าหน้าที่
arrange - จัดเตรียม
notify - บอกข้อมูล, ให้ข้อมูล
in order to - เพื่อ, เพือที่จะ
proportion - สัดส่วน, ทำให้ได้สัดส่วน
quantify - แสดงปริมาณ, บอกจำนวน
practice - ฝึกซ้อม, วิธีปฎิบัติ
incorpolate - รวมเข้าด้วยกัน
underlying - ที่สำคัญ
substantially - เป็นชิ้นเป็นอัน, เป็นเรื่องเป็นราว
hindrance - เครื่องกีดขวาง
domain - อาณาเขต, ขอบเขตของสิ่งที่กำลังสนใจ
principle - องประกอบที่สำคัญ
dictate - ควบคุม, บงการ, บอกให้เขียนตาม
warehouse - โกดังสินค้า
massive - ใหญ่โต
budget - งบประมาณ
overcome - เอาชนะ, ปกคลุม
mandate - กฎหมาย, ข้อบังคับ
approval - การอนุมัติ
meantime - เวลาในระหว่างนั้น
directive - คำสั่ง
tend - โน้มเอียง
prescribe - แนะนำ
arrival - การมาถึง
outcome - ผล
straightforward - ตรงไปตรงมา, ง่ายๆ, โดยตรง
threaten - คุกคาม
pain - ความเจ็บปวด, ความทุกข์, ความเสียใจ ,+ สำนวนคือตัวปัญหา
bunch - กลุ่ม, ก้อน
rumor - ข่าวลือ
fate - โชคชะตา ผลลัพธ์
abominable - เลวทรามต่ำช้า
speak - พูด, กล่าว
eternity - ตลอดไป
cautious - รอบคอบ, ระมัดระวัง
apparently - ชัดเจน
trust - เชื่อใจ
territory - อาณาเขต
expand - ทำการขยาย
inevitable - หลีกเลี่ยงไม่ได้
superior - เหนือกว่า
rival - คู่แข่งมีความสามารถทัดเทียมกัน
fame - ชื่อเสี่ยง (คำนาม)
truce - การสงบศึก
oppose - ต่อต้าน
bent - แน่วแน่
valley - หุบเขา
military - ทหาร
surveillance - การตรวจตรา
rebel - ผู้ต่อต้าน
supremacy - อำนาจระดับสุง
suspect - สงสัยว่า..
suspicious - หวาดระแวง, น่าสงสัย
revenge - แก้แค้น
eventually - ในที่สุด
surpass - เกินกว่า
repository - โกดัง, ที่เก็บ
whilst - ขณะที่ (คำเชื่อม)
channel - มุ่งไปยัง, ขุดเป็นร่อง
anticipate - คาดหวัง, เตรียมป้องกันล่วงหน้า
dispatch - การส่งสิ่งของ
destiny - ชะตากรรม
disposal - กระบวนการกำจัดสิ่งของ
potential - ที่อาจเกิดขึ้นได้, ศักยภาพที่จะพัฒนาได้
aspire - มีความต้องการ
endow - บริจาค
versatility - ความสามารถหลายด้าน
constructive - ที่เกี่ยวกับโครงสร้าง, ที่ช่วยให้พัฒนาขึ้น
adaptable - ปรับตัวได้
cling - ทำให้ติดแน่น
rebellion - การก่อกบฎ
enlightenment- การตรัสรู้
broaden - ขยับขยาย
appreciation - ความซาบซึ้ง
administer - จัดการ ดูแล
settle - ตัดสินใจ, เข้ามาอาศัย
flux - การไหล, การเปลี่ยนแปลงอย่างต่อเนื่อง
tendency - แนวโน้ม
glib - คล่องแคล่ว
excel - ดีเยี่ยม, เก่ง
diplomacy - การฑูต
ambition - ความทะเยอทะยาน
sympathetic - เห็นอกเห็นใจ
tolerant - ยอมรับฟังความคิดเห็น, มีความอดทน
compassion - ความเห็นใจ
benevolent - กุศล
inspire - ดลใจ
artistic - เกี่ยวกับศิลปะ
latent - ซ่อนเร้น
involvement - ความเกี่ยวข้อง
asset - สิ่งที่มีคุณค่า, สมบัติ
litter - ทิ้งของเรี่ยราด
singleton - คนหรือสิ่งที่มีเพียงสิ่งเดียว
advisable - เป็นสิ่งที่คู่ควร
comprise - ประกอบด้วย, รวมถึง
landing - การเทียบท่า, ท่าเรือ
scene - เหตุการณ์
suspicious - น่าสงสัย
esoteric - ยากที่จะเข้าใจ
bogus - ไม่แท้
consistent - ที่สอดคล้องกัน
inject - ใส่เข้าไป
placeholder กรอบที่ว่างสำหรับข้อความ รูปภาพ ฯลฯ
site-width - ในขอบเขตที่ใช้กับทั้ง site
further - ซึ่งเพิ่มเข้ามา, มากขึ้น
dictate - ควบคุม, กำกับ
encompass ร้อมลอบ, รวมเข้าไว้ทั้งหมด
prune - ตัดออก, ทำให้ลดลง
transport - ขนย้าย, ขนส่ง
other (1) than (2) - (1) นอกจาก (2)
distinct - แตกต่างชัดเจน
spawn - วางไข่
agenda - กำหนดการ
commit - มอบหมายให้, ให้คำมั่นสัญญา
locate - หาที่ตั้ง
pioneer - นักบุกเบิก, สำรวจ
enterprise - ความกล้าได้กล้าเสีย, โครงการที่เสี่ยง, บริษัท
clue - บอกเป็นนัยๆ ร่องรอย
vice versa - ในทางกลับกัน
marshal - จัดให้เหมาะสมแก่การจัดเก็บ,การขนส่ง
flavor - รสชาติ,กลิ่น,ลักษณะเฉพาะตัว
trade off - การแลกเปลี่ยนสิ่งของ
fade - เลื่อน
investor - นักลงทุน
take away - เอามาจาก,เอาออกจาก
empower - ให้อำนาจ
momentum - แรงผลักดัน
payload - น้ำหนักบรรทุกที่ให้รายได้
trail - ร่องรอย, ที่มา
synergy - การทำงานร่วมกัน, การสนันสนุนซึ่งกันและกัน
turning - การหมุน จุดหมุน, การเลี้ยว
turning point - จุดหักเห
Right on! - ถูกต้องแม่นยำเลย (สำนวน)
synchronize - ทำให้เข้าจังหวะกัน,ทำให้พร้อมกัน
stage - ระยะเวลา, เวที, ฉาก
vendor - ผู้ขาย
migration - อพยพ
thrill - ตื่นเต้น รู้สึกพอใจ
cutlery - เครื่องใช้บนโต๊ะอาหาร, เครื่องมือที่มีใบมีด
fork - ส้อม
well off - มั่งคั่ง
fit in - บรรจุลงใน
turkey - ไก่งวง
receipt - ใบเสร็จรับเงิน
recipe - ตำรากับข้าว,สูตร
sake - วัตถุประสงค์,ผลประโยชน์
gotcha - คำอุทานแสดงเข้าใจหรือตอบรับ
gear - ปรับ
unlikely - ไม่น่าจะเหมือน, ไม่น่าจะเป็นไปได้
confidential - ที่เป็นความลับ
policy - นโยบาย
cumbersome - ยุ่งยาก
migrate - อพยพ
trivial - ไม่สำคัญ ธรรมดา ไม่เอาจริงเอาจัง
evaporate - ระเหย
curious - อยากรู้อย่ากเห็น
debate - การอภิปราย, การถกเถียง
diligence - ความพากเพียร
catch up - คว้า, ฉกฉวย
commitment - เข้าไปกระทำและรับผิดชอบ
awake - ตื่นตัว
aware of - ตระหนัก
worthwhile - คุ้มค่ากับความพยายาม
hasty - รีบเร่ง, รีบร้อน
chronic - ที่ติดเป็นนิสัย
perpetually - ตลอดกาล
fence - กำแพง สิ่งกีดขวาง
muster - รวมรวม
prospect - ภาพที่มองเห็น, โอกาส
sphere - ขอบเขต วง
settle down to - มุ่งความสนใจ, ตั้งใจ
incline - อยากจะ, มีแนวโน้มจะ
rebel - ต่อต้าน
realm - ขอบเขต, ดินแดน
ascendancy - มีอำนาจ มีพลัง
Prolong - ทำให้ยาวขึ้น, ยืดเวลา
due to - เนื่องจาก
immature - ยังไม่โตเต็มที่
shudder - สั่นกลัว
assume - ยอมรับ
recoil from - ถอยหนีจาก
thorn - อุปศรรค, หนาม
undergoing - เผชิญ, ตรากตรำ
hardship - ความยากลำบาก
shirk - หลีกเลี่ยง, หนีงาน
principle-แหล่งที่มา สาเหตุ กฎ ทฤษฎี
criterion-เกณฑ์
groundwork -รากฐาน
masculine-ลักษณะเพศชาย ความเข้มแข็ง
feminine-ลักษณะเพศหญิง ความอ่อนโยน
bicker-โต้เถียง
arbitrarily -อย่างไม่มีกฎเกณ, อย่างตามใจชอบ
frowns upon -ไม่ยอมรับไม่อนุมัติ
favor - ให้การช่วยเหลือ,ยกย่อง,สนับสนุน
bestow -ให้
deprived of - เพิกถอนสิทธิ, ทำให้สูญเสีย
basis - พื้นฐาน
conducive - นำมาไปสู่, ซึ่งทำให้เกิดขึ้น
authentic - ของแท้น่าเชื่อถือ มีผลตามกฎหมาย
abiding - ตลอดไป
obesity - การอ้วนมากเกินไป
ingredients - ส่วนประกอบเครื่องปรุง
withhold - ระงับ ไม่อนุมัติ
moment - ขณะ(ชั่วครู่) เวลา โอกาส
glorious - รุ่งโรจน์ เปล่งปลั่ง
pursue - ไล่ตาม ทำให้ลุล่วง
united - ร่วมกัน, พร้อมเพรียงกัน, สอดคล้องกัน, แต่งงาน
postpone - เลื่อนเวลาออกไป
lost - หลงทาง, พ่ายแพ้, หายไป
justify - อธิบาย ให้เหตุผล แก้ตัว
participation - การเข้าร่วม , ร่วมมือ
abstinence - การบังคับใจตนเอง
bullshit - ไม่จริง หลอกลวง
asshole - คนโง่
advocate - สนับสนุน, ผู้ให้การสนับสนุน, ทนายแก้ต่าง
anarchy - ภาวะที่ไม่มีรัฐบาล , อนาธิปไตย
emphasize - เน้น, ให้ความสำคัญ
moto - คติพจน์, หลักความประพฤติ
nonconformity - การไม่ยอมทำตาม
submission - การยอมจำนน, เสนอ
liberty - สิทธิขั้นพื้นฐาน, อิสระเสรี
curtail - ทำให้สั้นลง, ลดทอด
interminable - ไม่รู้จักจบ, ไม่สิ้นสุด
divested of - ปลดออกจาก
fullfilment - การบรรลุเป้าหมาย, ความสมหวัง
eventually - ท้ายที่สุด, ในที่สุด
nothingness - ความไม่สำคัญ, ความไม่มีค่า
state - กำหนด, ประกาศ แถลงการณ์, กล่าว
impractical - ซึ่งไม่มีประสิทธิภาพเมื่อนำมาใช้งานจริง, ใช้งานไม่ได้, ทำไม่ได้
ground of - เหตุผลของ
contemplate - วิเคราะห์ ใคร่ครวญ
domant - อยู่เฉยๆ ไม่เคลื่อนที่, แฝงอยู่
relevant - เกี่ยวเนื่องกัน, ตรงประเด็น
enthusiasm - ความกระตือรือร้น, สิ่งที่กระตุ้นให้สนใจ
enchant - ทำให้หลงไหล ทำให้ปลื้มปิติห
dissipation - การทำให้กระจาย, สุรุ่ยสุร่าย
frustration - ความผิดหวัง ความไร้ผล
assails - ก่อกวน
potentialities - ศักยภาพความเป็นไปได้ ขีดความสามารถ
occupations - งาน
side - รอง, ข้างๆ
predominant - มีอิทธิพลมากกว่า, มีมากกว่า
retained - เก็บไว้ สงวนไว้
leisure - เวลาว่าง การว่างจากงาน
pursuits - งานอดิเรก
painstaking - อุตสาหะ เพียรพยายาม
criticism - การวิจารณ์
profound - ลึกซึ้ง
oath - คำสาบาน สัจจะ
polish - ขัดเกลา ปรับปรุงให้ดีขึ้น
attitude - ท่าทาง (การแสดงท่าทาง)
cheerful - มองโลกในแง่ดี
defiant attitude - การแสดงท่าท้าทาย
chase - ไล่ตาม
weave - ถักทอ, โยกไปมา
resolutely - อย่างกล้าหาญ
disturb - รบกวน
shallow - ตื้น
reckless - สะเพร่า
instant - รีบด่วน
complicate - ทำได้ยาก, ยาก
prudent - รอบคอบ
infrastructure - โครงสร้างพื้นฐาน
decade - กลุ่มที่ประกอบด้วย 10, 10 ปี
overwhelm - - ทำให้ความรู้สึกท่วมท้น, ทำให้พ่ายแพ้
cobble - ปะหรือซ่อม
order - ความเป็นระเบียบเรียบร้อย
numerous - มากมาย
disparate - ไม่เหมือนกันอย่างมาก
absence - การขาด,การไม่มีตัวตน
repository - ที่เก็บ,โกดัง,ผู้ที่ได้รับความไว้ใจ
deliberation - ความรอบคอบ
widespread - แพร่หลาย
deserve - สมควรได้รับ
trait - คุณสมบัติ,เส้นขีด
yearn - ปรารถนา
hint - เกริ่น
aggregate - ผลรวม รวบรวม
critique - การวิจารณ์
conference - การสัมนา
retreat - ล่าถอย,ถอนตัว,สันโดษ
humor - อารมณ์,อารมณ์ขัน
utter - พูด, แจ้ง
onerous - ยาก
exorbitant - มากเกินไป
knob - ลูกบิด
versatile - มีประโยชน์หลายอย่าง
affair - การงาน, เหตุการณ์
profiling - การรวบรวมข้อมูลที่เป็นประโยชน์เกี่ยวกับสิ่งที่ต้องการทราบรายละเอียด
spare - ว่าง
aggressive - ก้าวร้าว,มั่นใจ
recliam - เรียกกลับคืน
steady - มั่นคง
threshold - จุดเริ่มต้น,ทางเข้า
narrowly - อย่างแคบ
likelihood - ความเป็นไปได้
incur - ประสบกับสิ่งที่ไม่ดี
settle - ตัดสินใจ, ทำให้เข้ามาอาศัยอยู่
fragile - เปราะแตกง่าย, บอบบาง
pace - อัตราการเดิน
occasion - โอกาส
most of the time - ส่วนมากแล้ว..
imperative - จำเป็น,ที่เป็นคำสั่ง
pertinent - เข้าเรื่อง,นำไปสู่เรื่อง ***
novice - ผู้เริ่มต้น
simultaneously - โดยเกิดขึ้นพร้อมกัน
akin - เกี่ยวดองกัน,เหมือนกัน
terse - กะทัดรัด
tedious - น่าเบื่อหน่าย
tolerable - ทนได้ ค่อนข้างดี
solely - โดยลำพัง
dire - เลวร้ายมาก
consequence - ผลที่ตามมา
facet - ด้าน,มุมมอง
preface - คำนำ,เขียนคำนำ
succinct - สั้นกระชับ
further - ซึ่งเพิ่มเข้ามา, มากขึ้น, สนับสนุน
conclusion - ส่วนสุดท้าย ***
annoy - ทำให้รำคาญ, รบกวน
handy - สะดวก
privilege - ข้อได้เปรียบ,โอกาศ,ให้สิทธิพิเศษ
revise - แก้ไข ทบทวน
deem - คิดว่า (คำเป็นทางการ)
hassle - การทะเลาะ,การยุ่งยาก
surpass - เกินกว่า
inclusion - การผนวก
monetary - เกี่ยวกับเงินตรา
occupy - อาศัยอยู่ใน, กินเนื้อที่หรือเวลา
pad - เพิ่ม ***
compliant - ที่ยอมทำตาม ***
exhaustive - ละเอียดถี่ถ้วน
violate - ฝ่าฝืน
vastly - อย่างกว้างขวางมาก
deduce - ได้ข้อสรุป ***
facilitate - ทำให้สะดวกขึ้น
gonna - going to
strain - ทำให้ตึง,เครียด
sidetrack - ทำให้ออกนอกประเด็น
disciple - ลูกศิษฐ์
urge - กระตุ้น,แรงกระตุ้น
gotta - have got to, have got a
grasp - เข้าใจ,จับ,ความสามารถในการเข้าใจ
confront - เผชิญหน้า
enthusiasm - ความกระตือรือร้น,สิ่งกระตุ้นความสนใจ
posture - แสดงท่า,วางท่า,ทัศนคติ
tricky - เจ้าเล่ห์,หลอกลวง
weird - แปลกประหลาด, เกี่ยวกับโชคชะตา
eternal - ที่ไม่เปลี่ยนแปลง,ที่อยู่ชั่วนิรันดร์
conviction - ความเชื่อมั่น
embarrassed - ลำบากใจ ***
possessed - ถูกครอบงำทางจิตใจ
mesmerize - สะกดจิต
indecent - ไม่เหมาะสม,หยาบคาย
relieve - ผ่อนคลาย, ลดภาระ
apprentice - ผู้ฝึกงาน
restless - กระสับกระส่าย
tickle - จักจี้,รู้สึกคัน
beside - เทียบกับ,อยู่ข้าง,นอกเหนือไปจาก
insult - การดูถูก,วาจาหยาบคาย
strike out - ซัดออกไป,พลาดโอกาส
tolerance - ความอดกลั้น, การยอมรับความคิดเห็นของผู้อื่น
acquaintance - คนรู้จัก
barely - เรียบง่าย
bear - ทน
crawl - คลาน
regret - เสียดาย เสียใจ
digress - พูดนอกเรื่อง
decent - เหมาะสม
distract - ไขว้เขว
cheat - การคดโกง,คนโกง
penalty - ใทษ,การลงโทษ
beneath - อยู่ข้างล่าง
deserve - สมควรได้รับ
anyway - นอกจากนั้น
pupil - นักเรียน
call ? off - เลื่อน, อยู่ห่างๆ
assault - การจู่โจม
impatient - ใจร้อน
composer - นักแต่งเพลง
forgery - การปลอมแปลง
approve - เห็นดวย,อนุมัติ
craft - งานศิลปะ
obligation - สัญญาผูกมัด,หน้าที่,ความรู้สึกเป็นบุญคุณ
farewell - การกล่าวลา
diminish - ทำให้ลดลง
brevity - ระยะเวลาสั้น,การใช้คำที่สั้นกระชับ
campaign - การรณรงค์ การหาเสียง
veritable - จริง
dispensable - ที่ไม่จำเป็น
stubborn - ดื้อรั้น
imitate - เลียนแบบ
thirst - ความกระหาย
protest - ยืนยัน,คัดค้าน
camouflage - การอำพราง
ceremony - พิธีการ
struggle - ดิ้นรน,ต่อสู้
frankly - อย่างตรงไปตรงมา
aggregate - ผลรวม รวบรวม
trustworthy - น่าไว้วางใจ
absurd - ไร้สาระ
pursue - ไล่ตาม ทำให้ลุล่วง
ally - คนหรือประเทศที่อยู่ในกลุ่มเดียวกัน
vital - เกี่ยวกับชีวิต, สำคัญมาก, ที่ทำให้ถึงตายได้, มีชีวิตชีวา
hesitation - ความลังเล
spar - การทะเลาะ การต่อยมวย
insurmountable- ซึ่งยากเกินกว่าจะเอาชนะได้
sophisticate - ซึ่งมีประสบการณ์มาก
altruist- ผู้ที่เห็นแก่ประโยชน์ของผู้อื่นเป็นที่ตั้ง
simplistic - ง่าย
bow - โค้งคำนับ
wound - บาดเจ็บ,บาดแผล
disgrace - ความเสื่อมเสีย
sigh - ถอนหายใจ
tuition - ค่าเล่าเรียน
stickler - ความยุ่งยาก
orderliness - ความเป็นระเบียบ
discipline - ข้อบังคับ
extrovert - เอาใจใส่
//update 17-2-2009

set folder thai font ให้กับ jpgraph เพื่อให้แสดง font ภาษาไทย

สามารถ Download นำไฟล์ไปทดสอบได้ทันที (ไฟล์ thai_001.php และ thai_002.php)
Download
ถ้าไม่สามารถใช้งานได้แสดงว่ามีปัญหาเกี่ยวกับ configuration ของ php ในไฟล์ php.ini ละครับ

jpgraph_ttf.inc.php
/* Placeholders for defined fonts */
FF_USERFONT1 => array(
FS_NORMAL =>'CORDIA.TTF',
FS_BOLD =>'CORDIA.TTF',
FS_ITALIC =>'CORDIA.TTF',
FS_BOLDITALIC =>'CORDIA.TTF' ),

========
ไฟล์แสดง graph

จุดสำคัญคือตรงนี้ครับสมมุติว่าไฟล์ font *.ttf อยู่ใน folder scripts ซึ่งอยู่ระดับรองจากไฟล์โค้ด php
และอย่าลืมว่า string ภาษาไทย ที่ส่งไปให้กับ function ของ jpgraph จะต้องเป็น utf8

define('TTF_DIR',dirname(__FILE__).'/scripts/'); //กำหนดตำแหน่ง folder ที่เก็บ font ttf
require_once ('../scripts/jpgraph/jpgraph/jpgraph.php');
require_once ('../scripts/jpgraph/jpgraph/jpgraph_bar.php');



... โค้ดบางส่วนถูกตัดทอนออกไป

$graph = new Graph(550,320);
$graph->img->ttf->SetUserFont1('CODIA.TTF','CODIA.TTF','CODIA.TTF','CODIA.TTF'); //เทียบเท่ากับกำหนดค่าใน jpgraph_ttf.inc.php
$graph->SetScale('intint');
$graph->SetShadow();
$graph->SetMargin(60,30,40,160);
$bplot = new BarPlot($dataY);
$bplot->SetWidth(0.2);
$bplot->SetFillColor('orange');
$graph->Add($bplot);
$graph->title->Set('การแจ้งซ่อม : จำแนกตามสาขา : '.range_display($start,$end));
$ttf = FF_USERFONT1;
$graph->title->SetFont($ttf,FS_NORMAL,14);
$graph->yaxis->title->SetFont($ttf,FS_NORMAL,14);
$graph->xaxis->title->SetFont($ttf,FS_NORMAL,14);
$graph->xaxis->SetFont($ttf,FS_NORMAL,14);
$graph->xaxis->SetTickLabels($labelY);
$graph->xaxis->SetLabelAngle(70);
$graph->xaxis->HideLastTickLabel();


link: โค้ดช่วยแสดง object ของ jpgraph ที่สามารถ set font ได้

รวมคำศัพท์ภาษาอังกฤษ

โค้ดช่วยแสดง object ของ jpgraph ที่สามารถ set font ได้

โค้ดช่วยแสดง object ของ jpgraph ที่สามารถ set font ได้ครับ ส่งตัวแปรที่ประกาศด้วย new
อย่างเช่น $graph และ $activity ไปยัง function echoSetFont แบบนี้ครับ


<?php // content="text/plain; charset=utf-8"


require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_line.php');

// Some data
$ydata = array(11,3,8,12,5,1,9,13,5,7);

// Create the graph. These two calls are always required
$g = new Graph(350,250);
$g->SetScale('textlin');

// Create the linear plot
$line=new LinePlot($ydata);
$line->SetColor('blue');

// Add the plot to the graph
$g->Add($line);

//START SHOW SETFONTABLE OBJECT
echoSetFont($g,'$g','FF_JASMINE');
echoSetFont($line,'$line','FF_JASMINE');
function echoSetFont($obj,$name,$fontNumber='FF_USERFONT1'){
foreach($obj as $k=>$o){
if (is_object($o)){
$vars = array_keys(get_object_vars($o));
if (method_exists($o,'SetFont')){
echo $name,'->',$k,'->SetFont('.$fontNumber.')<br/>';
}
if ($k != 'graph_theme'){
echoSetFont($o,$name.'->'.$k,$fontNumber);
}
}
}
}
//END SHOW SETFONTABLE OBJECT

// Display the graph
$g->Stroke();
?>