รวมเทคนิคต่าง ๆ ในการพัฒนาระบบ ที่น่าสนใจ รวมไว้ที่เดียว มีอะไรสอบถาม สามารถติดต่อผ่านช่องผ่าน Fanpage เราได้เลย

แสดงบทความที่มีป้ายกำกับ PHP แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ PHP แสดงบทความทั้งหมด

วันเสาร์ที่ 16 พฤษภาคม พ.ศ. 2563

แจก!!! PHP เลือก จังหวัด อำเภอ ตำบล ด้วย jQuery Ajax



กำลังบอกหาโค้ดสำหรับลือก จังหวัด อำเภอ ตำบล โดยไม่ต้อง Refresh หน้ากันอยู่ใช่รึป่าว วันนี้ Onlymycode เอา Code เลือก จังหวัด อำเภอ ตำบล ด้วย Jquery Ajax มาฝากกันจ้า


Download


เมื่อ Download เสร็จแล้วจะได้ไฟล์เหมือนในรูป โดยไฟล์ จะมีทั้งตัวอย่างฐานข้อมูล และไฟล์ตัวอย่างการใช้งาน jQeury Ajax ร่วมกับ Database ดังรูป




ตัวอย่างการใช้งาน jQuery Ajax เลือก จังหวัด อำเภอ ตำบล

ในการยกตัวอย่างการใช้งาน ผมจะขอนำเสนอในรูปแบบของการทำ jQuery Ajax รายชื่อจังหวัด อำเภอ ตำบล ของประเทศไทย (ลองใช้งานได้ ในกรอบด้านล่าง)




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

เริ่มที่ เรียกใช้งาน Javascript ใน Tag <header>....</header>
<script src="service/province.service.js" type="text/javascript"></script>

ส่วนนี้คือตัวอย่าง Code ในฝั่งของ HTML
<div class="container" style="margin-top: 25px;">
    <div class="row">
        <div class="col-lg-4">
            <label class="control-label">จังหวัด</label>
            <select class="form-control selectpicker" data-live-search="true" name="province" id="province" ></select>
        </div>
        <div class="col-lg-4">
            <label class="control-label">อำเภอ/เขต</label>
            <select class="form-control selectpicker" name="district" id="district" >
                <option value="">เลือก</option>
            </select>

        </div>
        <div class="col-lg-4">
            <label class="control-label">ตำบล/แขวง</label>
            <select class="form-control selectpicker" name="subdistrict" id="subdistrict">
                <option value="">เลือก</option>
            </select>
        </div>

    </div>
</div>

ตัวอย่าง Code ด้านบน เมื่อคุณทำการเรียกใช้งานไฟล์ js province.service.js พร้อมทั้งสร้าง Form ที่มี Field จังหวัด อำเภอ ตำบล Service จะทำให้ Form ของคุณเลือก จังหวัด อำเอภ ตำบล ได้เองแบบอัตโนมัติ

ข้อสำคัญ


id ของ Selectbox จะต้องเหมือนกับตัวอย่าง service ถึงจะทำงานได้นะครับ ^ ^


Share:

ลดขนาดไฟล์รูปภาพตอนอัพโหลด ด้วยเทคนิค Compress image PHP



วันนี้ Onlymycode มานำเสนอเทคนิคดี ๆ ที่ได้ใช้บ่อยอีกเทคนิคหนึ่ง นั้นก็คือการ Compress image file หรือที่ภาษาไทยเรียกว่า การลดขนาดรูปนั้นเอง ในวันนี้ทาง Onlymycode ขอนำเสนอเทคนิคอย่างง่ายก่อนนะครับ เพื่อง่ายสำหรับความเข้าใจ เผื่อท่านใดเป็นมือใหม่จะได้เข้าใจได้ ก่อนอื่น สามารถ Download ไปลองเล่นได้ ที่ปุ่มด้านล่าง


Download


ตัวอย่างหน้าจอ


ตัวอย่างการใช้งาน Code ลดขนาดไฟล์รูปภาพ Compress image PHP


Code HTML 


ส่วน Code HTML เป็นส่วนของหน้า Form Submit ธรรมดา ๆ + มี Dropdown เพื่อกำหนดค่า Quality ของรูปที่เราต้องการ Compress ทั้งนี้ คุณสามารถเพิ่มรายการเข้าไปได้เพิ่มเติมเช่น

<option value="95">95</option>
<option value="85" selected>85</option>

เป็นต้น
<div class="container" style="margin-top: 30px;">
    <div class="form-control" style="text-align: center">
        <div class="pre_view">
            <?php
            if(file_exists($location)){
                echo '<h1>Preview image</h1>';
                echo '<img src="'.$location.'"><br>';
                echo 'ลดขนาด จาก : '.round($fromSize / 1024, 2).'kb เป็น '.round($toSize / 1024, 2).'kb';
                echo '<hr>';
            }
            ?>
        </div>
        <form method='post' action='' enctype='multipart/form-data'>
            <label>คุณภาพรูป (Compress quality) :
                <select name="quality">
                    <option value="100">100</option>
                    <option value="90">90</option>
                    <option value="80" selected>80</option>
                    <option value="70">70</option>
                    <option value="60">60</option>
                    <option value="50">50</option>
                </select>
            </label>
            <br>
            <input type='file' name='imagefile' >

            <input type='submit' value='Upload' name='upload'>
        </form>
    </div>
</div>

Function Compress File (เอาไปวางไว้บรรทัดแรกที่ส่วนของ Body เว็บ)


