2/10/2559

การเขียน android เชื่อมต่อ sqllite

ในระบบปฎิบัติการ Android นั้นจะมีฐานข้อมูล SQLite ติดมากับระบบปฎิบัติการ แล้ว หากเราต้องการพัฒนา Application ที่มีการใช้งานฐานข้อมูล เราสามารถเขียนโปรแกรมเพื่อใช้  SQLite บนระบบบปฎิบัติการ Android ได้ดังนี้


//สร้าง class ชื่อว่า  DbSQLite  โดยสืบทอดมาจาก SQLiteOpenHelper
public class DbSQLite extends SQLiteOpenHelper
{
    private String dbName="";//property ชื่อ database 
    private String sql="";//คำสั่ง sql ที่ต้องการให้ทำงาน

  //สร้าง constructor ให้กับ class 
    public DbSQLite(Context context, String dbName, SQLiteDatabase.CursorFactory factory, int version,String sql)
  {
        super(context,dbName,factory,version);
       this.dbName = dbName;//กำหนด database name ให้กับ object
       this.sql=sql;//กำหนด คำสั่ง sql ที่ต้องการให้ทำงาน

    }
 
    //Method สำหรับ รันคำสั่ง sql select โดยจะ return เป็น array  2 มิติตามคำสั่ง sql ที่ส่งมา
    public String[][] get_table()
    {
        SQLiteDatabase myDb=this.getReadableDatabase();
        Cursor c=myDb.rawQuery(this.sql, null);
        String re_str[][]=new String[0][0];
        if(c!=null)
        {
            int row_count=0;
            re_str=new String[c.getCount()][c.getColumnCount()];
            if(c.moveToFirst()){
                //สร้าง array 2 มิติ จากคำสั่ง sql เพื่อส่งค่ากลับ
                do{

                    int i;
                    for(i=0;i<c.getColumnCount();i++) //วน loop Column  ที่ได้จากคำสั่ง sql
                    {
                        re_str[row_count][i]=c.getString(i);
                    }

                    row_count++;

                }while(c.moveToNext()); //วน loop แถวข้อมูล ที่ได้จากคำสั่ง sql

            }
        }

        c.close();
        myDb.close();
        return re_str;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

    }

   //Method สำหรับ รันสำสั่ง create table,insert, delete, update
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
    {
        db.execSQL(this.sql);
    }
}

ตัวอย่างการใช้งาน Class DbSQLite

การสร้างตาราง 

//สร้างคำสั่ง sql ที่ต้องการ String sql="CREATE TABLE IF NOT EXISTS user" +
                "(" +
                "user_id integer primary key autoincrement," +
                "username text," +
                "password text"+
                ")";

SQLiteDatabase sqlite;
//ส่งคำสั่ง sql ให้ sqlite โดย class DbSQLite
DbSQLite db = new DbSQLite(this," ชื่อ Database ",null,1,sql);
sqlite = db.getWritableDatabase();
db.onUpgrade(sqlite,1,1);//ให้ sqlite ทำงานตามคำสั่ง sql ที่ส่งไป


การอ่านข้อมูลจากตาราง

//สร้างคำสั่ง SQL
String sql="SELECT * FROM user ";
//สร้าง object จาก class  DbSQLite เพื่ออ่านข้อมูลจาก Database และ ส่ง คำสั่ง SQL ให้  SQL Lite
DbSQLite  db = new DbSQLite(this,"MyDressMakerShop",null,1,sql);
String[][] user =db.get_table();//รับผลลัพธ์เป็น Array 2 มิติ ตามคำสั่ง sql








1/13/2559

ขั้นตอนการขอ key สำหรับการใช้งาน google map api

สำหรับการพัฒนา Web Application ที่ต้องการ ใช้งาน google map api นั้น เราต้องมีการของ key เพื่อที่จะเรียกใช้งาน javascript library ของ google map ได้


<script src="https://maps.googleapis.com/maps/api/js?key= " key ที่ต้องใส่ " &sensor=false"type="text/javascript">
</script>


ซึ่งนั้นตอนในการให้ได้มาซึ่ง Key มีดังนี้

1.  login เข้า google account


2. เข้าไปที่ console.developers.google.com



3. เลือก API project ด้านบนขวา แล้วเลือก Create Project



4. ตั้งชื่อ Project ว่า My Project



