หน้าหลัก โค้ด-บทความ php โค้ด-บทความ javascript โค้ด-บทความ css สารบัญ สารบัญ

ทักทายครับ

สวัสดีครับ หลังจากที่ blog นี้หยุดการอัพเดททบความเกี่ยวกับโค้ดในการใช้ทำเวปไปนานไม่ว่าจะเป็น code php, html, javascript, css, ajax เนื่องจากผมไม่ค่อยมีเวลาจนลืม blog นี้ไปเลย นึกขึ้นได้ตอนปีใหม่ ไปค้นหาใน google แล้วตกใจ เนื่องจาก blog นี้ไปอยู่ลำดับที่ 1 ของการค้นหา ไม่เชื่อลองดู เลยขอถือโอกาสเริ่มต้นใหม่ในช่วงปีใหม่นี้เริ่มอัพเดทบทความตั้งแต่ตอนนี้เป็นต้นไป หวังเป็นอย่างยิ่งว่าจะมีผู้ติดตามบทความของผมต่อไปน่ะครับ ปล.ท่านใดสนใจลงโฆษณาสามารถติดต่อได้ที่ hotcodephp@gmail.com

22 ส.ค. 2555

การสั่งให้ textfield จำค่าที่กรอกข้อมูลไว้ตลอด


เป็นการใช้โค้ด javascript เพื่อเรียกใช้งาน Cookie ในการจำค่าที่เรากรอกในช่อง textfield ลักษณะการทำงานของ code ก็คือเมื่อกรอกข้อมูลใน textfield แล้วกดปุ่ม submit ค่าที่เรากรอกก็จะถูกบันทึกไว้ และแสดงค่าใน textfield ตลอด ไม่ว่าเราจะ refresh กี่ครั้ง ข้อมูลก็จะยังอยู่ จนกว่าเราจะบันทึกข้อมูลใหม่ลงไปข้อมูลถึงจะเปลี่ยน โดย Cookie ตัวนี้ผมตั้งไว้ที่ 60 วันน่ะครับ ลองนำไปใช้ดู

ตัวอย่างโค้ด

<script type="text/javascript">

/***********************************************
* Remember Text INPUT field values- by JavaScriptKit.com
* This notice MUST stay intact for use
* Visit JavaScript Kit at http://www.javascriptkit.com/ for this script and more
***********************************************/

var remembervalues_days=60 //Remember text input values for how many days?
var dyncookiename=encodeURI(window.location.pathname) //Name of cookie. Changes depending on the page.

var recallinput=function(){
var cookienamevalue=rememberinput.getCookie(dyncookiename).split("##")
for (var i=0; i<cookienamevalue.length; i++){
var cookiename=cookienamevalue[i].split("#")[0]
var cookievalue=cookienamevalue[i].split("#")[1]
if (document.getElementById(cookiename)!=null && document.getElementById(cookiename).type=="text") //if this text field has a stored value
document.getElementById(cookiename).value=decodeURI(cookievalue)
}
}

var rememberinput=function(){
var rememberit=""
for (var i=0; i<arguments.length; i++){
if (document.getElementById(arguments[i]).type=="text" && document.getElementById(arguments[i]).value!="") //if this is a form text INPUT and not empty
rememberit+=arguments[i]+"#"+encodeURI(document.getElementById(arguments[i]).value)+"##"
}
rememberinput.setCookie(dyncookiename, rememberit, remembervalues_days)
}

rememberinput.getCookie=function(Name){ //get cookie value
var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
if (document.cookie.match(re)) //if cookie found
return document.cookie.match(re)[0].split("=")[1] //return its value
return ""
}

rememberinput.setCookie=function(name, value, days){ //set cookie value
var expireDate = new Date()
//set "expstring" to either future or past date, to set or delete cookie, respectively
var expstring=expireDate.setDate(expireDate.getDate()+parseInt(days))
document.cookie = name+"="+value+"; expires="+expireDate.toGMTString()+";";
}

if (window.addEventListener)
window.addEventListener("load", recallinput, false)
else if (window.attachEvent)
window.attachEvent("onload", recallinput)
else if (document.getElementById)
window.onload=recallinput

</script>
<form onSubmit="rememberinput('yourname', 'youremail')">

Name:*<br /><input type="text" id="yourname" size="25" /><br />

Email Address:*<br /><input type="text" id="youremail" size="25" /><br />

Feedback:<br />
<textarea cols="25" rows="6"></textarea>

<br />
<input type="submit" value="Submit" />

</form>
Read more >>

ตัวอย่างฟอร์มการกรอกข้อมูลส่วนตัวโดยใช้ code php

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


ตัวอย่างโค้ด simple2.php

 <!DOCTYPE html PUBLIC
          "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Sample 2</title>
