Tolong pilih kategori sesuai, jenis posting (diskusi atau bukan) dan sertakan tag/topik yang sesuai seperti komputer, java, php, mysql, dll. Promosi atau posting tidak pada tempatnya akan kami hapus!
Sore Master Dweb,
Mohon bantuannya, pinginnya membuat status booking calendar berdasarkan data reservasi. Misalnya reservasi yang dicatat di database dengan status confirm sebagai berikut :
start_date = 2016-06-01
end_date = 2016-06-04
Gimana caranya supaya interval tanggal 1 sampai tanggal 4 di calendar warna background menjadi merah.
Minta saran master :
kalo misalnya terms checkin dan check out seperti di bawah ini: di Field start_date dan dan end_date typenya harus dirubah menjadi datetime ya?
Karena script terlalu panjang, berikut link calendar.php dan database tabel nya :
calendar.php
Tabel:
Terima kasih sebelumnya Master...
Comments
elo dapat start dan end dari db
misal 2016-01-03 s/d 2016-01-07
buat jadi "sesuatu" yg bisa jadi range ...
langsung di query nya, atau boleh dobel
SELECT
DATEDIFF(`start`,"1970-01-01") AS ts_start,
DATEDIFF(`end`,"1970-01-01") AS ts_end,
`start`,
`end`,
...
FROM
...
* field elo sesuaikan sendiri
kira-kira kalo data start 2016-01-03 dan end 2016-01-07
16803
16807
tinggal bikin range
range($data['ts_start'],$data['ts_end'])
hasilnya : array(16803,16804,16805,16806,16807)
anggap ada $array_booking
ini kumpulan tanggal booking
gw kagak tau, tampilan elo berdasar apa
tapi gw asumsikan itu tampilan booking utk 1 kamar yg sama
jadi $array_booking itu utk 1 kamar yg dimaksud
tinggal elo merge
$array_booking = array_merge($array_booking,range($data['ts_start'],$data['ts_end']));
kira-kira nantinya ...
semisal 1 kamar itu di booking tanggal-tanggal ini :
start | end
2016-01-03 | 2016-01-07
2016-01-09 | 2016-01-10
2016-01-11 | 2016-01-12
2016-01-21 | 2016-01-23
2016-01-27 | 2016-01-30
dari SELECT bakal dapat ts_start dan ts_end
ts_start | ts_end
16803 | 16807
16809 | 16810
16811 | 16812
16821 | 16823
16827 | 16830
isi $array_booking jadi : $array_booking(16803,16804,16805,16806,16807)
berikutnya jadi : $array_booking(16803,16804,16805,16806,16807,16809,16810)
berikutnya jadi : $array_booking(16803,16804,16805,16806,16807,16809,16810,16811,16812)
dst ...
itu karena fungsi array_merge() tadi
yg digabung masuk itu range(ts_start,ts_end)
sampai di sini paham ?
pas elo bikin table
itu kan berdasar tanggal
terserah seperti apa pun bentuk table elo
tapi gw yakin elo bisa bikin tanggal "YYYY-MM-DD" dari tiap cell nya
di loop nya tinggal periksa
if(in_array( unixtojd(date("U",strtotime("YYYY-MM-DD")))-2440588 ,$array_booking) {
// latar merah
}
else {
// latar lain
}
YYYY-MM-DD nya elo ganti dgn tanggal yg bener sesuai tanggal cell yg elo maksud
coba dihidupkan error reporting nya
di waktu terakhir ada error apa ?
bukan koding nya
[28-Jun-2016 15:34:16 Asia/Singapore] PHP Warning: mysqli::query(): Error reading result set's header in
elo yakin mysql elo idup ?
"MySQL server has gone away"
itu mysql nya tewas
"Error reading result set's header"
berikutnya, ya ndak dapet hasil apa-apa
"Maximum execution time of 1800 seconds exceeded"
ditunggu sampai kiamat juga ndak bakal ada hasilnya
lha wong mysql nya ndak respon
paling gampang main image buat bg
awal pake image-6
tengah (kalo ada) pake image-7
akhir pake image-14
default image-1
yg 20-21-22 ... itu maksudnya apa ?
// latar awal
}elseif(in_array( unixtojd(date("U",strtotime("2016-06-08")))-2440588 ,$array_booking){
// latar lain
}
lalu pas loop bikin kalendar ... mainan flag
$f=0; //default pake hijau
loop sepanjang tangal
if(
in_array( unixtojd(date("U",strtotime("$date_manual")))-2440588 ,$array_booking) &&
($f==0)
){
//image-6
$f=1;
}
else if(
in_array( unixtojd(date("U",strtotime("$date_manual")))-2440588 ,$array_booking) &&
in_array( unixtojd(date("U",strtotime("$date_manual")))-2440587 ,$array_booking) &&
($f==1)){
//red
}
else if(
in_array( unixtojd(date("U",strtotime("$date_manual")))-2440588 ,$array_booking) &&
!in_array( unixtojd(date("U",strtotime("$date_manual")))-2440587 ,$array_booking) &&
($f==1)){
//image-14
}
else if(
!in_array( unixtojd(date("U",strtotime("$date_manual")))-2440588 ,$array_booking) &&
($f==1)){
//green
$f=0;
}
else {
//green
}
kira-kira gitu
gw kagak nyoba
elo test sendiri