5.  เลือกบาร์ด้านบนซ้าย



6. เลือก  API Manager



7.  เลือก google map api javascript api ตรงกลาง



8. เลือก Enable API


9. เลือก Credential



10 . เลือก API Key



11.  เลือก Server Key



12. ตั่งชื่อ Key ว่า Server Key 1 แล้วกด Create


13. ได้ Key สำหรับ google map api ตามที่ต้องการ





12/22/2558

How to remove blue shadow in jquery mobile


แก้ปัญหา เงาใน jquery mobile เพื่อให้ mobile web application มีความเป็น native มากขึ้น

Are you  using jquery mobile to make mobile app like native mobile app ?
And are you trying to remove " the blue shadow " which shown after you click at button or link element ?

Here is the solution

Just add   style=" box-shadow: 0 1px 3px   gray " 

in the link or button element

for example

<button data-icon="check">Blue Shadow</button>
<button  style=" box-shadow: 0 1px 3px gray "  data-icon="check">No Blue Shadow</button>

The result is


10/01/2558

เปลี่ยน textarea ธรรมดาให้เป็น rich text editor ที่มี toolbar สำหรับรูปแบบตัวอักษร

ใน HTML จะมี Element ที่ชื่อว่า textarea สำหรับกรอกข้อความยาวๆ แต่ปัญหาคือ เราไม่สามารถจัดการรูปแบบตัวอักษรใน Element textarea ได้ จำเป็นต้องใช้เครื่องมือเข้ามาช่วยในการสร้าง Element Textarea ให้มี toolbar ใน textarea ซ่งก็คือ tinymce นั่นเอง

ขั้นตอนการใช้งาน tinymce มีดังนี้

1. เรียกใช้งาน jquery และ tinymce

<!-- เรียกใช้งาน jquery -->
<script type="text/javascript" src="http://projectsoft.biz/js/jquery.js"></script>

<!-- เรียกใช้งาน tinymce -->
<script src="http://tinymce.cachefly.net/4.0/tinymce.min.js"></script>

2. สร้าง  Element Textarea

<textarea id="detail" name="detail" ></textarea>

3. พิมพ์คำสั่ง javascript เพื่อ สร้าง toolbar ให้ textarea
<script>

//สร้าง text editor
tinymce.init({
selector:'#detail ',//id ของ textarea ที่ต้องการสร้าง
height : 300,//กำหนดความสูงของ textarea
menubar: false,//ไม่แสดงเมนู
plugins: ["textcolor"],//ใช้ plugin ให้เปลี่ยนสีตัวอักษรได้
toolbar: ["undo redo | bold italic underline | styleselect | forecolor | alignleft aligncenter alignright |  bullist,numlist"],//กำหนดปุ่มใน toolbar
style_formats: [//กำหนดขนาดอักษร
{title: '11px', inline: 'span', styles: { fontSize: '11'}},
{title: '12px', inline: 'span', styles: { fontSize: '12'}},
{title: '14px', inline: 'span', styles: { fontSize: '14'}},
{title: '16px', inline: 'span', styles: { fontSize: '16'}},
{title: '18px', inline: 'span', styles: { fontSize: '18'}},
{title: '20px', inline: 'span', styles: { fontSize: '20'}},
{title: '22px', inline: 'span', styles: { fontSize: '22'}},
{title: '24px', inline: 'span', styles: { fontSize: '24'}}
],

});
</script>


และผลลัพธ์ที่ได้คือ



7/04/2558

ป้องการการ copy paste และ cut ด้วย jquery


การป้องกัน หรือการห้ามไม่ให้หน้าเว็บมีการ  copy paste และ cut นั้น เราสามารถใช้ jquery ช่วยได้ดังนี้


<script src="http://projectsoft.biz/js/jquery.js"></script><!--ให้ใช้งาน jquery ได้ -->

<!-- สร้าง text area ที่มี Id เป็น  my_txt-->
<textarea  id="my_txt" ></textarea>

<script>
  $(document).ready(function(){
 //เมื่อโหลดหน้าเว็บเสร็จ เราจะไม่ให้มีการ cut copy paste สำหรับ text area ที่มี Id เป็น  my_txt

       $('#my_txt').bind("cut copy paste",function(e) {
            e.preventDefault();
       });

 });
</script>

5/30/2558

แก้ปัญหาการตัด และนับ คำภาษาไทยใน PHP ด้วย iconv_strlen และ iconv_substr