<style>
body { padding: 10px 0px 0px 0px; }
td
{
  padding: 2px 5px;
  text-align: left;
}
h4 { margin: 0px; }
input.editfield, select.editfield, textarea.editfield { width: 18em; }
</style>
</head>
<body>
<center>
<form method="post" action="sample2.php">
<input type="hidden" name="form_validation_rules"      value="" />
<input type="hidden" name="form_validation_behaviours" value="
Details : count details_count 20 black red;
Year : next 4;
Month Day : next 2;
Month Day : prev;
" />
<table>
<?php
if (isset($_POST['submit']))
{
  include 'form-validation.php';
  $result = form_validation_validate($_POST, "
  Username Password Year Month Day Details : empty;
  Username Password : len >= 3;
  Username Password : chnum_;
  E-mail: email;
  Membership : select 0;
  Year : > 1900;
  Year Month Day : date;
  Sex : radio;
  Details: len <= 20;
  Categories[] Newsletters[] : cnt >= 2;
  Agree : terms;
  ");
  ?>
  <tr>
  <td colspan="2">
  <?php

  if ($result === true)
  {
    echo '<span style="color: green;">The form is successfully submitted!</span>';
    $_POST = Array();
  }
  else echo '<span style="color: red;">' . $result . '</span>';
  ?>
  </td>
  </tr>
  <?php
}
function __post($name, $val = '')
{
  return isset($_POST[$name]) ? $_POST[$name] : $val;
}
function __checked($name, $val)
{
  return isset($_POST[$name]) && ($_POST[$name] == $val)  ? 'checked="checked"' : '';
}
function __checked2($name, $ind)
{
  return isset($_POST[$name]) && in_array($ind, $_POST[$name]) ? 'checked="checked"' : '';
}
function __selected($name, $val)
{
  return isset($_POST[$name]) && ($_POST[$name] == $val) ? 'selected="selected"' : '';
}
function __selected2($name, $ind)
{
  return isset($_POST[$name]) && in_array($ind, $_POST[$name]) ? 'selected="selected"' : '';
}
?>
<tr>
  <td style="padding-bottom: 10px;" colspan="2"><h4>Sample 2</h4></td>
</tr>
<tr>
  <td>Username:</td>
  <td><input class="editfield" type="text" name="Username" value="<?=__post('Username');?>" /></td>
</tr>
<tr>
  <td>Password:</td>
  <td><input class="editfield" type="password" name="Password" value="<?=__post('Password');?>" /></td>
</tr>
<tr>
  <td>E-mail:</td>
  <td><input class="editfield" type="text" name="E-mail" value="<?=__post('E-mail');?>" /></td>
</tr>
<tr>
  <td>Membership:</td>
  <td>
  <select class="editfield" name="Membership">
    <option value="0" <?=__selected('Membership', 0);?>></option>
    <option value="1" <?=__selected('Membership', 1);?>>Silver</option>
    <option value="2" <?=__selected('Membership', 2);?>>Gold</option>
    <option value="3" <?=__selected('Membership', 3);?>>Platinum</option>
  </select>
  </td>
</tr>
<tr>
  <td>Age:</td>
  <td>
  <input type="text" name="Year"  value="<?=__post('Year'); ?>" size="4" maxlength="4" />
  <input type="text" name="Month" value="<?=__post('Month');?>" size="2" maxlength="2" />
  <input type="text" name="Day"   value="<?=__post('Day');  ?>" size="2" maxlength="2" />
  <small>yyyy/mm/dd</small>
  </td>
</tr>
<tr>
  <td>Sex:</td>
  <td>
  <input type="radio" name="Sex" value="male"   <?=__checked('Sex', 'male'  );?> /> Male
  <input type="radio" name="Sex" value="female" <?=__checked('Sex', 'female');?> /> Female
  </td>
</tr>
<tr>
  <td>Details:</td>
  <td>
  <textarea class="editfield" name="Details" rows="4"><?=__post('Details');?></textarea>
  <br />
  <small><span id="details_count">0</span> out of 20 characters</small>
  </td>
</tr>
<tr>
  <td>Categories:</td>
  <td>
  <select class="editfield" name="Categories[]" multiple="multiple" size="4">
    <option value="0" <?=__selected2('Categories', 0);?>>Cars</option>
    <option value="1" <?=__selected2('Categories', 1);?>>Computers</option>
    <option value="2" <?=__selected2('Categories', 2);?>>Dogs</option>
    <option value="3" <?=__selected2('Categories', 3);?>>Food</option>
  </select>
  <br />
  <small>Use ctrl+mouse to select multiple categories</small>
  </td>
</tr>
<tr>
  <td>Newsletters:</td>
  <td>
  <input type="checkbox" name="Newsletters[]" value="0" <?=__checked2('Newsletters', 0);?> /> Cars <br />
  <input type="checkbox" name="Newsletters[]" value="1" <?=__checked2('Newsletters', 1);?> /> Computers <br />
  <input type="checkbox" name="Newsletters[]" value="2" <?=__checked2('Newsletters', 2);?> /> Dogs <br />
  <input type="checkbox" name="Newsletters[]" value="3" <?=__checked2('Newsletters', 3);?> /> Food
  </td>
</tr>
<tr>
  <td></td>
  <td>
  <input type="checkbox" name="Agree" value="Yes" <?=__checked('Agree', 'Yes');?> />
  <small>By checking this box you agree to some terms</small>
  </td>
</tr>
<tr>
  <td></td>
  <td><input type="submit" name="submit" value="Submit" /></td>
</tr>
</table>
</form>
<script src="form-validation.js">
</script>
</center>
</body>
</html>
      
ส่วนอันนี้เป็นไฟล์ประกอบน่ะครับ form-validation.js และ form-validation.php download

Read more >>

21 ส.ค. 2555

ตัวอย่างฟอร์มการกรอกข้อมูลส่วนตัวโดยใช้ Javascript เข้ามาช่วย

บทความนี้เป็นตัวอย่างการทำฟอร์มไว้ใช้สำหรับกรอกข้อมูลประวัตส่วนตัว ซึ่งหลายท่านอาจเคยเห็นมาหลายแบบแล้ว แต่โค้ดที่ผมจะนำมาให้ดูนี้เป็นการใช้งานของโค้ด php + javascript ซึ่งลักษณะการทำงานคือ เมื่อเรากรอกข้อมูลในฟอร์มแล้วหากกรอกไม่ครบถ้วน หรือกรอกไม่ถูกต้อง มีจะข้อความเตือนตลอด ซึ่งทำให้ง่ายต่อการกรอกข้อมูล มาดู code กันเลยครับ


ตัวอย่าง code simple1.php


<!DOCTYPE html PUBLIC
          "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Sample 1</title>
<style>
body { padding: 10px 0px 0px 0px; }
td
{
  padding: 2px 5px;
  text-align: left;
}
h4 { margin: 0px; }
input.editfield, select.editfield, textarea.editfield { width: 18em; }
</style>
</head>
<body>
<center>
<form method="post" action="sample1.php">
<input type="hidden" name="form_validation_rules" value="
Username Password Year Month Day Details : empty;
Username Password : len >= 3;
Username Password : chnum_;
E-mail: email;
Membership : select 0;
Year : > 1900;
Year Month Day : date;
Sex : radio;
Details: len <= 20;
Categories[] Newsletters[] : cnt >= 2;
Agree : terms;
" />
<input type="hidden" name="form_validation_behaviours" value="
Details : count details_count 20 black red;
Year : next 4;
Month Day : next 2;
Month Day : prev;
" />
<table>
<tr>
  <td style="padding-bottom: 10px;" colspan="2"><h4>Sample 1</h4></td>
</tr>
<tr>
  <td>Username:</td>
  <td><input class="editfield" type="text" name="Username" /></td>
</tr>

<tr>
  <td>Password:</td>
  <td><input class="editfield" type="password" name="Password" /></td>
</tr>
<tr>
  <td>E-mail:</td>
  <td><input class="editfield" type="text" name="E-mail" /></td>
</tr>
<tr>
  <td>Membership:</td>
  <td>
  <select class="editfield" name="Membership">
    <option value="0"></option>
    <option value="1">Silver</option>
    <option value="2">Gold</option>
    <option value="3">Platinum</option>
  </select>
  </td>
</tr>
<tr>
  <td>Age:</td>
  <td>
  <input type="text" name="Year"  size="4" maxlength="4" />
  <input type="text" name="Month" size="2" maxlength="2" />
  <input type="text" name="Day"   size="2" maxlength="2" />
  <small>yyyy/mm/dd</small>
  </td>
</tr>
<tr>
  <td>Sex:</td>
  <td>
  <input type="radio" name="Sex" value="male"   /> Male
  <input type="radio" name="Sex" value="female" /> Female
  </td>
</tr>
<tr>
  <td>Details:</td>
  <td>
  <textarea class="editfield" name="Details" rows="4"></textarea>
  <br />
  <small><span id="details_count">0</span> out of 20 characters</small>
  </td>
</tr>
<tr>
  <td>Categories:</td>
  <td>
  <select class="editfield" name="Categories[]" multiple="multiple" size="4">
    <option value="0">Cars</option>
    <option value="1">Computers</option>
    <option value="2">Dogs</option>
    <option value="3">Food</option>
  </select>
  <br />
  <small>Use ctrl+mouse to select multiple categories</small>
  </td>
</tr>
<tr>
  <td>Newsletters:</td>
  <td>
  <input type="checkbox" name="Newsletters[]" value="0" /> Cars <br />
  <input type="checkbox" name="Newsletters[]" value="1" /> Computers <br />
  <input type="checkbox" name="Newsletters[]" value="2" /> Dogs <br />
  <input type="checkbox" name="Newsletters[]" value="3" /> Food
  </td>
</tr>
<tr>
  <td></td>
  <td>
  <input type="checkbox" name="Agree" />
  <small>By checking this box you agree to some terms</small>
  </td>
</tr>
<tr>
  <td></td>
  <td><input type="submit" value="Submit" /></td>
</tr>
</table>
</form>
<script src="form-validation.js"></script>
</center>
</body>
</html>


ส่วนอันนี้เป็นโค้ด form-validation.js เป็นไฟล์ประกอบน่ะครับ download ไปใช้กันได้เลย




Read more >>

20 ส.ค. 2555

การทำหน้ารอระหว่างโหลดข้อมูล (preloader)

หลายท่านคงเคยเข้าเวปแล้วเจอหน้าที่บอกสถานะการโหลดหน้า webpage ก่อนที่จะเข้าหน้าเวปจริงใช่ไหมครับ วันนี้เรามาลองทำโดยใช้โค้ด javascript เข้ามาช่วย ซึ่งลักษณะการทำงานของมันก็คือ เวลาเข้าเวปจะมีรูปขึ้นระหว่างรอโหลดหน้าเวป เมื่อรอสักพักก็จะเข้าหน้าเวปจริงเลย ซึ่งมีข้อดีมันจะไม่แสดง url ที่แท้จริงของหน้าเวปหลักของเรา มาดูโค้ดตัวอย่างกันครับ

code หน้า index.html

<!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=utf-8" />
<title>Ajax Preloader example</title>
<link href="style/style.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript" src="max.js"></script>
</head>

<body onload="loadSite();" id="myBody">
   <div id="loader"><img src="loader.gif" border="1"/></div>
</body>

รูปตัวอย่าง



ส่วนอันนี้เป็นไฟล์ตัวย่างน่ะครับ download
Read more >>

17 ส.ค. 2555

php กับการ upload ไฟล์ โดยนำ ajax เข้ามาช่วย

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

code ไฟล์ index.php

<!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=utf-8" />
   <title>Max's AJAX File Uploader</title>
   <link href="style/style.css" rel="stylesheet" type="text/css" />
 
<script language="javascript" type="text/javascript">
<!--
function startUpload(){
      document.getElementById('f1_upload_process').style.visibility = 'visible';
      document.getElementById('f1_upload_form').style.visibility = 'hidden';
      return true;
}

function stopUpload(success){
      var result = '';
      if (success == 1){
         result = '<span class="msg">The file was uploaded successfully!<\/span><br/><br/>';
      }
      else {
         result = '<span class="emsg">There was an error during file upload!<\/span><br/><br/>';
      }
      document.getElementById('f1_upload_process').style.visibility = 'hidden';
      document.getElementById('f1_upload_form').innerHTML = result + '<label>File: <input name="myfile" type="file" size="30" /><\/label><label><input type="submit" name="submitBtn" class="sbtn" value="Upload" /><\/label>';
      document.getElementById('f1_upload_form').style.visibility = 'visible';    
      return true;  
}
//-->
</script>  
</head>

<body>
       <div id="container">
            <div id="header"><div id="header_left"></div>
            <div id="header_main">Max's AJAX File Uploader</div><div id="header_right"></div></div>
            <div id="content">
                <form action="upload.php" method="post" enctype="multipart/form-data" target="upload_target" onsubmit="startUpload();" >
                     <p id="f1_upload_process">Loading...<br/><img src="loader.gif" /><br/></p>
                     <p id="f1_upload_form" align="center"><br/>
                         <label>File:
                              <input name="myfile" type="file" size="30" />
                         </label>
                         <label>
                             <input type="submit" name="submitBtn" class="sbtn" value="Upload" />
                         </label>
                     </p>
                   
                     <iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe>
                 </form>
             </div>
             <div id="footer"><a href="http://www.ajaxf1.com" target="_blank">Powered by AJAX F1</a></div>
         </div>
               
</body>  




ส่วนอันนี้เป็นไฟล์ประกอบน่ะครับ download

Read more >>

โค้ดการจำกัดจำนวนอักษรที่จะกรอกใน textbox

เป็นโค้ด javascript ที่ใช้ในการช่วยจำกัดจำนวนตัวอักษรที่จะกรอกใน textbox กล่าวคือถ้าหากกรอกข้อความใน textbox มากกว่าที่กำหนดไว้ก็จะเปลี่ยนสี background ใน textbox เพื่อเป็นการเตือน และถ้ายังกรอกเกินอีกก็จะไม่สามารถกรอกเพิ่มเติมได้ เรามาดูตัวอย่างโค้ดกันเลยครับ

ตัวอย่าง code หน้าหลัก

<html>
<head>
<title></title>

<script type="text/javascript" src="Bs_Misc.lib.js"></script>
<script type="text/javascript" src="Bs_LimitedTextarea.class.js"></script>
<script type="text/javascript" src="Bs_ColorUtil.lib.js"></script>
<script>
function init() {
myLimitedFoo = new Bs_LimitedTextarea('foo', 50);
myLimitedFoo.setBgColorWarning();
myLimitedFoo.draw();

myLimitedBar = new Bs_LimitedTextarea('bar', 100);
myLimitedBar.setBgColorWarning(60, 'char', 'FFC0C0');
myLimitedBar.draw();
}
</script>
</head>

<body onLoad="init();">
<table border="0" cellspacing="0" cellpadding="10" width="580">
<tr>
<td valign="top">
<b>Field 1</b><br>
When 80% of the 50 chars are used, the background color starts to transform into red.<br><br>
<textarea name="foo" id="foo" cols="25" rows="4"></textarea>
</td>
<td valign="top">
<b>Field 2</b><br>
When 60 chars are used, the background color starts to transform into red.<br><br>
<textarea name="bar" id="bar" cols="25" rows="4" style="background-color:#C0FFFF;">this is a default value. this is a default value.</textarea>
</td>
</tr>
</table>

</body>
</html>

ส่วนอันนี้เป็นไฟล์ประกอบน่ะครับ download
โค้ดอาจจะเยอะหน่อยน่ะครับ ลองนำไปประยุกต์ดูครับ
Read more >>

16 ส.ค. 2555

โค้ด php กับ Banner Manager ระบบจัดการป้ายโฆษณา

ระบบจัดการป้ายโฆษณา สามารถจัดการป้ายโฆษณา และยังสามารถดูสถิติได้



วิธีการติดตั้ง
เมื่อ Downloads ได้แล้ว ให้ แตกไฟล์ Zip ใว้ใน Folder ทีก่ำหนดแต่ต้องอยู่ภายใน Path ของ Server เท่านั้น ในที่นี้ผม แตกไฟล์ใว้ที่ C:\Appserv\www\ad_banner การติดตั้งให้แก้ Config ที่ไฟล์ common/config.inc.php

config.inc.php
//(1) ตั้งค่าต่างๆ ของ MySQL Server
$host = "localhost";
$user = "";
$passwd = "";
$dbname = "ad_banner";

จากนั้นให้ใช้ phpMyAdmin ทำการ dump ตารางจากไฟล์ db.sql



หลังจาก dump ตารางเสร็จเรียบร้อยแล้ว สามารถใช้งานได้เลย Run http://localhost/ad_banner/test.php


ระบบ Admin
http://localhost/ad_banner/admin/index.php


User : admin
Pass : admin



สามารถเข้าไปแก้ไขจัดการ Banner ต่าง ๆ ได้เลยครับ 
ส่วนอันนี้เป็นไฟล์ประกอบครับ 
Read more >>

6 ส.ค. 2555

ตัวอย่างการซ่อนหรือแสดง textbox เมื่อเปลี่ยนเงื่อนไขใน listbox

ตัวอย่างโค้ดนี้จะเป็นการใช้ javascript ในการซ่อนหรือแสดง textbox เมื่อเปลี่ยนเงื่อนไขใน listbox ซึ่งจาก code ตัวอย่างนี้เมื่อเปลี่ยนค่าใน listbox เป็น โสด ก็จะมี textbox ปรากฏขึ้นมาให้กรอก ชื่อ, นามสกุล และเลขประจำตัวประชาชน ขึ้นมา แต่ถ้าเปลี่ยนเป็นกรณีอื่น ๆ ก็จะไม่มี text box ปรากฏขึ้นมา ยังไงก็ลองนำไปประยุกต์ใช้ในการทำฟอร์มสำหรับกรอกข้อมูลได้น่ะครับ
ตัวอย่าง code 

<script>
function chksatatus(sx){
if (sx=="โสด"){
    document.getElementById('det1').style.display='none';
    document.getElementById('det2').style.display='none';
}else{
     document.getElementById('det1').style.display='block';
    document.getElementById('det2').style.display='block';
}
}
</script>
                    <select  onChange="chksatatus(this.value);" name="citizen_satatus"id="citizen_satatus">
            <option value="โสด">โสด</option>
            <option  value="สมรส"selected>สมรส</option>
            <option   value="หย่า">หย่า</option>
            <option   value="หม้าย">หม้าย</option>
          </select>

<table>

  <tr id='det1'>
    <td><div align="right">ชื่อคู่สมรส :&nbsp;</div></td>
    <td><label>
      <input name="citizen_namesamee" type="text" id="citizen_namesamee"  />
    </label></td>
    <td><div align="right">นามสกุล :&nbsp;</div></td>
    <td><label>
      <input name="citizen_surnamesamee" type="text" id="citizen_surnamesamee"  />
    </label></td>
  </tr>
  <tr id='det2'>
    <td><div align="right">รหัสบัตรประจำตัวประชาชนคู่สมรส :&nbsp;</div></td>
    <td><label>
      <input name="citizen_sameeid" type="text" id="citizen_sameeid" />
    </label></td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  </table>
Read more >>

1 ส.ค. 2555

php กับการ upload ไฟล์แบบไม่เปลี่ยนหน้า

code php นี้เกี่ยวกับวิธีการทำ upload ไฟล์ ซึ่งหลายท่านอาจะเคยทำมาแล้วแต่ code ตัวนี้มีความพิเศษกว่าวิธีที่ผมเคยใช้มาก่อน นั้นก็คือมันเป็นโค้ดที่ทำการ upload โดยที่ไม่มีการเปลี่ยนหน้าให้รำคาญใจเลยทุกอย่างทำเสร็จในหน้าเดียว แต่ดูโค้ดแล้วอาจจะยุ่งยากนิดหน่อย แต่ก็ได้ผลลัพธ์ที่คุ้มค่าทีเดียวครับ ดูตัวอย่าง code php ด้านล่างเลยครับ
ขั้นตอนแรกเขียน Form Upload และ Script Upload ก่อน
โค้ดไฟล์ upload.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
<title>Upload ไม่เปลี่ยนหน้า</title>

<script language="javascript">
function clickupload()
{

if ( document.getElementById('fileupload').value.length == 0 )
{
alert( 'ระบุ File ที่จะ Upload ' ) ;
return false ;
}


document.getElementById('upmsg').innerHTML = 'กำลัง Upload อยู่ รอซักครู่...' ;
document.getElementById('btnUpload').value = "ส่งไปแล้วไม่ต้องคลิกซ้ำ";
document.getElementById('btnUpload').disabled = true ;


return true ;
}

function uploadok(pathfile)
{
document.getElementById('fileupload').value ="";
document.getElementById('upmsg').innerHTML = 'Upload เสร็จแล้ว <br> file อยู่ที่<Br><a href="'+pathfile+'" target="_blank">'+pathfile+'</a><br>ระบุ File ใหม่ต่อไปได้เลย' ;
document.getElementById('btnUpload').value = "Upload เลย";
document.getElementById('btnUpload').disabled = false;
document.getElementById('frmUpload').reset() ;
return true ;
}



</script>


</head>
<body>
<iframe id="uploadtarget" name="uploadtarget" src="" style="width:0px;height:0px;border:0"></iframe>
<form id="frmUpload" action="upload.php" method="post" enctype="multipart/form-data" onsubmit="return clickupload();" target="uploadtarget">
<span id="upmsg">ระบุ File ที่จะ Upload</span><br>
<input id="fileupload" name="fileupload" type="file">&nbsp;
<input id="btnUpload" type="submit" value="Upload เลย">
</form>
</body>
</html>

คำอธิบายโค้ดสีสีเขียว คือ เมื่อกด Submit มันจะ Load หน้าใหม่ ฉะนั้นผมจึงเพิ่ม Target เข้าไปให้ ผลที่ได้ไปลงไว้ที่ Window ชื่อ uploadtarget โดย Window ชื่อ uploadtarget นี้ผมกำหนดเป็นแบบ iframe ซะเลย แถมกำหนดให้แสดงผลแบบ 0 ด้วย และผมก็เพิ่ม Javascript เพื่อตรวจสอบข้อมูลก่อนว่า คนกดต้องระบุ path File เข้ามา

คำอธิบายโค้ดสีแดง คือ การบอกสถานะการดำเนินการ คราวนี้เมื่อคลิก submit ระบบจะทำการเปลี่ยน ข้อความเป็น กำลัง Upload และทำการล๊อกปุ่มไม่ให้คลิกเข้ามาซ้ำอีก

และตามด้วยโค้ดไฟล์ upload.php

<?

sleep(3);

$file = $_FILES['fileupload']['name'];
$typefile = $_FILES['fileupload']['type'];
$sizefile = $_FILES['fileupload']['size'];
$tempfile = date("Y-m-d")."-".$file;
copy($_FILES['fileupload']['tmp_name'],$tempfile);

?>
<script language="JavaScript">
<!--
window.parent.uploadok('<?=$tempfile?>');
//-->
</script>



พอ Script upload.php ทำงานก็จะส่งค่ากลับมาที่หน้าหลักและรายงานผลเรียบร้อยแล้ว




Read more >>

30 ก.ค. 2555

PHP กับเทคนิคการแปลง IP ให้เป็น .xxx

code php วันนี้ขอกล่าวถึงเรื่องของ IP ซึ่งเป็นการแปลงค่า IP ให้เป็น .xxx เพื่อป้องกันผู้ใช้งานเห็นค่า IP ที่แท้จริง อาจนำโค้ด php ตัวนี้ไปประยุกต์ใช้ในการทำระบบงาน การทำเว็บบอร์ด หรือการโพสข้อความ ก็ได้ เรามาดูตัวอย่าง code php เลยดีกว่า จะมีด้วยกัน 3 วิธีน่ะครับ


วีธีที่1 
$ip='192.168.10.100';
$new =preg_replace('/^((\d+\.){3})(.*)/','\\1xxx',$ip);
echo $new;

วีธีที่2  
$ip='192.168.20.200';
$show=explode(".",$ip);
echo $show['0'],".",$show['1'],".",$show['2'],".xxx";

วีธีที่3 
$ip='192.16.30.253';
echo substr($ip,0,strrpos($ip,".")).".xxx";
Read more >>

26 ก.ค. 2555

PHP กับการป้องกันการลงทะเบียนอัตโนมัติด้วย CAPTCHA

บทความ php วันนี้ขอนำเสอนเจ้าต้ว CAPTCHA มันช่วยให้การใช้เน็ตของคุณปลอดภัยด้วยวัตถุประสงค์สำคัญของมันก็เพื่อความปลอดภัยโดยเฉพาะเว็บไซต์ที่ ต้องมีการป้อนข้อมูลส่วนตัว  เช่นการลงทะเบียนผู้ใช้งาน, การโพสข้อมูลใน webboard ฯลฯ เนื่องจากพวกแฮกเกอร์ส่วนใหญ่จะใช้สิ่งที่เรียกว่า bots ในการโจมตีผู้ใช้ ซึ่ง bots ที่ว่านี้สามารถสร้างขึ้นโดยคอมพิวเตอร์ แต่เนื่องจากคอมพิวเตอร์ไม่สามารถแก้ปัญหาการทดสอบด้วย CAPTCHA ได้ จะต้องอาศัยมนุษย์ที่เพ่งดูกราฟฟิกยุ่งเหยิงเหล่านี้ และแกะตัวอักษรออกมาเพื่อพิมพ์ยืนยันอีกที ทำให้ผู้ใช้ปลอดภัยจาก bots เหล่านี้ไปโดยปริยาย ซึ่งวิธีการสร้างและใช้งาน CAPTCHA ผมขอยกตัวอย่างโค้ด php ให้เอาไปประยุกต์ใช้กันนะครับ
ขั้นตอนแรกให้สร้างไฟล์ captcha.php ภายในไฟล์เขียนโค้ด php ดังนี้

<?php
session_start();
  
 class CaptchaSecurityImages {
  
    var $font = 'font.ttf';  // เปลี่ยน font ได้ตามต้องการ
  
    function generateCode($characters) {
    $possible = 'abcdefghjkmnpqrstvwxyz';  // ตัวอักษรที่ต้องการจะเอาสุ่มเป็น Captcha
    $code = '';
    $i = 0;
    while ($i < $characters) { 
    $code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
    $i++;
    }
    return $code;
    }
  
    function CaptchaSecurityImages($width='120',$height='40',$characters='6') {
    $code = $this->generateCode($characters);
    $font_size = $height * 0.9;  // font size ที่จะโชว์ใน Captcha
    $image = imagecreate($width, $height) or die('Cannot initialize new GD image stream');
    $background_color = imagecolorallocate($image, 255, 255, 255);  // กำหนดสีในส่วนต่่างๆ
    $text_color = imagecolorallocate($image, 141, 192, 42);
    $noise_color = imagecolorallocate($image, 172, 208, 95);
    for( $i=0; $i<($width*$height)/5; $i++ ) { // สุ่มจุดภาพพื้นหลัง
    imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
    }
    for( $i=0; $i<($width*$height)/200; $i++ ) { // สุ่มเส้นภาพพื้นหลัง
    imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
    }
    /* สร้าง Text box และเพิ่ม Text */
    $textbox = imagettfbbox($font_size, 0, $this->font, $code) or die('Error in imagettfbbox function');
    $x = ($width - $textbox[4])/2;
    $y = ($height - $textbox[5])/2;
    imagettftext($image, $font_size, 0, $x, $y, $text_color, $this->font , $code) or die('Error in imagettftext function');
    /* display captcha image ไปที่ browser */
    header('Content-Type: image/jpeg');
    imagejpeg($image);
    imagedestroy($image);
    $_SESSION['security_code'] = $code;
    }
  
 }
  
 $width = isset($_GET['width']) && $_GET['height'] < 600 ? $_GET['width'] : '120';
 $height = isset($_GET['height']) && $_GET['height'] < 200 ? $_GET['height'] : '40';
 $characters = isset($_GET['characters']) && $_GET['characters'] > 2 ? $_GET['characters'] : '6';
  
 $captcha = new CaptchaSecurityImages($width,$height,$characters); 

?>



ขั้นตอนที่สอง สร้างไฟล์ getdata.php ใว้ใน Folder เดียวกันกับ captcha.php โดยภายใน code php เขียนดังนี้
<?php
session_start();
if($_REQUEST['task']=='add'){ //หากมีการ Submit ข้อมูลผ่าน From มา
 if($_SESSION['security_code']!=$_POST['secret_code']) { // Check 
  echo "<p>คุณใส่รหัสตัวอักษรไม่ถูกต้องกรุณากรอกใหม่</p>";
 }else{
  echo "<p>รหัสถูกต้อง (สามารถใส่โค๊ดบันทีก หรือโค๊ดอะไรก็ได้ที่ต้องการ)</p>";
 }
}
?>
<!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=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form method="post" action="?task=add">
<input name="name" type="text" /><br /><br />
<input name="detail" type="text" /><br /><br />
<iframe name="a"src="captcha.php?width=100&height=40&characters=5" alt="captcha" frameborder="0" width="120" height="60" scrolling="no"></iframe>
<a href="captcha.php?width=100&height=40&characters=5" target="a"><img src="refresh.gif" width="13" height="13"  border="0" /></a><br />
<br />
พิมพ์อักขระ ตามที่คุณเห็นในภาพ  วิธีการนี้จะช่วยป้องกันการลงทะเบียนโดยอัตโนมัติ<br />
<input name="secret_code" type="text" /><br /><br />
<input  type="submit" value="submit" />
</form>
</body>
</html>

ต่อมาก็ดาวน์โหลด font.ttf และ refresh.gif ตามไฟล์ลิ้งค์ครับ http://bc46.com/forum/index.php?action=dlattach;topic=67.0;attach=77 เอาไปใว้ใน Folder เดียวกับไฟล์ getdata.php ,captcha.php เสร็จแล้วก็ลองรันไฟล์ getdata.php ทดสอบดูเลยครับ นี่เป็นเพียงตัวอย่างเฉยๆ ลองนำไปประยุกต์ใช้ดูครับ

Read more >>

24 ก.ค. 2555

PHP กับการทำ form login แบบป้องกันการไม่ได้ login

จากบทความ php เรื่อง  PHP กับการทำ form login อย่างง่าย จะเป็นการ login ที่มีรูปแบบธรรมดา แต่ก็มีปัญหาว่าหากผู้ใช้งานเข้าหน้าหลักของระบบโดยที่ไม่ได้ผ่านการ login ได้หรือไม่ ก็ต้องบอกว่ามีความเป็นไปได้ แล้วเราจะทำหน้า login ไว้ป้องกันทำไม ดังนั้นวันนี้เรามาดูวิธีแก้ไขกันดีกว่า ลักษณะโค้ด php มันก็จะคล้าย ๆ กับ บทความ PHP กับการทำ form login อย่างง่าย แต่จะมีการใช้คำสั่งที่เกี่ยวกับ session เข้ามาเกี่ยวข้อง มาดูตัวอย่างโค้ดกันเลยครับ
1. โค้ด login.php

<?
ob_start();
session_start();

?>
<form name="form1" method="post" action="check.php">
<table width="300" height="27" border="0" align="center" cellpadding="0" cellspacing="10">
<tr> 
<td>รหัสผู้ใช้งาน</td>
<td> 
  <div align="center">
    <input type="text" name="user">
  </div></td>
</tr>
<tr> 
<td>รหัสผ่าน</td>
<td> 
  <div align="center">
    <input type="password" name="pass">
  </div></td>
</tr>
<tr> 
<td colspan="2"><p align="center"><br>
  <input type="submit" name="Submit" value="ตกลง">
  &nbsp;
  <input type="reset" name="Submit2" value="ยกเลิก">
  </p>
  </td>
</tr>
</table>
</form>

จากด้านบนตัวสีแดงเป็นการเปิดคำสั่ง session ให้เริ่มทำงาน ส่วนโค้ดอื่น ๆ ก็เป็นโค้ด form สำหรับ login ธรรมดา ๆ
2. สร้างฐานข้อมูลเพื่อจัดเก็บข้อมูลรหัสผู้ใช้งาน และรหัสผ่าน ซึ่งในที่นี้ผมใช้ MS Access ในการจัดเก็บ
3. สร้าง code php เพื่อใช้ในการตรวจสอบว่าข้อมูลรหัสผู้ใช้งาน และรหัสผ่านที่ผู้ใช้งานกรอกมาตรงกับฐานข้อมูลที่มีอยู่หรือไม่ ดูตัวอย่าง code check.php ด้านล่างเลยครับ

<?php
ob_start();
session_start();
$dsn = "login"; // กำหนดชื่อ DSN
$user_name =""; // กำหนดชื่อล็อกอิน
$pass_word =""; // กำหนดรหัสผ่าน

$connect = odbc_connect($dsn, $user_name, $pass_word) or die("ติดต่อ DSN ไม่ได้");

$sql = "SELECT user.team, *
FROM [user]
WHERE (((user.username)='$user') AND ((user.password)='$pass'))";
$exec = odbc_exec($connect, $sql); // เริ่มเอ็กซิคิวต์คำสั่ง SQL
$num_rows = odbc_result($exec, 1); // ตัวแปรจำนวนเรกคอร์ด

if(empty($num_rows)) 
{
echo"<br><center>user หรือ password ไม่ถูกต้อง</center></br>";
}
else
{
session_start();
$_SESSION[id]=session_id();
$_SESSION[username]=$user;
header('location:main1.php');
}
odbc_close($connect); // ปิดการเชื่อมต่อ
?>

จาก code จะมีลักษณะการทำงานคือ เมื่อตรวจสอบข้อมูลกับฐานข้อมูลแล้ว หากไม่มีผู้ใช้งานนี้ในฐานข้อมูลก็จะมีข้อความเตือนขึ้นมา แต่ถ้ามีข้อมูลในฐานข้อมูลก็จะเรียกใช้งาน session เพื่อเก็บข้อมูล sess_id และ username ไว้ในเครื่องเพื่อนำมาเรียกใช้งานครั้งต่อไป และเมื่อเก็บแล้วก็ให้ไปที่หน้าหลักของระบบต่อไป
4. การป้องกันการเข้าหน้าหลักโดยไม่ได้ผ่านการ login ซึ่งจำเป็นที่จะต้องใส่ code php นี้ในทุกหน้าที่เรามี หากไม่ได้ login เมื่อเข้ามาก็จะกลับไปหน้า login อีกครั้ง ตัวอย่างด้านล่างครับ

<?
session_start();
$sess_id=$_SESSION[id];
$sess_username=$_SESSION[username];
if ($sess_id<>session_id() or $sess_username=="")
{
echo "กรุณา Login ";
echo "<meta http-equiv=\"refresh\" content=\"3;URL=login.php\" target=mainFrame\">";
exit();
}
?>

5. หลังจากการใช้งานระบบทุกครั้งจะต้อง logout ออกทุกครั้ง เพื่อเป็นการล้าง session ออกจากความจำของเครื่องเพื่อป้องกันคนอื่นมาใช้งานเครื่องเราต่อ ตัวอย่างโค้ด logout.php ด้านล่างเลยครับ

<?php
session_start();
session_destroy();
header("Location: login.php");
?>

ลองนำไปประยุกต์ใช้กันน่ะครับ

Read more >>

23 ก.ค. 2555

PHP กับการทำ form login อย่างง่าย

บทความนี้จะขออธิบายเรื่องของการทำระบบ login โดยใช้ภาษา php ในการเขียนโค้ด php ซึ่งการทำระบบ login ส่วนใหญ่จะใช้ในกรณีที่เราทำระบบขึ้นมาระบบหนึ่งแล้วต้องการให้ผู้ใช้งาน login เข้าระบบทุกครั้งที่เข้าใช้งาน เพื่อป้องกันข้อมูล หรือแสดงตัวตนของผู้ใช้งานก่อน สำหรับหลักการก็ง่าย ๆ ครับ คือ
          1. ทำ form login ขึ้นมา form หนึ่ง เพื่อให้ผู้ใช้งานกรอกข้อมูล หน้าตาก็จะง่าย ๆ ละกันส่วนโค้ดก็ด้านล่างเลย
ตัวอย่าง code ชื่อไฟล์ login.php

<form name="form1" method="post" action="bcheck.php">
      <table width="300" height="27" border="0" align="center" cellpadding="0" cellspacing="10">
<tr>
<td>รหัสผู้ใช้งาน</td>
<td>
  <div align="center">
    <input type="text" name="user">
  </div></td>
</tr>
<tr>
<td>รหัสผ่าน</td>
<td>
  <div align="center">
    <input type="password" name="pass">
  </div></td>
</tr>
<tr>
<td colspan="2"><p align="center"><br>
  <input type="submit" name="Submit" value="ตกลง">
  &nbsp;
  <input type="reset" name="Submit2" value="ยกเลิก">
  </p>
  </td>
</tr>
</table>
</form>

          2. ให้จัดทำฐานข้อมูลเพื่อจัดเก็บรหัสผู้ใช้งาน และรหัสผ่าน ในบทความนี้ผมใช้ MS Access เป็นฐานข้อมูลน่ะครับ
          3. สร้างโค้ดเพื่อตรวจสอบข้อมูลจากฐานข้อมูล ซึ่งผมใช้โค้ด php ในการตรวจสอบ วิธีตรวจสอบก็คือ เมื่อผู้ใช้งานกรอกรหัสผู้ใช้งาน และรหัสผ่าน พอกดตกลงแล้วให้ไปที่หน้า check.php เพื่อตรวจสอบว่ามีข้อมูลในฐานเราหรือเปล่าถ้าไม่มีก็ให้มีข้อความเตือนขึ้นมา แต่ถ้ามีก็ให้ไปหน้าหลักของระบบ ตัวอย่างโค้ดก็ด้านล่างครับ

<?php
$dsn = "login";// กำหนดชื่อ DSN
$user_name ="";// กำหนดชื่อล็อกอิน
$pass_word ="";// กำหนดรหัสผ่าน
$connect = odbc_connect($dsn, $user_name, $pass_word) or die("ติดต่อ DSN ไม่ได้");
$sql = "SELECT * FROM user where username = '$user' and  password = '$pass' ";
$exec = odbc_exec($connect, $sql);// เริ่มเอ็กซิคิวต์คำสั่ง SQL
$Num_fields = odbc_num_fields($exec);// ตัวแปรจำนวนฟิลด์
$sql_count = "SELECT Count(user.username) AS CountOfusername
FROM [user]
WHERE (((user.username)='$user') AND ((user.password)='$pass'))";
$exec_count = odbc_exec($connect, $sql_count);// เริ่มเอ็กซิคิวต์คำสั่ง SQL
$num_rows = odbc_result($exec_count, 1);// ตัวแปรจำนวนเรกคอร์ด
if(empty($num_rows))
{
echo"<br><center>user หรือ password ไม่ถูกต้อง</center></br>";
}
else
{
echo "<meta http-equiv=\"refresh\" content=\"3;URL=check.php\" target=_self\">";
}
odbc_close($connect);// ปิดการเชื่อมต่อ
?>

ลองนำไปใช้ดูน่ะครับมีปัญหาก็ถามได้ครับ ไว้คราวหน้าผมจะเอาโค้ด php ในการ login อีกแบบหนึ่งมาให้ดูซึ่งจะซับซ้อนกว่าและมีการป้องกันความปลอดภัยกว่าที่ดีกว่า
Read more >>

20 ก.ค. 2555

การทำ form ให้เลือกที่ radio buttom ก่อนถึงจะใส่ข้อมูลใน text field ได้

ใครเคยเขียนโค้ด php ทำ form ที่ให้ผู้ใช้งานบันทึกข้อมูลแล้วมีให้เลือกตรง radio buttom ไหมครับ แล้วเคยเจอปัญหาไหมว่าบางครั้งเราทำทั้ง radio buttom และ text field ในตัวเลือกเดียวกัน แต่ผู้ใช้งานบางคนเลือกแค่ radio buttom แต่ไม่ใส่ข้อมูลใน text field บางคนใส่ข้อมูลใน text field แต่ไม่เลือก radio buttom แล้วเราจะมีวิธีเขียน code ป้องกันยังไง ลองอ่านบทความนี้ดูครับ ก่อนอื่นดูรูปด้านล่างครับเพื่อจะได้ไม่งงกัน

คราวนี้มาดูโค้ดตัวอย่างกันครับ

<body>
<form id="form" name="form" method="post" action="add1.php" >
  <table width="100%" border="2" cellpadding="10" cellspacing="0" bordercolor="#000099">
    <tr>
      <td><strong>การดำเนินการ</strong><br />
        <input name="case1" type="radio" id="rdo2" onclick="document.form.case11.disabled=true;" value="กรณีที่ 1" />
        กรณีที่ 1
        <br />
        <input name="case1" type="radio" id="rdo3" onclick="document.form.case11.disabled=true;" value="กรณีที่ 2" />
        กรณีที่ 2<br />
        <input name="case1" type="radio" id="rdo4" onclick="document.form.case11.disabled=true;" value="กรณีที่ 3" />
        กรณีที่ 3<br />
        <input name="case1" type="radio" id="rdo5" onclick="document.form.case11.disabled=false;" value="อื่นๆ" />
        อื่น ๆ โปรดระบุ 
      <input  type="text" id="case11" size="60"  name="case11" disabled /></td>
    </tr>
  </table>
  <br />
  <p align="center">
    <input type="submit" name="Submit" value="บันทึก" />
    &nbsp;
    <input type="reset" name="Submit2" value="ยกเลิก" />
  </p>
</form>
</body>

จากโค้ดตัวคำสั่งหลักที่สำคัญก็คือตัวหนังสือสีแดงที่ใช้ onclick เข้ามาช่วย หลักการง่าย ๆ คือถ้าเราเลือกที่ช่อง กรณี 1 - กรณี 3 ช่อง อื่น ๆ โปรดระบุ ก็จะเป็น disabled แต่ถ้าเลือกที่ช่อง อื่นๆ ช่อง อื่น ๆ โปรดระบุ ก็จะเป็น abled ลองนำไปประยุกต์ใช้ดูน่ะครับ หวังว่าโค้ดตัวนี้คงเป็นประโยชน์กับทุกคน



Read more >>

19 ก.ค. 2555

การทำ jump menu เพื่อเปิดหน้าต่างใหม่


บทความ php นี้ขอพูดถึง jump menu ซึ่งเชื่อว่าหลายคนเคยใช้มากันบ้านแล้ว แต่เคยสงสัยหรือมีปัญหากันบ้างไหมว่าทำไมพอเวลาเลือกรายการใน jump menu เพื่อเปิดหน้าต่างใหม่นั้น มันจะเปิดแบบ target เป็นแบบ _blank ซึ่งบางครั้งมันจะไม่ค่อยสะดวกต่อการใช้งาน มันจะเปิดแบบ target เป็นแบบ _self ได้ไหม ก็ต้องได้สิครับเรามาดูโค้ดปกติก่อนนะครับ ผมขอเป็นแบบโค้ด php น่ะ


<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874" />
<title>Untitled Document</title>
<script type="text/JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}
//-->
</script>
</head>

<body>
<form name="form1" id="form1">
  <select name="menu1" onchange="MM_jumpMenu('parent',this,0)">
   <option selected="selected">ระบุ</option>
        <option value="http://www.google.com">google</option>
  </select>
</form>
</body>

จาก code ด้านบนที่เป็นตัวสีแดงจะเป็นการทำงานในส่วนของการเปิดหน้าต่างใหม่ เราก็แก้ไขเป็นโค้ดด้านล่างนี้แทน
onchange="window.open(this.options[this.selectedIndex].value,'_blank')"
คราวนี้เราก็จะได้ jump menu ที่เปิดหน้าต่างใหม่เป็นแบบ _self แล้วครับ

Read more >>

27 มิ.ย. 2555

Google Maps api v2 - การนำพิกัดจากฐานข้อมูลมาแสดงบน Google Map

บทความนี้มาต่อไนเรื่องของ Google Map api v2 จากที่เคยกล่าวถึงในเรื่องของ Google Maps api v2 - การเชื่อมต่อฐานข้อมูล เพื่อแปลง Mysql ให้เป็นไฟล์ Xml เพื่อใช้ในการสร้าง Marker บนแผนที่ มาแล้ว บทความนี้จะเป็นการนำ Marker มาแสดงผลบน Google Map ซึ่งเป็นการนำพิกัดที่ได้เก็บไว้มาแสดงผลเป็น Marker และ sidebar (แถบแสดงข้อมูลบนแผนที่) คำสั่งจะอยู่ในรูปของโค้ดด้านล่างครับ


GDownloadUrl("phpsqlajax_markers.php", function(data) {
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("marker");
var sidebar = document.getElementById('sidebar');
sidebar.innerHTML = '';
if (markers.length == 0) {
sidebar.innerHTML = 'No results found.';
return;
}
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute("name");
var address = markers[i].getAttribute("address");
var type = "cross";
var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var marker = createMarker(point, name, address, type);
map.addOverlay(marker);
var sidebarEntry = createSidebarEntry(marker, name, address);
sidebar.appendChild(sidebarEntry);
bounds.extend(point) ;
}
});
}

