50
Universitas Kristen Petra
4. IMPLEMENTASI SISTEM
Pada bab ini akan dibahas implementasi dari sistem yang telah dirancang
dan dijelaskan pada bab sebelumnya. Pembahasan implementasi dibagi menjadi
tiga bagian yaitu implementasi Web service, aplikasi Android dan Web admin.
Implementasi Web Service
Dalam sistem, Web Service digunakan sebagai standar yang digunakan
untuk bertukar informasi antara aplikasi dengan database pada sistem. Aplikasi
menggunakan bahasa pemrograman HTML,Javascript,Jquery,CSS dan PHP pada
Server. Web Service digunakan untuk mengambil data yang digunakan pada
Aplikasi Android. Web Service yang digunakan adalah JSON. Pemanggilan fungsi
menggunakan HTTP GET.
Fungsi Login
Fungsi ini membutuhkan parameter berupa username dan password dengan
method post yang digunakan untuk pengecekan data dari form login dari user.
Password di encrypt menggunakan MD5 dan mengembalikan hasil validasi yang
berbentuk string menggunakan json_encode. Fungsi login dapat dilihat pada
Segmen Program 4.1.
Segmen Program 4.1. Fungsi Login
<?phppublic function checkuser($username,$psw) {
$q="SELECT * ". "FROM user ".
"WHERE username='$username' AND password='$psw'"; $this->perintah = mysql_query($q); while($r=mysql_fetch_array($this->perintah)) { $arr[] = $r; }
51
Segmen Program 4.1. Fungsi Login (Lanjutan)
echo '{"items":'. json_encode($arr).'}'; } } header("content-type: application/json"); $db = new DBconnect(); if (isset($_POST["username"]) || isset($_POST["psw"])) { $username=mysql_real_escape_string($_POST["username"]); $psw=mysql_real_escape_string($_POST["psw"]); $psw=md5($psw); // Encrypted Password $db->checkuser($username,$psw); } ?>Fungsi Register
Fungsi ini membutuhkan parameter berupa username, password, kota,
namalengkap, alamat, nohandphone, dan status yang digunakan untuk memasukan
data ke tabel user. Semua data dari form diamankan menggunakan
mysql_real_escape_string dan Password di encrypt menggunakan MD5. Fungsi ini
juga melakukan pengecekan terhadap username yang ada dalam database sehingga
tidak dapat membuat user dengan username yang sama. Fungsi Register dapat
dilihat pada Segmen Program 4.2.
Segmen Program 4.2. Fungsi Register
function insert_user($username,$password,$kota,$namalengkap,$alamat,$ nohandphone,$status)bxxx { $uname=mysql_real_escape_string($username); $pass=mysql_real_escape_string($password);52
Segmen Program 4.2. Fungsi Register (Lanjutan)
$pass=md5($pass); $kota=mysql_real_escape_string($kota); $namalengkap=mysql_real_escape_string($namalengkap); $alamat=mysql_real_escape_string($alamat); $nohandphone=mysql_real_escape_string($nohandphone); $status=mysql_real_escape_string($status); $hasil="";$q="SELECT * FROM user WHERE Username='$uname'"; $res=mysql_query($q); while ($row=mysql_fetch_assoc($res)) { $hasil="kembar"; } if ($hasil=="") {
$q="INSERT INTO `user`(`Username`, `Password`, `Kota`, `Nama_Lengkap`, `Alamat_lengkap`, `No_Handphone`, `Status`,`Pangkat`,`Profile_Picture`) VALUES ('$uname','$pass','$kota','$namalengkap','$alamat','$nohandp hone','$status','newbie','newbie.jpg')"; mysql_query($q); } return $hasil; }
Fungsi GetData
Fungsi ini membutuhkan parameter pgs yang merupakan data offset. Data offset
digunakan pada query untuk mengambil data urutan berdasarkan offset. Data yang
dihasil dikirim menggunakan json_encode. Fungsi GetData dapat dilihat pada
Segmen Program 4.3.
53
Segmen Program 4.3. Fungsi GetData
public function GetData(){
$pgs=$_GET["pgs"]; $q="SELECT
p.*,u.Username,u.Pangkat,u.Profile_Picture,l.latitude,l.long itude
FROM posting p INNER JOIN user u ON (p.Username=u.Username) JOIN lokasi l on (p.Id_Post=l.Id_Posting) LIMIT 2 OFFSET $pgs"; $this->perintah = mysql_query($q); while($r=mysql_fetch_array($this->perintah)) { $arr[] = $r; }
echo '{"items":'. json_encode($arr).'}'; }
Fungsi GetComment
Fungsi ini membutuhkan parameter pg dan id. Parameter id merupakan data
id_posting dan Parameter pg merupakan data offset yang nantinya digunakan pada
query MySQL. Fungsi ini juga me-replace hasil dari comment yang memiliki string
‘@’ didepannya menjadi sebuah link. Semua data yang dihasilkan dikirim
menggunakan json_encode. Fungsi GetComment dapat dilihat pada Segmen
Program 4.4.
54
Segmen Program 4.4. Fungsi GetComment
public function GetComment(){ $id=$_GET["id"]; $pg=$_GET["page"]; $pgs=$pg*3; // di awal 0*3 $ttlData=0;
$q="SELECT COUNT(*) AS TtlData FROM komentar WHERE Id_Post=$id"; //mencari di post tsb ada berapa komentar $this->perintah = mysql_query($q); while($r=mysql_fetch_array($this->perintah)) { $ttlData=$r["TtlData"]; } $finish=false; if ($pgs+3>=$ttlData) { $finish=true; }
$q="SELECT * from komentar where Id_Post=$id LIMIT 3 OFFSET $pgs ";
$this->perintah = mysql_query($q);
while($r=mysql_fetch_array($this->perintah)) {
$r["Komentar"]=preg_replace("/(\@)([^\s]+)/", " <a data-ajax='false' onclick='openuser($2)' name='$2'>@$2</a> ", $r['Komentar']);
if ($finish) {
$r["selesai"]="s"; }
55
Segmen Program 4.4. Fungsi GetComment (Lanjutan)
else {
$r["selesai"]="b"; }
$arr[] = $r; }
echo '{"items":'. json_encode($arr).'}'; }
56
Fungsi IncLike
Fungsi ini membutuhkan parameter id dan user. Parameter id digunakan
untuk mengetahui id posting yang ditambah nilai like-nya. Fungsi ini juga
melakukan pengecekan terhadap user jika user tersebut sudah pernah memberikan
vote, sehingga tidak dapat memberikan vote lagi untuk kedua kali. Data yang dihasil
dikirim menggunakan json_encode. Fungsi IncLike dapat dilihat pada Segmen
Program 4.5.
Segmen Program 4.5. Fungsi IncLike
public function IncLike(){
$id=$_GET["id"]; $user=$_GET["user"]; $hasil="";
$q="SELECT * FROM inclike WHERE username= '$user' AND id_post= $id"; //echo $q; $res=mysql_query($q); while ($row=mysql_fetch_assoc($res)) { $hasil="kembar"; echo json_encode("kembar"); } if ($hasil=="") {
$q="INSERT INTO `inclike`(`Id_post`, `username`, `like_unlike`) VALUES ('$id','$user',1)";
mysql_query($q);
echo json_encode("masuk"); }
return $hasil; }
57
Fungsi Popular
Fungsi ini digunakan untuk mengetahui posting gambar terpopular dari
seluruh data yang ada. Fungsi ini mengambil data like dan unlike sebagai
perhitungan data dan diurutkan menggunakan metode Descending. Data yang
dihasilkan dikirim menggunakan json_encode. Fungsi Popular dapat dilihat pada
Segmen Program 4.6.
Segmen Program 4.6. Fungsi Popular
public function popular(){ //$id=$_GET["id"]; $q="SELECT p.*, COALESCE(x.ttllike,0) AS ttllike,COALESCE(x2.ttlunlike,0) AS ttlunlike FROM posting p LEFT JOIN (
SELECT id_post,count(id_like) AS ttllike,SUM(id_like) AS sumlike FROM inclike WHERE like_unlike=1 GROUP BY id_post ) x ON (x.id_post=p.id_post) LEFT JOIN (
SELECT id_post,count(id_like) AS ttlunlike,SUM(id_like) AS sumunlike
FROM inclike
WHERE like_unlike=2 GROUP BY id_post
) x2 ON (x2.id_post=p.id_post)
ORDER BY COALESCE(x.ttllike,0)/ (x.sumlike+x2.sumunlike) DESC";
$this->perintah = mysql_query($q);
while($r=mysql_fetch_array($this->perintah)) {
58
Segmen Program 4.6. Fungsi Popular (Lanjutan)
}echo '{"items":'. json_encode($arr).'}'; }
Fungsi Distance
Fungsi ini membutuhkan parameter latitude,longitude yang dituju,
latitude,longitude asal tempat dan unit untuk menentukan satuan dari data yang
dihasilkan. Fungsi ini mengkonversikan parameter-parameter tersebut menjadi
satuan yang dapat operasikan. Data yang dihasilkan dikirim menggunakan
json_encode. Fungsi Distance dapat dilihat pada Segmen Program 4.7.
Segmen Program 4.7. Fungsi Distance
function distance($lat1, $lon1, $lat2, $lon2, $unit) { // menghitung jarak dalam km
$theta = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); $dist = acos($dist); $dist = rad2deg($dist); $miles = $dist * 60 * 1.1515; $unit = strtoupper($unit); if ($unit == "K") { return (ceil($miles * 1.609344)); } else if ($unit == "N") { return ($miles * 0.8684); } else { return $miles; } }
59
Fungsi GetNearme
Fungsi ini membutuhkan parameter latitude dan longitude asal yang
digunakan untuk mengukur jarak terdekat dari latitude dan longitude posting yang
ada. Lalu data yang ada diurutkan menggunakan bubble sort. Data yang dihasilkan
dikirim menggunakan json_encode. Fungsi GetNearme dapat dilihat pada Segmen
Program 4.8.
Segmen Program 4.8. Fungsi GetNearme
public function GetNearme() // menghitung lokasi terdekat {
$lat=$_GET["latitude"]; $lng=$_GET["longitude"];
$q=" SELECT * from lokasi l INNER JOIN posting p ON (p.`Id_Post`=l.Id_Posting) JOIN user u ON (u.Username=p.Username)"; $this->perintah = mysql_query($q); while($r=mysql_fetch_array($this->perintah)) { $jrk=$this->distance($lat,$lng,$r["Latitude"],$r["Longitude"],"K"); $r["jarak"]=$jrk." km"; $r["jarak2"]=$jrk; $arr[] = $r; } for ($i=0;$i<count($arr);$i++) { for ($j=$i+1;$j<count($arr);$j++) { if ($arr[$j]["jarak2"]<$arr[$i]["jarak2"]) { $temp=$arr[$j]; $arr[$j]=$arr[$i]; $arr[$i]=$temp;
60
Segmen Program 4.1. Fungsi GetNearme (Lanjutan)
}}
}// bubble sort jarak
echo '{"items":'. json_encode($arr).'}'; }
Fungsi Getrating
Fungsi ini membutuhkan parameter username yang merupakan primary key pada
tabel. Fungsi ini digunakan untuk menghitung rating pada user yang dituju. Data
yang dihasilkan dikirim menggunakan json_encode. Fungsi GetData dapat dilihat
pada Segmen Program 4.9.
Segmen Program 4.9. Fungsi Getrating
public function Getrating(){ $username=$_GET["username"]; $q="SELECT p.Username,p.id_post,COALESCE(x.ttllike,0) AS ttllike,COALESCE(x2.ttlunlike,0) AS ttlunlike, (SUM(COALESCE(x.ttllike,0))-SUM(COALESCE(x2.ttlunlike,0)))/(SUM(COALESCE(x.ttllike,0))+S UM(COALESCE(x2.ttlunlike,0))) *5 AS rating,, COUNT(p.id_post) as totalpost
FROM posting p LEFT JOIN (
SELECT id_post,count(id_like) AS ttllike FROM inclike WHERE like_unlike=1 GROUP BY id_post ) x ON (x.id_post=p.id_post) LEFT JOIN (
SELECT id_post,count(id_like) AS ttlunlike FROM inclike
61
Segmen Program 4.9. Fungsi Getrating (Lanjutan)
WHERE like_unlike=2GROUP BY id_post
) x2 ON (x2.id_post=p.id_post) WHERE p.Username= '$username' ORDER BY COALESCE(x.ttllike,0)-COALESCE(x2.ttlunlike,0) DESC"; $this->perintah = mysql_query($q); while($r=mysql_fetch_array($this->perintah)) { $arr[] = $r; }
echo '{"items":'. json_encode($arr).'}'; }
Fungsi GetSearch
Fungsi ini membutuhkan parameter pgs yang merupakan data offset. Data offset
digunakan pada query untuk mengambil data urutan berdasarkan offset. Data yang
dihasilkan dikirim menggunakan json_encode. Fungsi GetData dapat dilihat pada
Segmen Program 4.10.
Segmen Program 4.10. Fungsi GetSearch
public function GetSearch(){ $keyword=$_GET["keyword"]; $jenismasakan=$_GET["jenismasakan"]; $tipetempat=$_GET["tipetempat"]; $awal=$_GET["awal"]; $akhir=$_GET["akhir"];
$q="SELECT p.*,t.Nama_Tipe_Tempat FROM posting p INNER JOIN tipe_tempat t ON (p.`Id_Post`=t.`Id_Post`)
WHERE ('$keyword' ='' OR p.Nama_Makanan LIKE '%%') AND ('$jenismasakan' ='' OR p.Jenis_Masakan = '$jenismasakan') AND ('$tipetempat' ='' OR t.Nama_Tipe_Tempat = '$tipetempat') AND ($awal ='' OR p.Harga >= $awal) AND ($akhir ='' OR p.Harga <= $akhir) ";
62
Segmen Program 4.10. Fungsi GetSearch (Lanjutan)
$this->perintah = mysql_query($q);
while($r=mysql_fetch_array($this->perintah)) {
$arr[] = $r; }
echo '{"items":'. json_encode($arr).'}'; }
Fungsi GetItem
Fungsi ini membutuhkan parameter id transaksi sebagai data yang dituju untuk
melihat makanan apa saja yang. Data yang dihasilkan dikirim menggunakan
json_encode. Fungsi GetItem dapat dilihat pada Segmen Program 4.11.
Segmen Program 4.11. Fungsi GetItem
public function GetItem(){ $id=$_GET["id"]; $q="SELECT * FROM transaksi t JOIN isi_transaksi i ON i.`Id_Transaksi` = t.`Id_Transaksi` JOIN item m ON m.Id_Item = i.Id_Item JOIN posting p ON p.Id_Post = m.Id_Post WHERE i.`Id_Transaksi`=$id"; $this->perintah = mysql_query($q); while($r=mysql_fetch_array($this->perintah)) { $arr[] = $r; }
echo '{"items":'. json_encode($arr).'}'; }
63
Implementasi Aplikasi Android
Aplikasi android ini dibangun berdasarkan desain user interface yang telah
dirancang pada bab sebelumnya. Penjabaran aplikasi Android dibagi menjadi
beberapa bagian program menurut fitur yang disediakan antara lain sebagai berikut.
Fungsi GetLokasi
Fungsi ini digunakan untuk mengambil data posisi user melalui melalui GPS pada
gadget yang user pakai. Data yang dihasilkan disimpan dalam local storage. Fungsi
GetLokasi dapat dilihat pada Segmen Program 4.12.
Segmen Program 4.12. Fungsi GetLokasi
if (navigator.geolocation) { //google MAP APInavigator.geolocation.getCurrentPosition(showPosition); } else {
alert("Tidak ada geolocation"); }; function showPosition(position) { console.log("Latitude : "+position.coords.latitude + ",Longitude: " + position.coords.longitude); var la1=position.coords.latitude; var ln1=position.coords.longitude; window.localStorage.setItem("la1",la1); window.localStorage.setItem("ln1",ln1); }
Fungsi Share Facebook // Tanya
Fungsi ini digunakan untuk dapat mengirimkan data ke facebook. Fungsi GetData
dapat dilihat pada Segmen Program 4.13.
64
Segmen Program 4.13. Fungsi Share Facebook
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src =
"//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.3"; fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk')); </script>
Fungsi Upload Gambar/Video
Fungsi ini membutuhkan parameter picture source dan destination source yang
digunakan untuk mengupload sebuah gambar/video. Data yang didapat bisa dari
gallery maupun langsung dari camera.. Fungsi Upload Gambar/Video dapat dilihat
pada Segmen Program 4.14.
Segmen Program 4.14. Fungsi Upload Gambar/Video
var pictureSource; var destinationType; document.addEventListener("deviceready",onDeviceReady,false) ; function onDeviceReady() { pictureSource=navigator.camera.PictureSourceType; destinationType=navigator.camera.DestinationType; } function onPhotoDataSuccess(imageData) { var smallImage = document.getElementById('smallImage'); smallImage.style.display = 'block';65
Segmen Program 4.1. Fungsi Upload Gambar/Video
} function onPhotoFileSuccess(imageData) { console.log(JSON.stringify(imageData)); var smallImage = document.getElementById('smallImage'); smallImage.style.display = 'block'; smallImage.src = imageData; } function win(r) { alert("success "+r.response); console.log("Code = " + r.responseCode); console.log("Response = " + r.response); console.log("Sent = " + r.bytesSent); window.localStorage.setItem("filename", r.response); } function fail(error) {alert("An error has occurred: Code = " + error.code); } function onPhotoURISuccess(imageURI) { var largeImage = document.getElementById('largeImage'); largeImage.style.display = 'block'; largeImage.src = imageURI;
66
Segmen Program 4.14. Fungsi Upload Gambar/Video (Lanjutan)
window.localStorage.setItem("filenamelocal", imageURI);var options = new FileUploadOptions(); options.fileKey="file";
var ft = new FileTransfer();
var xurl=ipconfig+"services/temp.php";
ft.upload(imageURI, xurl , win, fail, options); window.location="uploadfoto.html"; } function capturePhotoWithData() { navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50 }); } function capturePhotoWithFile() { navigator.camera.getPicture(onPhotoFileSuccess,
onFail, { quality: 50, destinationType: Camera.DestinationType.FILE_URI });
}
function uploadVideo(mediaFile,method) { var ft = new FileTransfer(), path = mediaFile,
name = "video.mp4";
var options = new FileUploadOptions(); options.chunkedMode = false;
options.fileKey = "file"; options.fileName = name;
options.mimeType = "video/mp4";
67
Segmen Program 4.14. Fungsi Upload Gambar/Video (Lanjutan)
ft.upload(path, ipconfig+"/services/tempvideo.php", function(r) { alert('Success ' + r.response); }, function(error) { alert('Error ' + path + ': ' + error.code); }, options); } function onPhotoURISuccessvid(imageURI) { uploadFile(imageURI,"library"); }function getVideo(source, type) { navigator.camera.getPicture(onPhotoURISuccessvid, onFail, { quality: 50, destinationType: destinationType.FILE_URI, sourceType: source, mediaType: type}); } function getPhoto(source) { navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, destinationType: destinationType.FILE_URI, sourceType: source }); } function onFail(message) {
alert('Failed because: ' + message); }
68
Fungsi GoDirection
Fungsi ini membutuhkan parameter latitude,longitude asal dan tujuan yang
dibaca oleh google map API dan menjadi direction untuk user. Fungsi GetData
dapat dilihat pada Segmen Program 4.15.
Segmen Program 4.15. Fungsi GoDirection
<script>var directionsDisplay;
var directionsService = new google.maps.DirectionsService(); var map;
var haight = new google.maps.LatLng(la1,ln1); var oceanBeach = new google.maps.LatLng(la2,ln2); function initialize() {
directionsDisplay = new google.maps.DirectionsRenderer(); var mapOptions = {
zoom: 14, center: haight }
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
directionsDisplay.setMap(map); }
function calcRoute() {
var selectedMode = document.getElementById('mode').value; var request = { origin: haight, destination: oceanBeach, travelMode: google.maps.TravelMode[selectedMode] }; directionsService.route(request, function(response, status) { if (status == google.maps.DirectionsStatus.OK) {
69
Segmen Program 4.1. Fungsi GoDirection (Lanjutan)
directionsDisplay.setDirections(response); } }); } google.maps.event.addDomListener(window, 'load', initialize);Fungsi GetComment
Fungsi ini membutuhkan parameter id posting untuk menampilkan komentar yang
ada pada sebuah posting. Fungsi mengirimkan data ajax dengan tambahan
parameter page untuk menghitung offset. Fungsi GetComment dapat dilihat pada
Segmen Program 4.16.
Segmen Program 4.16. Fungsi GetComment
function get_comment(id_post){ // untuk view comment var page=0; if (arrPage[id_post]!=null) { page=arrPage[id_post]; } arrPage[id_post]=page+1; var AmbilData; var xurl=ipconfig+'services/index/posting_service.php?page='+pag e+'&id='+id_post+'&f=comment'; //console.log(xurl); $.ajax({ type : 'GET', url : xurl, async: true, beforeSend: function(x) { if(x && x.overrideMimeType) {
70
Segmen Program 4.16. Fungsi GetComment (Lanjutan)
x.overrideMimeType("application/j-son;charset=UTF-8"); } }, dataType : 'json', success : function(data){ AmbilData = data.items; //alert(data.items); if (page==0) { $("#dcomment"+id_post).html(""); } else if (page==1) { $("#dcomment2_"+id_post).html(""); }
$.each(AmbilData, function(index, loaddata) { if (page==0)
{ $("#dcomment"+id_post).append("<ul>
<b>"+loaddata.Username+"</b> "+loaddata.Komentar+" </ul>"); }
else {
$("#dcomment2_"+id_post).append("<ul>
<b>"+loaddata.Username+"</b> "+loaddata.Komentar+" </ul>"); }
if (loaddata.selesai=="s") {
$("#seemore_"+id_post).hide(); // button bawah $("#dcomment2_"+id_post).hide(); //
}
//return index<2;//batas comment view });
71
Segmen Program 4.16. Fungsi GetComment (Lanjutan)
},error: function(jqXHR, exception) { alert("error get_comment"); }
}); };
Fungsi IncLike
Fungsi ini membutuhkan parameter username pengguna dan id_posting yang
ditambah nilai like-nya. Fungsi mengirim data ajax untuk melakukan eksekusi
query pada server. Dan Server mengembalikan data berupa JSON. Fungsi GetData
dapat dilihat pada Segmen Program 4.17.
Segmen Program 4.17. Fungsi IncLike
function inclike(id_post){ var username=window.localStorage.getItem("username"); var AmbilData; var xurl=ipconfig+'services/index/posting_service.php?id='+id_po st+'&user='+username+'&f=inc_like'; $.ajax({ type : 'GET', url : xurl, async: true, beforeSend: function(x) { if(x && x.overrideMimeType) {x.overrideMimeType("application/j-son;charset=UTF-8"); } }, dataType : 'json', success : function(data){
72
Segmen Program 4.17. Fungsi IncLike (Lanjutan)
if (data=="kembar"){
alert("like sudah dilakukan"); }
else {
alert("berhasil tambah like"); show_like(id_post,1);
notif(username+' like your photo'); }
},
error: function(jqXHR, exception) { alert("error inc_like"); } }); }
Fungsi GetData
Fungsi ini digunakan untuk menampilkan data posting pada halaman utama. Fungsi
ini mengirim ajax ke server dan server mengembalikan data dalam format JSON.
Data yang didapat digunakan untuk me-replace variable-variable yang ada pada
halaman. Fungsi ini juga mengecek apakah posting tersebut berupa gambar atau
video. Fungsi GetData dapat dilihat pada Segmen Program 4.18.
Segmen Program 4.18. Fungsi GetData
function get_data(){ var AmbilData; var xurl=ipconfig+'services/index/posting_service.php?f=post&pgs =0'; console.log(xurl); $.ajax({ type : 'GET',73
Segmen Program 4.18. Fungsi GetData (Lanjutan)
url : xurl,async: true,
beforeSend: function(x) {
if(x && x.overrideMimeType) {
x.overrideMimeType("application/j-son;charset=UTF-8"); } }, dataType : 'json', success : function(data){ if(data){ AmbilData = data.items;
$.each(AmbilData, function(index, loaddata) { var isi=$("#template").html(); isi=isi.replace("xprofpict",loaddata.Profile_Picture); isi=isi.replace("xpangkat",loaddata.Pangkat); isi=isi.replace("xnamamakanan",loaddata.Nama_Makanan); var hargax = accounting.formatMoney(loaddata.Harga, { symbol: "Rp", format: "%s %v" }); // 5,318,008.00 GBP isi=isi.replace("xharga",hargax); isi=isi.replace("xcaption",loaddata.Caption); isi=isi.replace("xuserpost",loaddata.Username); isi=isi.replace("xuserpost1",loaddata.Username);//tombol follow isi=isi.replace("xgouser",loaddata.Username);//click user
74
Segmen Program 4.1. Fungsi GetData (Lanjutan)
isi=isi.replace("xgouser1",loaddata.Username);//click user isi=isi.replace("xdate",loaddata.Posting_Date); isi=isi.replace("xcomment2","dcomment2_"+loaddata.Id_Post); isi=isi.replace("xcomment","dcomment"+loaddata.Id_Post); isi=isi.replace("xlike","like"+loaddata.Id_Post); isi=isi.replace("xunlike","unlike"+loaddata.Id_Post); isi=isi.replace("like_hide","like_hide"+loaddata.Id_Post); isi=isi.replace("like_show","like_show"+loaddata.Id_Post); isi=isi.replace("unlike_hide","unlike_hide"+loaddata.Id_Post ); isi=isi.replace("unlike_show","unlike_show"+loaddata.Id_Post ); isi=isi.replace("xklikmenu","klikmenu"+loaddata.Id_Post); if(status=="Resto_Owner" && loaddata.Username==username){alert(loaddata.Id_Post+"ini punya login"); $("#klikmenu"+loaddata.Id_Post).hide(); // jika member tidak bisa membuat
}
isi=isi.replace("la2",loaddata.latitude); isi=isi.replace("ln2",loaddata.longitude);
75
Segmen Program 4.1. Fungsi GetData (Lanjutan)
isi=isi.replace("xid1",loaddata.Id_Post); isi=isi.replace("xid2",loaddata.Id_Post);//comment isi=isi.replace("xid3",loaddata.Id_Post);// see moreisi=isi.replace("xid4",loaddata.Id_Post);// id see more isi=isi.replace("xid6",loaddata.Id_Post);// show like isi=isi.replace("xid5",loaddata.Id_Post);// klik menu isi=isi.replace("xid7",loaddata.Id_Post);// report spam isi=isi.replace("xfb",loaddata.Id_Post);//share facebook isi=isi.replace("submit-komentar","submit-komentar"+loaddata.Id_Post); var str = loaddata.Image; var n = str.indexOf("mp4"); if(n==-1) { isi=isi.replace("xximg","<img class='sizeimg' src='daftarimage/"+loaddata.Image+"' />"); } else{ isi=isi.replace("xximg","<video width='100%' height='240' controls> "+ "<source src='daftarimage/"+loaddata.Image+"' type='video/mp4'>"+
76
Segmen Program 4.1. Fungsi GetData (Lanjutan)
"</video>"); } isi=isi.replace("ximg","daftarimage/"+loaddata.Image); show_like(loaddata.Id_Post,1);//like show_like(loaddata.Id_Post,2);//unlike get_comment(loaddata.Id_Post); $("#content2").append(isi); });}//jika data itu ada else{
alert("habis");
}//jika data tidak ada
},
error: function(jqXHR, exception) { alert("error get_data");
} }); }
Fungsi InsertKomentar
Fungsi ini digunakan untuk memasukan komentar pada database. Fungsi ini
membutuhkan parameter komentar, id, dan username yang akan dikirimkan
melalui ajax. Data yang dihasilkan oleh server berbentuk JSON. Fungsi
InsertKomentar dapat dilihat pada Segmen Program 4.19.
77
Segmen Program 4.19. Fungsi InsertKomentar
$(document).ready(function() { $.mobile.allowCrossDomainPages = true; $.support.cors = true; $("#submit-komentar").click(function() { var komentar=$("#Komentar").val(); alert(aktifID); urlx= ipconfig+'services/index/insert-komentar.php?komentar='+komentar+'&id='+aktifID+'&user='+use rname; $.ajax({ type : 'GET', url : urlx, async: true, beforeSend: function(x) {if(x && x.overrideMimeType) { x.overrideMimeType("application/j-son;charset=UTF-8"); } }, // //pengecekan kedua // data: {komentar:komentar,id:aktifID,user:username}, dataType : 'json', success : function(data){ //alert("cc"); $("#Komentar").val(""); get_comment(aktifID);
$( "#popuplogin" ).popup( "close" ); //alert("success");
},
78
Segmen Program 4.19. Fungsi InsertKomentar (Lanjutan)
//alert("dd");
$("#Komentar").val(""); get_comment(aktifID); //???
$( "#popuplogin" ).popup( "close" ); //alert("gagal"); }
}); });
});
Implementasi Web Admin
Web Admin digunakan untuk mengoperasikan data yang digunakan pada
aplikasi. Admin dapat menambah, mengedit, menghapus, dan memblokir data yang
ada agar pengguna dapat dibantu oleh admin untuk melakukan aksi yang tidak dapat
dilakukan oleh pengguna aplikasi.
Fungsi Add User
Fungsi ini digunakan untuk memasukan User baru pada database. Fungsi
ini membutuhkan parameter username, password, namalengkap, kota, no
handphone, alamat lengkap, status, pangkat yang akan dieksekusi melalui query..
Fungsi AddUser dapat dilihat pada Segmen Program 4.20.
Segmen Program 4.20. Fungsi Add User
if ( isset( $_POST['add'] ) ){ include 'db.php'; $username=mysql_real_escape_string($_POST['username']) ; $password= mysql_real_escape_string($_POST['password']) ;79
Segmen Program 4.1. Fungsi Add User (Lanjutan)
$namalengkap= mysql_real_escape_string($_POST['namalengkap']) ; $alamatlengkap= mysql_real_escape_string($_POST['alamatlengkap']) ; $kota= mysql_real_escape_string($_POST['kota']) ; $nohandphone= mysql_real_escape_string($_POST['nohandphone']) ; $status= mysql_real_escape_string($_POST['status']) ; $pangkat= mysql_real_escape_string($_POST['pangkat']) ; $q="INSERT INTO `user`(`Username`, `Password`, `Nama_Lengkap`, `Alamat_Lengkap`, `Kota`, `No_Handphone`,
`Status`, `Pangkat`) VALUES
('$username','$password','$namalengkap','$alamatlengkap','$k ota',$nohandphone,'$status','$pangkat')"; $result = mysql_query($q); if (!$result) { echo "<script type='text/javascript'>alert('gagal tambah
User');</script>";
header("Location: user.php");
die('Invalid query: ' . mysql_error());
80
if($result){echo "<script type='text/javascript'>alert('berhasil tambah
User');</script>"; header("Location: user.php"); } mysql_close($conn); }
Fungsi Delete User
Fungsi ini digunakan untuk menghapus data user pada database. Fungsi ini
membutuhkan parameter username yang akan dihapus. Fungsi DeleteUser dapat
dilihat pada Segmen Program 4.21.
Segmen Program 4.21. Fungsi Delete User
if( isset($_GET['user']) ){$user =mysql_real_escape_string($_REQUEST['user']); //echo $user;
echo "<script type='text/javascript'>alert('berhasil delete $user');</script>";
// sending query
$result=mysql_query("DELETE FROM user WHERE Username = '$user'")
or die(mysql_error()); echo $result;
if (!$result) {
die('Invalid query: ' . mysql_error()); echo"Gagal Delete User";
81
Segmen Program 4.21. Fungsi Delete User (Lanjutan)
}if($result){
echo "Berhasil Delete User"; }
header("Location: user.php"); }
Fungsi Block/Unblock User
Fungsi ini digunakan untuk block maupun unblock user pada database.
Fungsi ini membutuhkan parameter username yang akan dipilih. Fungsi
Block/Unblock User dapat dilihat pada Segmen Program 4.22.
Segmen Program 4.22. Fungsi Block/Unblock User
if( isset($_GET['user']) ){$user =mysql_real_escape_string($_REQUEST['user']); echo $user;
$result=mysql_query("UPDATE `user` SET `Block`=1 WHERE `Username` = '$user'")
or die(mysql_error()); echo $result;
if (!$result) {
die('Invalid query: ' . mysql_error()); echo"aaa";
}
82
Segmen Program 4.1. Fungsi Block/Unblock User (Lanjutan)
echo "<scripttype='text/javascript'>alert('berhasil delete $user');</script>";
Segmen Program 4.22. Fungsi Block/Unblock User header("Location: user.php"); } } if( isset($_GET['user_unblock']) ){ $user =mysql_real_escape_string($_REQUEST['user_unblock']);
$result=mysql_query("UPDATE `user` SET `Block`=0 WHERE `Username` = '$user'")
or die(mysql_error()); echo $result;
if (!$result) {
die('Invalid query: ' . mysql_error()); echo"aaa"; } if($result){ echo "<script type='text/javascript'>alert('berhasil delete $user');</script>"; header("Location: user.php"); } }
Fungsi Login Admin
Fungsi ini digunakan untuk login pada halaman admin. Fungsi ini membutuhkan
parameter username dan password untuk dilakukan validasi dengan data pada
database. Fungsi Login Admin dapat dilihat pada Segmen Program 4.23.
83
Segmen Program 4.23. Fungsi Login Admin
function validationcheck(){
if (document.mylogin.username.value == "") { alert("Please Enter Username.");
document.mylogin.username.focus();
} else if (document.mylogin.password.value == "") { alert("Please Enter Password.");
document.mylogin.psw.focus(); } else { alert("berhasil"); <?php $user="zgxzgend_yoel"; $pass="yoel1yoel2"; $host="101.50.1.33"; $db="zgxzgend_ta";
mysql_connect($host, $user, $pass) or die (mysql_error);
mysql_select_db($db);
session_start(); //mulai session, krena kita akan menggunakan session pd file php ini
//include 'config.php'; //hubungkan dengan config.php untuk berhubungan dengan database
$username=$_POST['username']; //tangkap data yg di input dari form login input username
$password=$_POST['password']; //tangkap data yg di input dari form login input password
$username = stripslashes($username); $password = stripslashes($password);
84
Segmen Program 4.23. Fungsi Login Admin (Lanjutan)
$password = mysql_real_escape_string($password);
$query=mysql_query("select * from Admin where Username='$username' and Password='$password'"); //melakukan pengampilan data dari database untuk di cocokkan $xxx=mysql_num_rows($query); //melakukan pencocokan
if($xxx==TRUE){ // melakukan pemeriksaan kecocokan dengan percabangan.
$_SESSION['username']=$username; //jika cocok, buat session dengan nama sesuai dengan username
header("location:user.php"); // dan alihkan ke index.php
}else{ //jika tidak tampilkan pesan gagal login ?> alert("gagal/password salah") <?php } ?> } }