[ Mysql ] menukar format dd/mm/yyyy ke yyyy-mm-dd

Selalunya masalah seperti ini timbul bilamana tarikh disimpan dalam format varchar. Selain pengaturcara sebelum ini seorang pemalas, ada kemungkinan sesetengah pangkalan data tidak mempunyai datatype date. Atau, ini merupakan data yang datang dari sistem legasi. Bila kita ingin melakukan proses migrasi ke pangkalan data MySQL. Boleh cuba sintaks dibawah.

UPDATE tableA SET tarikhBaru = CONCAT(SUBSTRING_INDEX(
SUBSTRING_INDEX(tarikhLama,'/',3),'/',-1),'-',
SUBSTRING_INDEX(SUBSTRING_INDEX(tarikhLama,'/',2),'/',-1),'-',
SUBSTRING_INDEX(tarikhLama,'/',1));

Dua arahan yang perlu digunakan iaitu CONCAT() dan juga SUBSTRING_INDEX().

CONCAT() merupakan arahan untuk menggabungkan rentetan aksara (string). Boleh juga menggabung data 2 atau 3 column menjadi 1. Formatnya adalah seperti berikut

CONCAT(fieldname1,string,fieldname2,string,fieldname..,string..);

SUBSTRING_INDEX() pula, memecahkan rentetan aksara kepada beberapa perkataan dan disimpan dalam bentuk tatasusunan (array). Formatnya adalah seperti berikut

SUBSTRING_INDEX(fieldname,delimiter,array_key);

Selamat mencuba!

Mengira perbezaan hari

Apabila kita membangunkan sistem, seringkali kita berhadapan dengan mengira perbezaan hari. Terutamanya sistem yang melibatkan KPI ataupun ISO bagi sesuatu proses. Catatan kali ini akan menceritakan bagaimana kita boleh mendapatkan perbezaan hari dari 2 tarikh.

Bagi yang menggunakan PHP versi 5.2 dan kebawah bolehlah mencuba cara ini

<?php
$unix_time1 = mktime(0,0,0,3,1,2013);
$unix_time2 = mktime(0,0,0,5,1,2013);
	
echo $unix_balance = floor(($unix_time2 - $unix_time1) /(60 * 60 * 24));
?>

Format bagi fungsi mktime() adalah seperti ini mktime(jam,minit,saat,bulan,hari,tahun).  Kemudian kita perlu gunakan rumus ini bagi mendapatkan bilangan hari.

(Tarikh2 – Tarikh1) / (60saat x 60minit x 24jam)

Hasil dari pengiraan diatas, kita perlu melakukan proses pembundaran ke nilai yang lebih rendah. Dengan itu fungsi floor() diperlukan.

 

Cara yang kedua adalah dengan menggunakan Class Datetime yang terdapat didalam PHP 5.3 dan keatas. Menggunakan method diff. Bagi mendapat format yang boleh difahami, method format digunakan.

<?php
$Date1 = new Datetime('2013-03-01');
$Date2 = new Datetime('2013-05-01');
$interval = $Date1->diff($Date2);
	
echo $interval->format("%R%a days");
?>

Sekiranya kita perlu membuat perbandingan dengan data yang dipanggil dari pangkalan data, adalah lebih baik kita menggunakan sql. Ini bagi mengurangkan PHP perlu memprosesnya berulang-ulang kali. Caranya mudah. Pernyataan Sql dibawah menggunakan fungsi yang terdapat didalam MySQL.

 

Selamat mencuba!

SELECT DATEDIFF( tarikh_tamat, tarikh_mula )
FROM nama_jadual
WHERE syarat_anda
LIMIT 0 , 30

Format tarikh menggunakan sintak SQL

Format untuk tarikh dalam MySQL hanyalah ‘2009-01-01’ untuk jenis data date  dan ‘2009-01-01 11:50:29’ untuk jenis data datetime. Ini sama sekali tidak menyamai format tarikh yang digunakan di negara kita iaitu 01-01-2009 ataupun 01/01/2009.

Artikel kali ini akan menyelesaikan permasalahan tanpa melibatkan sebarang kod dari PHP. Berikut adalah caranya