function createMarker(point, name, address, type) {
var marker = new GMarker(point, customIcons[type]);
var html = "<b>ชื่อสถานที่ : " + name + "</b> <br/>ที่อยู่ : " + address;
GEvent.addListener(marker, 'click', function() {
marker.openInfoWindowHtml(html);
}); return marker;
}

function createSidebarEntry(marker, name, address) {
var div = document.createElement('div');
var html = "<b>ชื่อ : " + name + "</b> <br/>ที่อยู่ : " + address ;
div.innerHTML = html;
div.style.cursor = 'pointer';
div.style.marginBottom = '5px';
GEvent.addDomListener(div, 'click', function() {
GEvent.trigger(marker, 'click');
});
GEvent.addDomListener(div, 'mouseover', function() {
div.style.backgroundColor = '#eee';
});
GEvent.addDomListener(div, 'mouseout', function() {
div.style.backgroundColor = '#fff';
});
return div;
}

จากโค้ดตัวอย่างนี้จะทำการโหลดข้อมูลจากบทความGoogle Maps api v2 - การเชื่อมต่อฐานข้อมูล เพื่อแปลง Mysql ให้เป็นไฟล์ Xml เพื่อใช้ในการสร้าง Marker บนแผนที่"  ขึ้นมาเพื่อทำการสร้าง Marker ขึ้นมาบนแผนที่ โดยข้อมูลจะถูกสร้างขึ้นมาและเก็บไว้ที่ตัวแปล sidebar เพื่อเก็บไว้ใช้แสดงข้อมูล โดยคำสั่ง for (var i = 0; i < markers.length; i++) จะทำการวนลูปสร้าง พิกัดขึ้นมาจนครบ และดึงข้อมูล name(ชื่อ), address(ที่อยู่), type(รูปแบบmarkerที่ให้แสดง) และ point(พิกัด) เพื่อสำหรับเรียกใช้งานการแสดงผลของฟังชั้น createMarker
function createMarker เพื้อใช้ในการแสดงผล Marker ออกมาด้วยคำสั่ง map.addOverlay(marker); และ 
function createSidebarEntry เพื้อสร้างการแสดงผลในส่วน body ของ Html เพื่อเรียกใช้งานได้้ให้ไปสู่พิกัดที่เก็บไว้ได้ทันที่เมื่อเลือก เขียนไปเขียนมาก็งงลองโหลดตัวอย่างไปดูล่ะกันครับ
Read more >>