ตัวอย่างด้านล่างนี้เป็นการ Copress File ด้วยภาษา PHP นะครับ จะเป็นรูปแบบ Submit Post ธรรมดาไม่ได้มี Event อะไรพิเศษแต่อย่างใด อธิบายให้คือเลือกไฟล์รูป กด Upload ก็สามารถอัพโหลดรูป + ลดขนาดไฟล์ได้เลย
<?php
$location = '';
if(isset($_FILES['imagefile']['name'])){
    // Getting file name
    $filename = $_FILES['imagefile']['name'];

    // Valid extension
    $valid_ext = array('png','jpeg','jpg');

    // Location
    $location = "images/".$filename;

    // file extension
    $file_extension = pathinfo($location, PATHINFO_EXTENSION);
    $file_extension = strtolower($file_extension);

    // Check extension
    if(in_array($file_extension,$valid_ext)){
        $fromSize = filesize($_FILES['imagefile']['tmp_name']);

        compressImage($_FILES['imagefile']['tmp_name'],$location,$_POST['quality']);
        $toSize = filesize($location);
    }else{
        echo "Invalid file type.";
    }
}

// Compress image
function compressImage($source, $destination, $quality) {

    $info = getimagesize($source);

    if ($info['mime'] == 'image/jpeg')
        $image = imagecreatefromjpeg($source);

    elseif ($info['mime'] == 'image/gif')
        $image = imagecreatefromgif($source);

    elseif ($info['mime'] == 'image/png')
        $image = imagecreatefrompng($source);

    imagejpeg($image, $destination, $quality);

}





Share:

วันพฤหัสบดีที่ 7 พฤษภาคม พ.ศ. 2563

รูปแบบการแสดงผลตัวอักษรภาษาอังกฤษ PHP vs CSS


วันนี้ Onlymycode ขอนำเสนอเทคนิคง่าย ๆ แต่ได้ใช้บ่อยมีทั้งแบบ คำสั่งแบบ PHP และ คำสั่งแบบ CSS โดยเราจะเรียงคำสั่งตามนี้นะครับ

แสดงข้อความแบบตัวพิมพ์เล็ก
แสดงข้อความแบบตัวพิมพ์ใหญ่
แสดงข้อความขึ้นต้นด้วยตัวพิมพ์ใหญ่

ก่อนอื่นเรามาเริ่มที่ฝั่ง PHP กันก่อน
คำสั่ง strtolower() 
ตัวอย่าง echo strtolower("Hello WORLD!");
ผลลัพธ์ hello world!
------------------------------------------------------
คำสั่ง strtoupper() 
ตัวอย่าง echo strtoupper("Hello WORLD!");
ผลลัพธ์ HELLO WORLD!
------------------------------------------------------
คำสั่ง ucfirst() 
ตัวอย่าง echo echo ucfirst("hello world!");
ผลลัพธ์ Hello world!
------------------------------------------------------
คำสั่ง ucwords() 
ตัวอย่าง echo echo ucwords("hello world");
ผลลัพธ์ Hello World!

มาต่อที่ฝั่ง CSS กันเลย
คำสั่ง text-transform: lowercase;
ตัวอย่าง <div style="text-transform: lowercase;">Hello WORLD!</div>
ผลลัพธ์ hello world!
------------------------------------------------------
คำสั่ง text-transform: uppercase; 
ตัวอย่าง <div style="text-transform: uppercase;">Hello WORLD!</div>
ผลลัพธ์ HELLO WORLD!
------------------------------------------------------
คำสั่ง text-transform: capitalize;
ตัวอย่าง <div style="text-transform: capitalize;">Hello WORLD!</div>
ผลลัพธ์ Hello World!




Share:

วันอาทิตย์ที่ 3 พฤษภาคม พ.ศ. 2563

PHP for กับ foreach ต่างกันยังไง ใช้ตอนไหนดี


for และ foreach ทั้ง 2 คำสั่ง เป็นคำสั่งสำหรับวนลูป Array แต่ว่ามีข้อแตกต่างของทั้งสอง function คือ for จะวนลูปกับ Array ที่มี key เป็นตัวเลข และ เรียงลำดับกันเท่านั้น เช่น 0,1,2,3,4 ... แต่หาว่า Key Array นั้น เป็น 0,2,4,1,3 ... แบบนี้จะเหมาะกับการใช้ foreach สำหรับวนลูปมากกว่า

ตัวอย่างการใช้งาน php for 

แบบที่ 1 เรียงจาก Key น้อยไปมาก
PHP CODE
$array = ['A', 'B' ,'C', 'D'];
for ($ = 0; $i < count($array); $i++) {
    echo $array[$i].'<br>';
}

ผลลัพธ์
A
B
C
D

แบบที่ 2 เรียงจากค่า Key มากไปน้อย
PHP CODE
$array = ['A', 'B' ,'C', 'D'];
for ($i = count($array)-1; $i >= 0; $i--) {
    echo $array[$i].'<br>';
}

ผลลัพธ์
D
C
B
A

Quote: ถึงแม้จะไม่เห็น key ใน Array แต่รูปแบบ Array แบบนี้จะมี Key เป็นตัวเลขระบุไว้อยู่ ดังนี้
['0'=>'A','1'=>'B','2'=>'C','3'=>'D']




ตัวอย่างการใช้งาน php foreach

foreach เหมาะกับการวนลูป Array แบบที่มี Key ทั้งเป็นแบบตัวเลขและตัวอักษร ซึ่ง foreach จะวนลูปตามลำดับของ Key ของข้อมูล โดยมีรูปแบบการใช้งานอยู่ 2 แบบ