SELECT date_format
( nama_medan, '%d/%m/%Y' ) as tarikh 
FROM nama_jadual

 Ini akan menghasilkan output 01/01/2009.

Ini merupakan format-format yang ada.

Sintak Paparan
%W Wednesday
%a Wed
%D 5th
%d 05
%e 5
%M January
%b Jan
%m 01
%Y 2009
%y 09
%T 20:00:20
%H 20
%i 00

Bacaan lanjut boleh dilakukan di http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format.

Memaparkan data dari pangkalan data MySQL menggunakan PHP

Artikel kali ini akan menceritakan bagaimana memaparkan data dari pangkalan data (database) MySQL kepada pelayar(browser) menggunakan PHP.

Pertama sekali, kita perlu menyediakan pangkalan datanya terlebih dahulu. Kod dibawah merupakan sintak untuk membina pangkalan data. Kita namakan pangkalan data ini sebagai test_tutorial.

 

CREATE DATABASE `test_tutorial` ;

Seterusnya kita perlu pula membina jadual(table) didalam pangkalan data tersebut. Dan jadual ini kita namakan sebagai users.

 

CREATE TABLE `test_tutorial`.`users` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`first_name` TEXT NOT NULL ,
`last_name` TEXT NOT NULL ,
`date_of_birth` DATE NOT NULL 
) ENGINE = MYISAM ;

Selesai kita membuat jadual, data perlu dimasukkan. Kod dibawah akan memasukkan 2 baris data kedalam jadual users.

 

INSERT INTO `test_tutorial`.`users` (
`id` ,
`first_name` ,
`last_name` ,
`date_of_birth` 
)
VALUES (
NULL , 'Jasdy', 'Syarman', '1980-01-16'
), (
NULL , 'Abu', 'Ahmad', '2004-03-16'
);

Tamat bahagian pangkalan data. Kini kita beralih pula kepada bahagian kod aturcara PHP. Objektif kali ini, kamu akan mampu melakukan penyambungan dari PHP ke MySQL. Kemudian kamu akan dapat memahami penggunaan include, mysql_query(), mysql_fetch_array() dan juga gelung while.

Mula-mula kita perlu lakukan pemyambungan ke pelayan(server) MySQL serta memilih pangkalan data yang bakal dihubungkan. Kod aturcara dibawah menunjukkan bagaimana ianya dilakukan. Simpan kod ini dalam fail db.php

 

<?php
    $host = "localhost";
    $user   = "root";
    $password = null;
    $database = "test_tutorial";
    
    //melakukan penyambungan ke pelayan MySQL
    $connection = mysql_pconnect("$host","$user","$password")
        or die ("Couldn't connect to server.");
    
    //memilih pangkalan data yang akan digunakan
    $db = mysql_select_db("$database", $connection)
        or die("Couldn't select database.");
?>

Seterusnya kod aturcara dibawah akan menunjukkan bagaimana mahu memaparkan data yang diperolehi dari pangkalan data. Simpan kod ini didalam fail display.php

 

<?php
    //memasukkan fail db.php ke fail ini.
    include 'db.php';
    
    //mengumpukkan pernyataan sql kedalam pembolehubah.
    $sql = 'SELECT * FROM users';
    
    //menukarkan pembolehubah menjadi query
    $query = mysql_query($sql) 
        or die(mysql_error());
    
    //penggunaan loop while digunakan bagi memaparkan lebih dari satu baris data.
    while ($result = mysql_fetch_array($query))
    {
        echo 'First Name :' .$result&#91;'first_name'&#93;;
        echo '<br />'; //<br /> adalah sintak html untuk baris baru.
        echo 'Last Name :' .$result['last_name'];
        echo '<br />';
        echo 'Date of Birth :' .$result['date_of_birth'];
        echo '<br />';
    }
?>

Kamu boleh melihat hasilnya dengan menaip http://localhost/laluan_ke_fail/display.php pada pelayar kamu.

Penerangan bagi setiap sintak yang digunakan, sengaja tidak di terangkan secara terperinci namun cukup untuk membuatkan kamu memahami bagaimana ianya berfungsi. Sekiranya kamu ada sebarang pertanyaan, bolehlah tinggalkan komen.