26 มิ.ย. 2555

code php กับการทำ dropdownlist 2 ขั้นอย่างง่าย

บทความ โค้ด php บทความนี้จะเกี่ยวกับการทำ dropdownlist แบบ 2 ชั้น ยกตัวอย่างเช่น ถ้าเราเลือกรายการใน listbox หลักแล้วใน listbox ย่อยก็จะแสดงรายการที่เกี่ยวข้องกับ listbox หลักขึ้นมานั่นเอง  คิดว่าคงมีหลายคนเคยใช้ หรือเคยค้นหาวิธีการทำอยู่บ้างโค้ดที่นำมานี้จะเป็นการใช้ภาษา php ในการเขียน และเชื่อมโยงฐานข้อมูลกับ MS Access แต่ก็สามารถนำไปประยุกต์ใช้กับฐานข้อมูล Sql ได้น่ะครับ ก็ลองนำโค้ดไปปรับแต่งดู
ตัวอย่าง Code php


       <script>
function submit_click(obj,s)
{
if(s=='a' & document.form_test.a.value!='<?=$a?>')
{
document.form_test.b.value="";
obj.action="";
obj.submit();
}

else if(s=='b' & document.form_test.b.value!='<?=$b?>')
{
obj.action="";
obj.submit();
}
}
      </script>
 