ในภาษา PHP  เราใช้ function substr() เพื่อการตัดคำใน string และ function strlen()  เพื่อการหาจำนวนตัวอักษรใน string แต่เมื่อลองใช้ function  นี้กับภาษาไทยจะพบว่ามีปัญหา เราสามารถใช้


  • function  iconv_strlen เพื่อนับจำนวนตัวอักษร เช่น 
          echo  iconv_strlen("สวัสดี","UTF-8");  ผลลัพธ์ที่ได้คือ 6
  • function iconv_substr เพื่อตัด string เช่น 
           echo   iconv_substr("สวัสดี",1,2,"UTF-8");

          ผลลัพธ์ที่ได้คือ  "วั" เพราะ เริ่มต้นตัดอักษรตัวที่ 1 ( อักษรตัวแรกคือ 'ส' นับเป็นตัวที่ 0  )

จำไว้ว่า หากเราต้องการนับตัวอักษรภาษาไทย  หรือ ตัดคำภาษาไทยโดยใช้ PHP ให้ใช้ function iconv_strlen และ function iconv_substr เพื่อไม่ให้เกิดปัญหา


5/04/2558

การสร้าง textbox ที่พิมพ์ได้แต่เฉพาะภาษาอังกฤษ

สำหรับ  text box ที่ให้กรอก username หรือ password หากเราต้องการไม่ให้กรอกตัวอักษรเป็นภาษาไทยได้เราสามารถใช้ jquery ลบตัวอักษรที่เป็นภาษาอังกฤษใน text box ได้ดังนี้

//ให้ใช้งาน jquery ได้
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>

//สร้าง text box ที่มี id เป็น username และกำหนดให้ทำงานที่ function eng_only() เมื่อมีการเปลี่ยนข้อความ
<input type="text"  id="username" onchange="eng_only()" value="" />

<script type="text/javascript">

function eng_only() {
      var temp=$("#username").val();//เก็บข้อความที่พิมพ์ใน text box 
   
      temp=temp.toLowerCase();//เปลี่ยนให้ทุกตัวอักษรเป็น ตัวพิมพ์เล็ก
      
//วน loop แต่ละตัวอักษร เพื่อดูว่าแต่ละตัวอักษรเป็นภาษาไทย หรือภาษาอังกฤษ
for(i=0;i<temp.length;i++)
{
     
 if ((temp[i]=="a")||(temp[i]=="b")||(temp[i]=="c")||(temp[i]=="d")||(temp[i]=="e")||(temp[i]=="f")||(temp[i]=="g")||(temp[i]=="h")||(temp[i]=="i")||(temp[i]=="j")||(temp[i]=="k")||(temp[i]=="l")||(temp[i]=="m")||(temp[i]=="n")||(temp[i]=="o")||(temp[i]=="p")||(temp[i]=="q")||(temp[i]=="r")||(temp[i]=="s")||(temp[i]=="t")||(temp[i]=="u")||(temp[i]=="v")||(temp[i]=="w")||(temp[i]=="x")||(temp[i]=="y")||(temp[i]=="z")||(temp[i]=="z")||(temp[i]=="0")||(temp[i]=="1")||(temp[i]=="2")||(temp[i]=="3")||(temp[i]=="4")||(temp[i]=="5")||(temp[i]=="6")||(temp[i]=="7")||(temp[i]=="8")||(temp[i]=="9")||(temp[i]=="!")||(temp[i]=="@")||(temp[i]=="#")||(temp[i]=="$")||(temp[i]=="%")||
(temp[i]=="^")||(temp[i]=="&")||(temp[i]=="*")||(temp[i]=="(")||(temp[i]==")")||(temp[i]=="_")||(temp[i]=="+")||(temp[i]=="-")||(temp[i]=="=")||(temp[i]=="{")||(temp[i]=="}")||(temp[i]=="[")||(temp[i]=="]")||(temp[i]=="|")||(temp[i]=="/")||(temp[i]=="\"")||(temp[i]=="'")||(temp[i]==":")||(temp[i]==";")||(temp[i]=="<")||(temp[i]==">"))
 {
      
 }
 else
 {
     $("#username").val($("#username").val().replace(temp[i],""));//ลบตัวอักษรที่ไม่ใช่ภาษาอังกฤษออก
 }

}

    }

</script>