แบบที่ 1 foreach โดยให้ผลลัพท์ทั้ง key และ value ออกมา
PHP CODE
$array = ['one'=>'A', 'two'=>'B', three'=>'C', 'four'=>'D'];
foreach($array as $key => $value) {
    echo 'Key '.$key.' = Value '.$value.'<br>';
}

ผลลัพธ์
Key one = Value A
Key two = Value B
Key three = Value C
Key four = Value D

แบบที่ 2 foreach โดยให้ผลลัพท์เฉพาะ value ออกมา
PHP CODE
$array = ['one'=>'A', 'two'=>'B', three'=>'C', 'four'=>'D'];
foreach($array as  $value) {
    echo '  Value '.$value.'<br>';
}

ผลลัพธ์
Value A
Value B
Value C
Value D

Quote: foreach จะเหมาะกับการใช้งานในการเขียนโปรแกรมจริง มากกว่า for เนื่องจากมีความเร็วในการประมวลผลที่ดีกว่า อีกทั้งยังสามารถนำไปประยุกต์ใช้งานได้หลากหลายมากกว่า โดยหลัก ๆ ที่จะใช้งานกันบ่อย ๆ คือ การนำไปวนลูปข้อมูลที่ได้จากฐานข้อมูล




Share:

แจก!!! ใช้งาน Autocomplete ร่วมกับฐานข้อมูล ตัวอย่าง Autocomplete จังหวัดในไทย


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


Download


เมื่อ Download เสร็จแล้วจะได้ไฟล์เหมือนในรูป โดยไฟล์ จะมีทั้งตัวอย่างฐานข้อมูล และไฟล์ตัวอย่างการใช้งาน Autocomplete ร่วมกับ Database ดังรูป



ตัวอย่างการใช้งาน Text Autocomplete

ในการยกตัวอย่างการใช้งาน ผมจะขอนำเสนอในรูปแบบของการทำ Autocomplete รายชื่อจังหวัดของประเทศไทย (ลองใช้งานได้ ในกรอบด้านล่าง)




ตัวอย่างการใช้งาน Text Autocomplete ร่วมกับ Database


เริ่มที่ เรียกใช้งาน StyleSheet และ Javascript ใน Tag <header>....</header>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
<link rel="stylesheet" href="./inc/demo.css">
<link rel="stylesheet" href="inc/jquery.autocomplete.css">
<script src="./inc/jquery.js" type="text/javascript"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="inc/jquery.autocomplete.js" type="text/javascript"></script>

เชื่อมต่อฐานข้อมูลและดึงข้อมูลจากจังหวัดจากฐานข้อมูลออกมาแสดง จากตัวอย่างด้านล่าง เราจะเก็บชื่อจังหวัดที่
$connect = mysqli_connect('localhost', 'root', '1234', 'test');
mysqli_set_charset($connect, 'utf8');

/************************ ดึงข้อมูลจังหวัดจากฐานข้อมูล *********************/
$sql = "SELECT
pv.name_th
FROM
province AS pv
ORDER BY
CONVERT( pv.name_th USING tis620 ) ASC";
$result = mysqli_query($connect, $sql);
$php_list = '';
foreach ($result as $key => $val){
    $php_list .= "'".$val['name_th']."', ";
}
/********** เก็บค่ารายชื่อจังหวัดทั้งหมดไว้ในตัวแปร ********/
$php_list = substr($php_list,0, strlen($php_list) - 2);

ส่วนฝั่งของ HTML สร้าง Input field ที่ต้องการทำให้เป็น Autocomplete พร้อมกำหนด id ให้กับ Input นั้น เช่น id="province_auto"
<div class="auto" style="padding: 25px; width: 400px;">
<div class="form-group" style="margin:0px;">
<strong>กรอกจังหวัด</strong>
<input type="text" class="form-control" id="province_auto" placeholder="กรอกจังหวัด">
</div>
</div>

ในส่วนของ Script กำหนดค่าตัวแปร province เป็นรายชื่อจังหวัดจากนั้นเรียกใช้งานผ่าน jQuery ด้วยคำสั่ง .autocomplete
<script>
    var province = [<?php echo $php_list?>];

    $('#province_auto').autocomplete({
        source:[province],
        limit: 10
    });
</script>

ขอบคุณความรู้ดี ๆ จาก https://xdsoft.net/


Share:

แจก!!! Code PHP + SQL + Pagination ตัวอย่างหน้ารายงาน จังหวัด อำเภอ ตำบล + การแบ่งหน้า


แจกตัวอย่างการสร้างหน้ารายงานด้วย PHP พร้อมตัวอย่างการดึงข้อมูลจากฐานข้อมูล MySql และการแบ่งหน้าโดยใช้ Function Pagination




อธิบายการใช้งาน PHP Code อย่างละเอียด

เริ่มด้วยตัวอย่างการสร้าง SQL สำหรับดึงข้อมูล จังหวัด อำเภอ ตำบล 

ตัวอย่างด้านล่าง คือการดึงข้อมูลด้วยการเชื่อมตารางทั้ง 3 ตารางเข้าด้วยกัน และเพิ่มเงื่อนไขการดึงข้อมูล WHERE จังหวัดที่มีคำว่า "เชียง" ในชื่อจังหวัด และ LIMIT การแสดงผลข้อมูลไว้ที่ 100 รายการ

หากดึงข้อมูลจากฐานข้อมูลด้วย Query ชุดนี้ Query จะดึงข้อมูลจากฐานข้อมูลมาแสดงและจำกัดการแสดงผลที่ 100 รายการเท่านั้น
SELECT
pv.`code` AS province_code,
pv.name_th AS province_name,
dt.`code` AS district_code,
dt.name_th AS district_name,
sdt.`code` AS subdistrict_code,
sdt.name_th AS subdistrict_name
FROM
province AS pv
INNER JOIN district AS dt ON SUBSTR(pv.`code`,1,2)= SUBSTR(dt.`code`,1,2)
INNER JOIN subdistrict AS sdt ON SUBSTR(dt.`code`,1,4)= SUBSTR(sdt.`code`,1,4)
WHERE
pv.name_th LIKE '%เชียง%'
LIMIT 100


ตัวอย่าง Code การแบ่งหน้าด้วย PHP

ส่วนแรกคือการทำ Code สำหรับแบ่งหน้า รายละเอียดดังนี้
1. เรียกใช้งาน Class แบ่งหน้า
2. นับจำนวน Row ข้อมูลทั้งหมด เพื่อใช้ในการแบ่งหน้า
3. กำหนดค่าตัวแปรสำหรับ Function การแบ่งหน้า
4. ส่งค่าเข้าไปยัง Function การแบ่งหน้า
5. ตัวอย่าง SQL สำหรับแบ่งเพจ
/********* 1. เรียกใช้งาน Class แบ่งหน้า *********/
require_once ("class/class.pagination.php");
$Pagination = new Pagination();

/********* 2. นับจำนวนข้อมูลทั้งหมด $numRows *********/
$sql = "SELECT
COUNT(pv.`code`) AS num_rows
FROM
province AS pv
INNER JOIN district AS dt ON SUBSTR(pv.`code`,1,2)= SUBSTR(dt.`code`,1,2)
INNER JOIN subdistrict AS sdt ON SUBSTR(dt.`code`,1,4)= SUBSTR(sdt.`code`,1,4)
WHERE pv.name_th LIKE '%เชียง%'";
$result = mysqli_query($connect, $sql);
foreach ($result as $key => $val){
    $numRows = $val['num_rows'];
}

/********* 3. กำหนดค่าตัวแปร *********/
$_GET['pageNo'] = (!isset($_GET['pageNo']))? '1' : $_GET['pageNo']; // หน้าปัจจุบัน
$rowPerPage = 15; //แสดงรายการต่อแถว
$link = '?t='; // ใส่ parameter link ที่ต้องการใน Pagination
$showPage = 5; // จำนวนหน้าสูดสุดที่จะแสดงใน Pagination ต่ำสุดคือ 3 ควรใส่เป็นเลขคี่ เช่น 3 5 7

/********* 4. ส่งค่าไปยัง Class Pagination *********/
$limitConfig = $Pagination->pagination($numRows,$_GET['pageNo'],$rowPerPage);
$arrayPage = $Pagination->devidepage($numRows,$_GET['pageNo'],$rowPerPage,$link,$showPage);

/********* 5. ตัวอย่าง SQL ที่ใช้สำหรับแบ่งเพจ *********/
// ดึงข้อมูล จังหวัด อำเภอ ตำบล ที่มีชื่อจังหวัดขึ้นต้นด้วย "เชียง"
// แบ่งหน้า ด้วย คำสั่ง LIMIT และตัว $limitConfig ที่ได้จาก  Class Pagination
$sql = "SELECT
pv.`code` AS province_code,
pv.name_th AS province_name,
dt.`code` AS district_code,
dt.name_th AS district_name,
sdt.`code` AS subdistrict_code,
sdt.name_th AS subdistrict_name
FROM
province AS pv
INNER JOIN district AS dt ON SUBSTR(pv.`code`,1,2)= SUBSTR(dt.`code`,1,2)
INNER JOIN subdistrict AS sdt ON SUBSTR(dt.`code`,1,4)= SUBSTR(sdt.`code`,1,4)
WHERE
pv.name_th LIKE '%เชียง%'
LIMIT {$limitConfig ['start']},{$limitConfig ['rows_perpage']}";

$result = mysqli_query($connect, $sql);


อ่านเรื่องการแบ่งหน้าเพิ่มเติม คลิกที่นี่



ตัวอย่างการใช้งานใช้งาน PHP foreach แสดงผลข้อมูลจากฐานข้อมูล

เมื่อทำการดึงข้อมูลจากฐานข้อมูลมากแล้ว ขั้นตอนไปคือการนำข้อมูลที่ได้มาแสดงผล
รูปแบบคำสั่ง foreach ใช้งานได้ 2 แบบ
รูปแบบนี้จะดึงข้อมูล Array มาแสดงโดยไม่ดึง Array Key มาด้วย
foreach (array_expression as $value)  
    statement

รูปแบบนี้จะดึงข้อมูล Array มาแสดงโดยดึง Array Key ออกมาด้วย
foreach (array_expression as $key => $value)
    statement

ตัวอย่างการวนลูป
<h1 style="padding: 0; margin: 0;">ข้อมูลจังหวัด ที่ขึ้นต้นด้วย "เชียง"</h1>
<table border="1" width="800" cellpadding="">
    <thead>
        <tr>
            <th>ลำดับ</th>
            <th>รหัสจังหวัด</th>
            <th>จังหวัด</th>
            <th>รหัสอำเภอ</th>
            <th>อำเภอ</th>
            <th>รหัสตำบล</th>
            <th>ตำบล</th>
        </tr>
    </thead>
    <tbody>
    <?php
    $cnt = (($_GET['pageNo']-1)*$rowPerPage)+1; // <<< ตัวอย่าง เลขหน้าลำดับการ
    foreach ($result as $val){?>
        <tr>
            <td><?php echo $cnt?></td>
            <td><?php echo $val['province_code']?></td>
            <td><?php echo $val['province_name']?></td>
            <td><?php echo $val['district_code']?></td>
            <td><?php echo $val['district_name']?></td>
            <td><?php echo $val['subdistrict_code']?></td>
            <td><?php echo $val['subdistrict_name']?></td>
        </tr>
    <?php $cnt++;} ?>
    </tbody>
</table>



ตัวอย่างการแบ่งหน้า

ตัวแปร $arrayPage เราจะใช้สำหรับสร้าง Code แบ่งหน้า ตามตัวอย่างด้านล่างนี้
<div style="float:left; font-weight: bold; margin-right: 20px; padding-top: 30px;">หน้า <?php echo $_GET['pageNo']?> / <?php echo ceil($numRows/$rowPerPage)?></div>
<div class="dataTables_paginate paging_simple_numbers mo-paginate" id="data-table_paginate">
    <?php $lastPage = count($arrayPage)-1; ?>
    <ul class="pagination">
        <li class="paginate_button previous" aria-controls="data-table" tabindex="0" id="data-table_previous">
            <a href="<?php echo $arrayPage[0]['link']?>" class="<?php echo $arrayPage[0]['disabled']?>">
                <?php echo $arrayPage[0]['label']?>
            </a>
        </li>

        <?php foreach ($arrayPage as $key => $value): if($key != 0 && $key != $lastPage ):?>
            <li class="paginate_button" aria-controls="data-table" tabindex="0">
                <a href="<?php echo $value['link']?>" class="<?php echo ($_GET['pageNo'] == $value['pageNo']) ? 'current': ''?>">
                    <?php echo $value['label']?>
                </a>
            </li>
        <?php endif; endforeach; ?>

        <li class="paginate_button next" aria-controls="data-table" tabindex="0" id="data-table_next">
            <a href="<?php echo $arrayPage[$lastPage]['link']?>" class="<?php echo $arrayPage[$lastPage]['disabled']?>">
                <?php echo $arrayPage[$lastPage]['label']?>
            </a>
        </li>
    </ul>
</div>





Share:

หารปัดเศษ ใน PHP ceil floor round ทำยังไง มาดูกัน


การหารปัดเศษของ PHP มีด้วยกันอยู่ 3 แบบ คือ

float ceil ( float value) : หารปัดเศษขึ้น แสดงผลเป็นเลขจำนวนเต็ม
float floor ( float value) : หารปัดเศษลง แสดงผลเป็นเลขจำนวนเต็ม
float round ( float value [, int precision]) : หารปัดเศษ แสดงผลเป็นทศนิยมได้

มาดูตัวอย่างการใช้งาน ceil และ floor กัน
<?php
    $someval = 4.9;
    $ceiled = ceil($someval); // 5
    $floored = floor($someval); // 4
?>

จาก Code ด้านบน ผลลัพธ์ที่ได้ คือ 
- ceil จะปัดเศษขึ้น ผลลัพธ์ที่ได้คือ 5
- floor จะปัดเศษลง ผลลัพธ์ที่ได้คือ 4



มาดูตัวอย่างการใช้งาน round โดย round จะมีรูปแบบการคำนวนทศนิยมคือ หากทศนิยม มากกว่าหรือเท่ากับ 0.5 ทศนิยมจะถูกปัดขึ้น หรือน้อยกว่าจะถูกปัดลง ดูตัวอย่าง
<?php
    $a = round(4.9); // 5
    $b = round(4.5); // 5
    $c = round(4.4999); // 4
    $d = round(4.123456, 3); // 4.123
    $e = round(4.12345, 4); // 4.1234
    $f = round(1030 / 160,2); // 6.43
?>

จาก Code ด้านบน ผลลัพธ์ที่ได้ คือ 
$a  = 5
$b  = 5
$c  = 4
$d  = 4.123
$e  = 4.1234
$f  = 6.43





Share:

วันเสาร์ที่ 2 พฤษภาคม พ.ศ. 2563

แจก!!! โค้ดแบ่งหน้า PHP code pagination


แจก Code แบ่งหน้าของ PHP โหลดไปใช้ ไม่ต้องเขียนเอง


Download



เรียกใช้งานงาน Pagination

require_once ("class/class.pagination.php");
$Pagination = new Pagination();

กำหนดค่าตัวแปร

เป็นการกำหนดค่าตัวแปรที่จำเป็นเพื่อเรียกใช้งาน Funtion การแบ่งหน้าของ PHP pagination
$_GET['pageNo'] = (!isset($_GET['pageNo']))? '1' : $_GET['pageNo']; // หน้าปัจจุบัน
$rowPerPage = 10; //แสดงรายการต่อแถว
$link = '?page=province'; // ใส่ parameter link ที่ต้องการใน Pagination
$showPage = 5; // จำนวนหน้าสูดสุดที่จะแสดงใน Pagination ต่ำสุดคือ 3 ควรใส่เป็นเลขคี่ เช่น 3 5 7

ส่งค่าตัวแปรเข้า Function

ส่งค่าตัวแปรที่กำหนดค่าเสร็จแล้วไปยัง Funtion การแบ่งหน้าของ PHP pagination
$limitConig = $Pagination->pagination($numRows$_GET['pageNo']$rowPerPage);
$arrayPage = $Pagination->devidepage($numRows$_GET['pageNo']$rowPerPage, $link, $showPage);

ส่วนการแบ่งหน้า

ตัวแปร $arrayPage คือตัวแปรที่เราจะนำมาสร้าง Code การแบ่งหน้า
<div class="dataTables_paginate paging_simple_numbers mo-paginate" id="data-table_paginate">
    <?php $lastPage = count($arrayPage)-1; ?>
    <ul class="pagination">
        <li class="paginate_button previous" aria-controls="data-table" tabindex="0" id="data-table_previous">
            <a href="<?php echo $arrayPage[0]['link']?>" class="<?php echo $arrayPage[0]['disabled']?>">
                <?php echo $arrayPage[0]['label']?>
            </a>
        </li>

        <?php foreach ($arrayPage as $key => $value): if($key != 0 && $key != $lastPage ):?>
            <li class="paginate_button" aria-controls="data-table" tabindex="0">
                <a href="<?php echo $value['link']?>" class="<?php echo ($_GET['pageNo'] == $value['pageNo']) ? 'current': ''?>">
                    <?php echo $value['label']?>
                </a>
            </li>
        <?php endif; endforeach; ?>

        <li class="paginate_button next" aria-controls="data-table" tabindex="0" id="data-table_next">
            <a href="<?php echo $arrayPage[$lastPage]['link']?>" class="<?php echo $arrayPage[$lastPage]['disabled']?>">
                <?php echo $arrayPage[$lastPage]['label']?>
            </a>
        </li>
    </ul>
</div>

ตัวอย่างหน้าแบ่งเพจ เมื่อติดตั้ง Code เสร็จแล้ว




หากมีข้อสงสัยเพิ่มเติมสามารถเข้าไปพูดสอบถามผ่านช่อง Facebook Fanpage ของเราที่มุมขวาบนของเว็บไซต์ได้เลยจ้า




Share:

PHP + Mysql แก้ปัญหาภาษาต่างดาวในหน้าเว็บ แสดงผลภาษาไทย บนหน้าเว็บไซต์



ปัญหาเว็บแสดงภาษาต่างดาว

เชื่อวว่าหลายคนคงเลยเจอปัญหาเว็บไซต์มีปัญหา แสดงผลข้อความภาษาไทยออกมาเป็นภาษาต่างดาว แบบตัวอย่างด้านล่าง

รหัส 81000000 ชื่อ ��к��
รหัส 10000000 ชื่อ ��ا෾��ҹ��
รหัส 71000000 ชื่อ �ҭ������
รหัส 46000000 ชื่อ ����Թ���
รหัส 62000000 ชื่อ ��ᾧྪ�
รหัส 40000000 ชื่อ �͹��
รหัส 22000000 ชื่อ �ѹ�����
รหัส 24000000 ชื่อ ���ԧ���
รหัส 20000000 ชื่อ �ź���
รหัส 18000000 ชื่อ ��¹ҷ

ปัญหาที่เกิดขึ้นมักจะเกิดจากการดึงข้อมูลจากฐานข้อมูลมาแสดงในหน้าเว็บ ดังนั้นเราสามารถแก้ไขปัญหาดังกล่าวด้วยวิธีต่อไปนี้

1. ส่วน HTML แทรก meta tag charset="utf-8" ตามตัวอย่างด้านล่าง
<html lang="th">
<head>
    <meta http-equiv=Content-Type content="text/html; charset=utf-8">
</head>
<body>

</body>

2. ส่วน PHP การเชื่อมต่อฐานข้อมูลให้ระบุ charset = 'utf8' ทุกครั้ง เหมือนตัวอย่างด้านล่าง
$connect = mysqli_connect('localhost', 'root', '1234', 'database_name');
mysqli_set_charset($connect, 'utf8');

3. ตั้งค่าที่จำเป็นแล้ว มาลอง Query ข้อมูลกัน โดยทดลอง เขียน SQL เพื่อดึงข้อมูลจากตารางด้านล่าง ตามรูปนี้

4. ทดลองเขียน Code PHP เพื่อดึงข้อมูลจากฐานข้อมูลมาแสดง
$connect = mysqli_connect('localhost', 'root', '1234', 'database_name');

mysqli_set_charset($connect, 'utf8');

$sql = "SELECT
pv.`code`,
pv.name_th
FROM
config_area_province AS pv
ORDER BY
CONVERT( pv.name_th USING tis620 ) ASC
LIMIT 10";

$result = mysqli_query($connect, $sql);

foreach ($result as $key => $detail){
    echo "รหัส ".$detail['code']." ชื่อ ".$detail['name_th']."<br>";
}

ผลลัพธ์
รหัส 81000000 ชื่อ กระบี่
รหัส 10000000 ชื่อ กรุงเทพมหานคร
รหัส 71000000 ชื่อ กาญจนบุรี
รหัส 46000000 ชื่อ กาฬสินธุ์
รหัส 62000000 ชื่อ กำแพงเพชร
รหัส 40000000 ชื่อ ขอนแก่น
รหัส 22000000 ชื่อ จันทบุรี
รหัส 24000000 ชื่อ ฉะเชิงเทรา
รหัส 20000000 ชื่อ ชลบุรี
รหัส 18000000 ชื่อ ชัยนาท

เรียบร้อยเท่านี้เราก็แก้ปัญหา ภาษาต่างดาว และสามารถแสดงผลภาษาไทย บนหน้าเว็บของเราได้แล้ว


รวมเทคนิค PHP+SQL << คลิกที่นี่






Share:

MySQL เรียงลำดับตามตัวอักษร ภาษาไทย ตัวอย่างการใช้งานร่วมกับ PHP


ก่อนอื่นต้องทำการเชื่อมต่อฐานข้อมูล ถ้ายังทำไม่เป็นคลิกอ่านก่อนเลย  PHP connect SQL


ตัวอย่างตาราง


โดยปกติแล้ว เมื่อเราทำการ Query ข้อมูลมาจากฐานข้อมูล หากว่า Collation ของ Field ในฐานข้อมูลเป็น "utf8_general_ci" เหมือนในรูป เมื่อเราทำการ Query ข้อมูลออกมากจะไม่สามารถเรียงลำดับข้อมูล
ก - ฮ หรือ ฮ - ก ได้

แต่เรามีวิธีแก้ไขปัญหานี้ง่าย ๆ ด้วยคำสั่ง
CONVERT( 'field_name' USING tis620 ) ASC

ตัวอย่าง SQL สำหรับเรียงลำดับข้อมูล
ตัวอย่างการใช้งาน
SELECT
pv.`code`,
pv.name_th
FROM
config_area_province AS pv
ORDER BY
CONVERT( pv.name_th USING tis620 ) ASC
LIMIT 10

จาก SQL ด้านบนเราจะได้ผลลัพธ์ ตามรูปนี้

Note:
จะเห็นได้ว่าเราสามารถเรียงลำดับตัวอักษรภาษาไทย รวมทั้งสระต่างๆ ของภาไทยได้อย่างถูกต้อง


ตัวอย่างการใช้ CONVERT ในรูปแบบ Code PHP
$sql = "SELECT
pv.`code`,
pv.name_th
FROM
config_area_province AS pv
ORDER BY
CONVERT( pv.name_th USING tis620 ) ASC
LIMIT 10";

$result = mysqli_query($connect, $sql);

foreach ($result as $key => $detail){
    echo "รหัส ".$detail['code']." ชื่อ ".$detail['name_th']."<br>";
}

ผลลัพธ์

รหัส 81000000 ชื่อ กระบี่
รหัส 10000000 ชื่อ กรุงเทพมหานคร
รหัส 71000000 ชื่อ กาญจนบุรี
รหัส 46000000 ชื่อ กาฬสินธุ์
รหัส 62000000 ชื่อ กำแพงเพชร
รหัส 40000000 ชื่อ ขอนแก่น
รหัส 22000000 ชื่อ จันทบุรี
รหัส 24000000 ชื่อ ฉะเชิงเทรา
รหัส 20000000 ชื่อ ชลบุรี
รหัส 18000000 ชื่อ ชัยนาท



รวมเทคนิค PHP+SQL << คลิกที่นี่






Share:

Min Max Avg SQL หาค่าน้อยสุด มากสุด ค่าเฉลี่ย ตัวอย่างการใช้งานร่วมกับ PHP


ก่อนอื่นต้องทำการเชื่อมต่อฐานข้อมูล ถ้ายังทำไม่เป็นคลิกอ่านก่อนเลย  PHP connect SQL

ตัวอย่างตาราง

อธิบาย Function

MIN()ใช้สำหรับหาค่าที่น้อยสุด
MAX() ใช้สำหรับหาค่าที่มากสุด
AVG() ใช้สำหรับหาค่าเฉลี่ย

ตัวอย่างการใช้งาน Function
ตัวอย่างการใช้งาน
SELECT
FORMAT(MIN(t1.doc_price),2) AS min_price,
FORMAT(MAX(t1.doc_price),2) AS max_price,
FORMAT(AVG(t1.doc_price),2) AS avg_price
FROM
doc_deal_credit_list AS t1

จาก SQL ด้านบนเราจะได้ผลลัพธ์ ตามรูปนี้

Note:
รูปแบบของการใช้ MIN MAX AVG + การใช้งานรวมกับ FORMAT
คำสั่ง MIN
MIN(field)


คำสั่ง MAX
MAX(field)


คำสั่ง AVG
AVG(field)


คำสั่ง FORMAT + MAX
FORMAT(MAX(field))



ตัวอย่างการใช้ COUNT IF ในรูปแบบ Code PHP
$sql = "SELECT
FORMAT(MIN(t1.doc_price),2) AS min_price,
FORMAT(AVG(t1.doc_price),2) AS avg_price,
FORMAT(MAX(t1.doc_price),2) AS max_price
FROM
doc_deal_credit_list AS t1";

$result = mysqli_query($connect, $sql);

foreach ($result as $key => $detail){
    echo "ค่าน้อยสุด ".number_format($detail['m1'],2)." บาท <br>";
    echo "ค่ามากสุด ".number_format($detail['m2'],2)." บาท <br>";
    echo "ค่าเฉลี่ย ".number_format($detail['m3'],2)." บาท";
    echo "<hr>";

}

ผลลัพธ์

ค่าน้อยสุด 267.00 บาท
ค่ามากสุด  354.01 บาท
ค่าเฉลี่ย 490.00 บาท


รวมเทคนิค PHP+SQL << คลิกที่นี่






Share:

SUM IF MySQL สรุปจำนวนตัวเลขแยกตามเดือน ตัวอย่างการใช้งานร่วมกับ PHP


ก่อนอื่นต้องทำการเชื่อมต่อฐานข้อมูล ถ้ายังทำไม่เป็นคลิกอ่านก่อนเลย  PHP connect SQL

ตัวอย่างตาราง

ตัวอย่าง Sum if SQL สำหรับดึงข้อมูลสรุปตัวเลขของแต่ละเดือน
ตัวอย่างการใช้งาน
SELECT
YEAR(t1.doc_date) AS `year`,
Sum(IF(MONTH(t1.doc_date)=1,t1.doc_price,0)) AS `m1`,
Sum(IF(MONTH(t1.doc_date)=2,t1.doc_price,0)) AS `m2`,
Sum(IF(MONTH(t1.doc_date)=3,t1.doc_price,0)) AS `m3`,
Sum(IF(MONTH(t1.doc_date)=4,t1.doc_price,0)) AS `m4`,
Sum(IF(MONTH(t1.doc_date)=5,t1.doc_price,0)) AS `m5`,
Sum(IF(MONTH(t1.doc_date)=6,t1.doc_price,0)) AS `m6`,
Sum(IF(MONTH(t1.doc_date)=7,t1.doc_price,0)) AS `m7`,
Sum(IF(MONTH(t1.doc_date)=8,t1.doc_price,0)) AS `m8`,
Sum(IF(MONTH(t1.doc_date)=9,t1.doc_price,0)) AS `m9`,
Sum(IF(MONTH(t1.doc_date)=10,t1.doc_price,0)) AS `m10`,
Sum(IF(MONTH(t1.doc_date)=11,t1.doc_price,0)) AS `m11`,
Sum(IF(MONTH(t1.doc_date)=12,t1.doc_price,0)) AS `m12`
FROM
doc_deal_credit_list AS t1
WHERE YEAR(t1.doc_date) < 2020
GROUP BY `year`

จาก SQL ด้านบนเราจะได้ผลลัพธ์ ตามรูปนี้

Note:
รูปแบบของการใช้ IF และ SUM IF
คำสั่ง IF
IF(condition, value_true, value_false)
คำสั่ง SUM IF
SUM(IF(condition, value_true, value_false))

หากต้องการระบุปีที่ต้องการดึงข้อมูลเราสามารถเปลี่ยนข้อมูล WHERE เช่น ต้องการดึงข้อมูลปี 2018 เราสามารถเขียนได้ ดังนี้
WHERE YEAR(t1.doc_date) = 2018

หากต้องการระบุ ช่วงปี ที่ต้องการดึงข้อมูลเราสามารถเปลี่ยนข้อมูล WHERE เช่น ต้องการดึงข้อมูลปี 2018 - 2020 เราสามารถเขียนได้ ดังนี้
WHERE YEAR(t1.doc_date) BETWEEN 2018 AND 2020



ตัวอย่างการใช้ COUNT IF ในรูปแบบ Code PHP
$sql = "SELECT
YEAR(t1.doc_date) AS `year`,
Sum(IF(MONTH(t1.doc_date)=1,t1.doc_price,0)) AS `m1`,
Sum(IF(MONTH(t1.doc_date)=2,t1.doc_price,0)) AS `m2`,
Sum(IF(MONTH(t1.doc_date)=3,t1.doc_price,0)) AS `m3`,
Sum(IF(MONTH(t1.doc_date)=4,t1.doc_price,0)) AS `m4`,
Sum(IF(MONTH(t1.doc_date)=5,t1.doc_price,0)) AS `m5`,
Sum(IF(MONTH(t1.doc_date)=6,t1.doc_price,0)) AS `m6`,
Sum(IF(MONTH(t1.doc_date)=7,t1.doc_price,0)) AS `m7`,
Sum(IF(MONTH(t1.doc_date)=8,t1.doc_price,0)) AS `m8`,
Sum(IF(MONTH(t1.doc_date)=9,t1.doc_price,0)) AS `m9`,
Sum(IF(MONTH(t1.doc_date)=10,t1.doc_price,0)) AS `m10`,
Sum(IF(MONTH(t1.doc_date)=11,t1.doc_price,0)) AS `m11`,
Sum(IF(MONTH(t1.doc_date)=12,t1.doc_price,0)) AS `m12`
FROM
doc_deal_credit_list AS t1
WHERE YEAR(t1.doc_date) < 2020
GROUP BY `year`";

$result = mysqli_query($connect, $sql);

foreach ($result as $key => $detail){
    echo "<b>ปี ".$detail['year']."</b><br>";
    echo "เดือน มกราคม ".number_format($detail['m1'],2)." บาท <br>";
    echo "เดือน กุมภาพันธ์ ".number_format($detail['m2'],2)." บาท <br>";
    echo "เดือน มีนาคม ".number_format($detail['m3'],2)." บาท <br>";
    echo "เดือน เมษายน ".number_format($detail['m4'],2)." บาท <br>";
    echo "เดือน พฤษภาคม ".number_format($detail['m5'],2)." บาท <br>";
    echo "เดือน มิถุนายน ".number_format($detail['m6'],2)." บาท <br>";
    echo "เดือน กรกฏาคม ".number_format($detail['m7'],2)." บาท <br>";
    echo "เดือน สิงหาคม ".number_format($detail['m8'],2)." บาท <br>";
    echo "เดือน กันยายน ".number_format($detail['m9'],2)." บาท <br>";
    echo "เดือน ตุลาคม ".number_format($detail['m10'],2)." บาท <br>";
    echo "เดือน พฤศจิกายน ".number_format($detail['m11'],2)." บาท <br>";
    echo "เดือน ธันวาคม ".number_format($detail['m12'],2)." บาท ";
    echo "<hr>";

}

ผลลัพธ์

ปี 2018
เดือน มกราคม 0.00 บาท
เดือน กุมภาพันธ์ 0.00 บาท
เดือน มีนาคม 0.00 บาท
เดือน เมษายน 0.00 บาท
เดือน พฤษภาคม 0.00 บาท
เดือน มิถุนายน 4,555.00 บาท
เดือน กรกฏาคม 16,160.00 บาท
เดือน สิงหาคม 17,351.00 บาท
เดือน กันยายน 11,034.00 บาท
เดือน ตุลาคม 16,414.00 บาท
เดือน พฤศจิกายน 8,452.00 บาท
เดือน ธันวาคม 8,074.00 บาท

ปี 2019
เดือน มกราคม 7,769.00 บาท
เดือน กุมภาพันธ์ 0.00 บาท
เดือน มีนาคม 0.00 บาท
เดือน เมษายน 0.00 บาท
เดือน พฤษภาคม 0.00 บาท
เดือน มิถุนายน 0.00 บาท
เดือน กรกฏาคม 0.00 บาท
เดือน สิงหาคม 0.00 บาท
เดือน กันยายน 0.00 บาท
เดือน ตุลาคม 0.00 บาท
เดือน พฤศจิกายน 0.00 บาท
เดือน ธันวาคม 0.00 บาท


รวมเทคนิค PHP+SQL << คลิกที่นี่






Share:

บทความที่ได้รับความนิยม

Search

บทความอื่น ๆ