<form name="form_test" method="post" action="insert.php">
  <table width="50%" border="2" align="center" cellpadding="0" cellspacing="0" bordercolor="#3366CC">
    <tr>
      <td width="40%"><div align="left"><strong>เลือกประเภทหลัก </strong>&nbsp;&nbsp;&nbsp;&nbsp;</div></td>
      <td><select name="a" onChange="submit_click(this.form,'a')" >
        <option value="<?=$a?>">
        <? if($a){echo"$a";}else if(!$a){echo"- เลือกประเภทหลัก -";}?>
        </option>
        <?
$dsn = ""; // กำหนดชื่อ DSN
$user =""; // กำหนดชื่อล็อกอิน
$pass =""; // กำหนดรหัสผ่าน
$connect = odbc_connect($dsn, $user, $pass) or die("ติดต่อ DSN ไม่ได้"); // เริ่มติดต่อฐานข้อมูล
$sql = "SELECT other.total AS a
FROM other
GROUP BY other.total;
 ";// กำหนดคำสั่ง SQL เพื่อแสดงข้อมูล
$exec = odbc_exec($connect, $sql); // เริ่มเอ็กซิคิวต์คำสั่ง SQL
While (odbc_fetch_row($exec4)) // ดึงข้อมูลเรกคอร์ดที่
{
$a1 = odbc_result($exec, "a");
?>
        <option value="<?=$a1?>">
        <?=$a1?>
        </option>
        <? } ?>
      </select></td>
    </tr>
    <tr>
      <td width="40%"><div align="left"><strong>เลือกประเภทย่อย</strong> &nbsp;&nbsp;&nbsp;&nbsp;</div></td>
      <td><select name="b" onChange="submit_click(this.form,'b')" >
        <option value="<?=$b?>">
        <? if($b){echo"$b";}else if(!$b){echo"- เลือกประเภทย่อย -";}?>
        </option>
        <?
$sql1 ="SELECT other.form AS b
FROM other
GROUP BY other.total, other.form
HAVING (((other.total)='$a'));
 ";// กำหนดคำสั่ง SQL เพื่อแสดงข้อมูล
$exec1 = odbc_exec($connect, $sql1); // เริ่มเอ็กซิคิวต์คำสั่ง SQL
While (odbc_fetch_row($exec1)) // ดึงข้อมูลเรกคอร์ดที่
{
$b1 = odbc_result($exec1, "b");
?>
        <option value="<?=$b1?>">
        <?=$b1?>
        </option>
        <? } ?>
      </select></td>
    </tr>
    <tr>
      <td colspan="2"><div align="center">
        <input type="submit" name="Submit" value="บันทึก">
        &nbsp;
        <input name="btnClear" type="reset" id="btnClear" value="Clear" onClick="clsControlObject('form_test','clear')" />
      </div></td>
    </tr>
  </table>
</form>

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

Read more >>

22 มิ.ย. 2555

Google Maps api v2 - การบันทึกข้อมูลลงฐานข้อมูล

หลังจากที่ศึกษา โค้ด php เกี่ยวกับ Google Maps api v2 มาแล้ว วันนี้เรามาต่อในเรื่องของการบันทึกข้อมูลลงฐานข้อมูล ซึ่งมีวิธีทำหลัก ๆ อยู่ 2 วิธีคือ
1.ส่งค่าละติจูต และ ลองติจูต ไปอีกหน้าเพื่อกรอกข้อมูลที่เหลือเแล้วค่อยทำการบันทึกข้อมูล
2.บันทึกการกรอกข้อมูลจากหน้าแสดงแผนที่ 
เรามาเริ่มดู code กันเลยครับ เริ่มจากการสร้างฐานข้อมูลเป็นอันดับแรกโค้ดด้านล่างเลยครับ

CREATE TABLE `markers` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 60 ) NOT NULL ,
`address` VARCHAR( 80 ) NOT NULL ,
`lat` FLOAT( 10, 6 ) NOT NULL ,
`lng` FLOAT( 10, 6 ) NOT NULL ,
`type` VARCHAR( 30 ) NOT NULL
) ENGINE = MYISAM ;

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

code php

<?php
$lat = $_GET["lat"];
$lng = $_GET["lng"];
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>เพิ่มข้อมูลฟาร์มไก่</title>
<style type="text/css">
<!--
body {
background-image: url(picture/page1952.jpg);
}
-->
</style></head> <link href="style.css" rel="stylesheet" type="text/css">
<body>
<form action="ex_7c.php" method="get">
<table width="442" height="0" border="0" align="center" cellpadding="2">
<tr>
<td width="143" align="right" valign="top">ชื่อ</td>
<td width="300" valign="top"><div align="left" >
<input type="text" name="fname" value= ""/>
</div></td>
</tr>
<tr>
<td align="right" valign="top">ประเภท</td>
<td valign="top">
</span>
<label>
<input name="type" type="radio" value="เปิด" checked>
เปิด</label>
<label>
<input name="type" type="radio" value="ปิด">
ปิด</label></td>
</tr>
<tr>
<td align="right" valign="top">ที่อยู่</td>
<td valign="top"><div align="left">
<textarea name="faddress" cols="30" rows="10" class="textarea" >Address</textarea>
</div></td>
</tr>
<tr>
<td align="right" valign="top">ละติจูต</td>
<td valign="top"><div align="left">
<input type="text" name="flat" value=<? echo $lat ?> />
</br>
</div></td>
</tr>
<tr>
<td align="right" valign="top">ลองติจูต</td>
<td valign="top"><div align="left">
<input type="text" name="flng" value=<? echo $lng ?> />
</br>
</div></td>
</tr>
<tr>
<td colspan="2" align="center"><div align="center">
<input type="submit" name="button" value="ทำการเพิ่มรายชื่อฟาร์ม" />
</div></td>
</tr>
</table>
</form>
</body>
</html>

และสุดท้าย ให้สร้างหน้าไฟล์เพื่อทำการบันทึกข้อมูลลง Mysql

code php

<?php require("phpsql_dbinfo.php");
$con =mysql_connect ($hostname, $username, $password);
mysql_query("SET NAMES UTF8",$con);
if (!$con) { die('ติดต่อฐานข้อมูลไม่ได้: ' . mysql_error());
}
mysql_select_db($database, $con);
$sql = mysql_query("INSERT INTO markers (name, address, type, flat, flng)
VALUES('$_GET[name]','$_GET[address]','$_GET[type]',$_GET[flat],$_GET[flng]) ");
?>
<div align="center">
<p><label></label>&nbsp; </p>
<table width="200" border="0">
<tr>
<td><div align="center"> บันทึกข้อมูลเรียบร้อย </a></div></td>
</tr>
</table>
<p>&nbsp;</p>
</div>

***หมายเหตุ การส่งข้อมูลไปเก็บทีื่่ Mysql และการเรียกใช้ข้อมูลจาก Mysql ที่เป็นภาษาไทยไม่ให้ภาษาผิดเพี้ยนให้ใส่tagคำสั่ง
mysql_query("SET NAMES UTF8",$con); ลงไปหลังคำสั่งเชื่อมต่อ mysql_connect

****และต้องกำหนดตัวอักษรของฐานข้อมูลเป็นประเภท UTF8 เท้านั้น (จะเป็นUTF8แบบใหนก็ได้)  
Read more >>

7 มิ.ย. 2555

Google Maps api v2 - การเชื่อมต่อฐานข้อมูล เพื่อแปลง Mysql ให้เป็นไฟล์ Xml เพื่อใช้ในการสร้าง Marker บนแผนที่


ในบทความนี้จะเป็นการนำฐานข้อมูลของเราที่มีการเก็บพิกัดไว้ มาใช้ร่วมกับ Google map api v2 โดยใช้ภาษา php การเขียนคำสั่งของโค้ด php นั้นเพื่อความสะดวกในการใช้งานควรจะสร้างไฟล์เชื่อมต่อ Mysql แยกไว้ 1 ไฟล์โดยสมมุติว่าชื่อ phpsql_dbinfo.php เมื่อต้องการใช้ก็ให้ทำการ require("phpsqlinfo_dbinfo.php"); โดยประกาศตัวแปลดังนี้ (สมมุติว่าใช้บน localhost)

code php ไฟล์ phpsql_dbinfo.php

$username="(ปกติรันบนlocalhostมักจะเป็นคำว่า  root)";
$password="(ใส่ตามที่ตั้งไว้)";
$database="(ใส่ชื่อฐานข้อมูล)";
$hostname  = "(ปกติรันบนlocalhostก็ใช้คำว่าlocalhost)";
?>

จากนั้นสำหรับการเปลี่ยนจากฐานข้อมูล Mysql ให้เป็น Xml (โดยในที่นี้คือไฟล์ phpsqlajax_markers.php ซึ่งจะถูกเรียกใช้ในตัวอย่างต่อๆไป)

code php phpsqlajax_markers.php

<?php
require("phpsqlinfo_dbinfo.php");

function parseToXML($htmlStr)
{
$xmlStr=str_replace('<','&lt;',$htmlStr);
$xmlStr=str_replace('>','&gt;',$xmlStr);
$xmlStr=str_replace('"','&quot;',$xmlStr);
$xmlStr=str_replace("'",'&#39;',$xmlStr);
$xmlStr=str_replace("&",'&amp;',$xmlStr);
return $xmlStr;
}

$connection=mysql_connect ($hostname, $username, $password);
mysql_query("SET NAMES UTF8",$connection);
if (!$connection) {
die('Not connected : ' . mysql_error());
}

$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
die ('Can\'t use db : ' . mysql_error());
}

$query = "SELECT * FROM markers WHERE 1";
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}

header("Content-type: text/xml");

// Start XML file, echo parent node
echo '<markers>';
// Iterate through the rows, printing XML nodes for each
while ($row = @mysql_fetch_assoc($result)){
// ADD TO XML DOCUMENT NODE
echo '<marker ';
echo 'name="' . parseToXML($row['name']) . '" ';
echo 'address="' . $row['address'] . '" ';
echo 'lat="' . $row['lat'] . '" ';
echo 'lng="' . $row['lng'] . '" ';
echo 'type="' . $row['type'] . '" ';
echo '/>';
}

// End XML file
echo '</markers>';
?>

จากตัวอย่างจะเห็นได้ว่าเมื่อเชื่อมต่อแล้วประกาศ header("Content-type: text/xml");แล้วก็จะสามารถใส่เงื่อนไขการแสดงข้อมูลออกมาได้ตามควมต้องการ
***หมายเหตุ การส่งข้อมูลไปเก็บทีื่่ Mysql และการเรียกใช้ข้อมูลจาก Mysql ที่เป็นภาษาไทยไม่ให้ภาษาผิดเพี้ยนให้ใส่ tag คำสั่ง mysql_query("SET NAMES UTF8",$con); ลงไปหลังคำสั่งเชื่อมต่อ mysql_connect
****และต้องกำหนดตัวอักษรของฐานข้อมูลเป็นประเภท UTF8 เท้านั้น(จะเป็น UTF8 แบบใหนก็ได้)

ดังนั้นในตอนนี้เราก็จะได้ข้อมูลที่แปลงจากฐาน mysql เป็น xml ได้แล้ว ในบทความต่อไปผมจะนำตัวอย่างของโค้ด php ที่นำข้อมูล xml ไปแสดงบน google map api v2 ครับ
Read more >>

5 มิ.ย. 2555

Google Maps api v2 - การสร้างและปรับแต่ง Marker

วันนี้เราต่อเรื่อง Google Maps API V2 หลังจากที่หายไปนาน ใครลืมไปแล้วเข้าไปดูเรื่องเก่าได้ ที่นี่ โค้ดตัวนี้จะเป็นในเรื่องของการสร้างและปรับแต่ง Marker ด้วยการคลิกบนแผนที่ ผมขอใช้ภาษา php ในการเขียนโค้ด php น่ะครับ โค้ดคำสั่งในการเรียกใช้งานคือ


GEvent.addListener(map, "click", function(marker, point) {
map.addOverlay(new GMarker(point));});

map.addOverlay(new GMarker(point)); คือคำสั่งในการสร้าง Marker sซึ่งเราสามารถปรับแต่ งMarkers ได้เองดังตัวอย่าง

var icongreen = new GIcon();
icongreen.image = 'http://newsirius13.thport.com/picture/c003.png';
icongreen.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
icongreen.iconSize = new GSize(20, 22);
icongreen.shadowSize = new GSize(1, 1);
icongreen.iconAnchor = new GPoint(12, 8);
icongreen.infoWindowAnchor = new GPoint(5, 1);

GEvent.addListener(map, "click", function(marker, point) {
map.addOverlay(new GMarker(point, icongreen));});

ในตัวอย่างนี้จำทำการสร้างตัวแปลขึ้นมา1ตัว ชื่อ icongreen เพื่อเก็บการตั้งค่าต่างๆของ Markers และเรียกใช้โดยให้ใส่ตัวแปลลงไปในคำสังสร้างMarkerนั้นคือ new GMarker(point, "ใส่ตัวแปลที่ต้องการ (ในตัวอย่างคือicongreen)") ก็จะได้ Markersตามรูปแบบที่เราได้ปรับแต่งตามต้องการ

ส่วนอันนี้เป็นตัวอย่างการใช้งานทั้งหมดน่ะครับ

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>newsirius13</title>

    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=ABQIAAAAKaJQ6galA0QmFhNdQzYuwRQnaT__a1y-hZdnJBN4Ggj_4W3wVRTkKlGxp0EJvRTbiAqcn-FCYSTDog"
            type="text/javascript"></script>

    <script type="text/javascript">

    var icongreen = new GIcon(); 
    icongreen.image = 'http://newsirius13.thport.com/picture/c003.png';
    icongreen.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
    icongreen.iconSize = new GSize(20, 22);
    icongreen.shadowSize = new GSize(1, 1);
    icongreen.iconAnchor = new GPoint(12, 8);
    icongreen.infoWindowAnchor = new GPoint(5, 1);

   function initialize() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map_canvas"));
        map.setCenter(new GLatLng(13.8196,100.0601), 7);


GEvent.addListener(map, "click", function(marker, point) {
map.addOverlay(new GMarker(point, icongreen));});

        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());

      }
    }

    </script>
  </head>
  <body onload="initialize()" onunload="GUnload()">
    <div id="map_canvas" style="width: 800px; height: 500px"></div>
  </body>
</html>

ให้กดคลิกบนแผนที่จะทำการสร้างMarker ขึ้นมา
Read more >>