• Tidak ada hasil yang ditemukan

4. IMPLEMENTASI SISTEM

N/A
N/A
Protected

Academic year: 2021

Membagikan "4. IMPLEMENTASI SISTEM"

Copied!
23
0
0

Teks penuh

(1)

40

Universitas Kristen Petra

4. IMPLEMENTASI SISTEM

Pada bab ini akan membahas tentang implementasi dari sistem web

pembanding fashion wanita.

4.1

Koneksi dan Membuat Database dan Table pada MySQL Server

Dalam pembuatan sistem ini menggunakan XAMPP Server untuk

melakukan koneksi pada MySQL server. Untuk menjalankan XAMPP Server

tekan start pada modul Apache dan MySQL seperti pada Gambar 4.1.

Gambar 4.1. Connect XAMPP Server

4.2

Setting MySQL

Dalam pembuatan database, diperlukan untuk mengisi nama database

pada form yang sudah disediakan dan kemudian mengklik tombol create seperti

pada Gambar 4.2.

(2)

41

Universitas Kristen Petra

Langkah berikutnya adalah membuat tabel. Setelah pembuatan database,

maka akan ditampilkan menu untuk pembuatan tabel seperti pada Gambar 4.3.

Gambar 4.3. Pembuatan tabel MySQL

Pada menu untuk pembuatan tabel, user diminta untuk memasukkan nama

tabel, jumlah fields yang diinginkan, dan menekan tombol “go”. Selanjutnya akan

muncul tampilan seperti pada Gambar 4.4.

Gambar 4.4. Pengaturan field tabel

Pada form dalam Gambar 4.4 user diminta untuk mengisi nama field dan

pengaturan lainnya seperti type dari field tersebut.

4.3

Koneksi Database dari MySQL Server ke PHP My Admin

Jika ingin melakukan koneksi antara PHP dan MySQL Server diperlukan

coding seperti pada Segmen 4.1. Coding tersebut harus selalu ada setiap kali ingin

mengkoneksikan database dengan PHP.

(3)

42

Universitas Kristen Petra

Segmen 4.1. Connect Database

4.4

Konfigurasi Database Server

Pada MySQL sebagai database server, dibuat database dengan rincian

sebagai berikut:

a. Nama database: fashiongrabber

b. User: root

c. Password:

Database tersebut berisi tabel dan field yang telah didesain oleh penulis pada

bab sebelumnya.

4.5

Implementasi Program

Implementasi program merupakan penerapan rancangan dari desain

sistem yang telah dibuat. Berikut ini Tabel 4.1 yang menjelaskan function dalam

sistem dan keterangan beserta segmen yang berkaitan pada program.

Function dalam sistem

Tabel 4.1.

No

Function

Keterangan

1.

Home

Menampilkan kotak pencarian, 5 forum

terbaru, service yang ditawarkan dan about

us.

2.

Product

Menampilkan hasil pencarian, detail

produk dan membandingkan produk yang

telah dipilih user.

3.

Review

Menambah dan menampilkan data review.

4.

Forum

Membuat dan menampilkan data forum.

5.

User

Menampilkan data dari user.

<?php $db = new

mysqli("localhost","root","","fashiongrabber"); if($db->connect_errno > 0)

{

die('Unable to connect to database [' . $db->connect_error . ']'); }?>

(4)

43

Universitas Kristen Petra

4.5.1

Implementasi Home

Home atau halaman utama berisi kotak pencarian, login member, 5 forum

terbaru, service yang ditawarkan, dan about us. Pada halaman home ini user dapat

melakukan pencarian produk, melihat 5 forum terbaru dan melihat informasi

mengenai Fashion Grabber.

Function Home

Tabel 4.2.

No.

Function

Keterangan

Segmen

1.

Search

Menampilkan kotak pencarian.

-

2.

5 Forum Terbaru

Menampilkan 5 forum terbaru.

-

3.

Service

Menampilkan service yang

ditawarkan oleh Fashion

Grabber.

-

4.

About Us

Menampilkan sekilas mengenai

Fashion Grabber.

-

4.5.2

Implementasi Product

Pada halaman product, user dapat melihat hasil pencarian produk,

melakukan filter harga serta dapat melakukan sort dengan harga dan review.

Terdapat beberapa function dalam halaman produk.

Function

tersebut berguna

untuk mengambil data, menampilkan data yang telah diambil dan

membandingkan produk yang telah dipilih oleh user.

Function Product

Tabel 4.3.

No.

Function

Keterangan

Segmen

1.

getData

Mengambil data dari

Tokopedia, Lazada dan Zalora.

4.2, 4.3, 4.4, 4.5,

4.6, 4.7

2.

Load data

Menampilkan data produk yang

telah disimpan dalam database.

4.8

3.

Compare

Membandingkan harga produk

yang telah dipilih oleh user.

(5)

44

Universitas Kristen Petra

Dalam function getData terdapat beberapa

function

dalam pengambilan

data.

Function

tersebut dibagi menurut website sumber pengambilan data. Untuk

pengambilan data dari Zalora menggunakan web service, Tokopedia

menggunakan PHP cURL, dan pengambilan data dari Lazada menggunakan

Simple HTML DOM.

Function getData

Tabel 4.4.

No.

Function

Keterangan

Segmen

1.

Cj_api_call

Memanggil function cj_api

4.2

2.

Cj_api

Mengambil data dari web

service yang disediakan oleh

Zalora yaitu CJ.

4.3

3.

scrape

Mengambil data dari Tokopedia

scrapeProductTokped Mengambil data produk seperti

nama, gambar, url, dan harga.

4.4

scrapeDesc

Mengambil deskripsi produk.

4.5

curlPostFields

Setting PHPcURL.

4.6

4.

callhtmldom

Mengambil data dari Lazada

4.7

Segmen 4.2 dan Segmen 4.3 diambil dari http://enkognedo.com/internet/

design/programming/67-php/254-commission-junction-web-services-using-rest

dengan melakukan beberapa perubahan. Pada Segmen 4.2 sistem memanggil

function Cj_api dengan mengirimkan beberapa parameter yaitu keyword, jumlah

maximal item, dan kategori.

(6)

45

Universitas Kristen Petra

Segmen 4.2. Function Cj_api_call

Segmen 4.3 adalah function yang digunakan untuk mengambil data dari

web service CJ. Web service CJ mengirimkan data berupa advertiser id yaitu id

milik Zalora 3852850, advertiser name yaitu Zalora-ID, kategori produk, url

produk, currency yaitu IDR, deskripsi dari produk dan url gambar. Web service

CJ langsung mengirimkan data deskripsi produk tanpa harus membuka url produk

terlebih dahulu sehingga tidak diperlukan proses tambahan untuk mengambil

deskripsi dari produk tersebut. Jika data produk tersebut belum ada di database,

data produk tersebut disimpan ke dalam database. Jika data produk tersebut sudah

ada di database, maka akan dilakukan pengecekan apakah harga produk tersebut

mengalami perubahan. Data produk yang mengalami perubahan harga akan

diupdate dan ditambahkan ke dalam database trend_harga.

<?php

// Commission Junction Product Catalog Search Service (REST) API $keyword_string = $_GET['key'];

$keyword_string = urlencode($keyword_string); // handles spaces and such

$count = "100";

$cat = $_GET['category']; // send request to API $cURL = curl_init();

curl_setopt($cURL, CURLOPT_URL,

'localhost/Skripsi/product/cj_api.php?keyword='.$keyword_string.' &max='.$count.'&cat='.$cat);

curl_setopt($cURL, CURLOPT_HEADER, 0); // we do not want the header unless troubleshooting

curl_setopt($cURL, CURLOPT_RETURNTRANSFER, 1); $strPage = curl_exec($cURL);

curl_close($cURL); echo($strPage); ?>

(7)

46

Universitas Kristen Petra

Segmen 4.3. Function Cj_api

<?php $websiteid= "7909770"; $CJ_DevKey= "00a77e240ba6a8f50b764f3304674918035410560f8c7b37c88c3439c79e35 753335f292f9ec00ab775dadd8ba27d722067f966002a1eb7f0531cc62d23db dd7c1/0094fd4f2112122f500fe0a9981c2c57f0f601461cb4b112d1116e8f8 b32ff888d1a829c4a2c20f1e76cec6ee8f7c7a4a2133826a507300bf962b276 aa905b3765"; $currency="IDR"; include '../connectdb.php'; $advs="3852850";

// results from (joined), (CIDs), (Empty String), (notjoined) $targeturl="https://product-search.api.cj.com/v2/product-search?"; $results = " "; if (isset($_GET["keyword"])) { $keywords = $_GET["keyword"]; $keywords = urlencode($keywords); $targeturl.="&keywords=$keywords"; } if (isset($_GET["max"])) { $maxresults = $_GET["max"]; $targeturl.="&records-per-page=".$maxresults; } $cat=$_GET["cat"]; $targeturl.="&website-id=$websiteid"; $targeturl.="&advertiser-ids=$advs"; $targeturl.="&currency=$currency"; $ch = curl_init($targeturl);

curl_setopt($ch, CURLOPT_POST, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: '.$CJ_DevKey)); // send development key

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $response = curl_exec($ch); $xml = new SimpleXMLElement($response); curl_close($ch); if ($xml) { $tgl=date('Y-m-d');

foreach ($xml->products->product as $item) { $link = $item->xpath('buy-url'); $link = (string)$link[0]; $title = $item->xpath('name'); $title = (string)$title[0]; $imgURL = $item->xpath('image-url'); $imgURL = (string)$imgURL[0]; $price = $item->xpath('price'); $price = ' Rp.'.number_format((float)($price[0]),0,'.',','); $price2 = filter_var($price, FILTER_SANITIZE_NUMBER_INT); $category = $item->xpath('advertiser-category');

(8)

47

Universitas Kristen Petra

Segmen 4.3 Function Cj_api (Sambungan)

$category = (string)$category[0]; $merchantname = $item->xpath('advertiser-name'); $merchantname = (string)$merchantname[0]; $description = $item->xpath('description'); $description = (string)$description[0]; if($cat==1){ $kat = 1;

$cat = 'Wanita > aksesoris'; }

elseif($cat==2){ $kat = 2;

$cat = 'Wanita > pakaian'; } if($link != ""){ if($cat == 0){ for ($x = 1; $x <= 2; $x++) { if($x==1){ $kat = 1;

$cat = 'Wanita > aksesoris'; }

elseif($x==2){ $kat = 2;

$cat = 'Wanita > pakaian'; }

if(strpos($category,$cat) !== false){ $title = addslashes($title);

$cproductz = mysqli_query($db,"SELECT

IFNULL(COUNT(id),0),id,harga FROM product WHERE nama ='$title' and gambar='$imgURL'");

$rowproductz = mysqli_fetch_array($cproductz); if($rowproductz[0]==0){

mysqli_query($db,"INSERT INTO product (nama,harga,deskripsi,kategori,uri,gambar,web) VALUES ('$title','$price2','$description','$kat','$link','$imgURL','z alora')"); if($rowproductz[0]==0) {

mysqli_query($db,"INSERT INTO product (nama,harga,deskripsi,kategori,uri,gambar,web)

VALUES

('$title','$price2','$description','$kat','$link','$imgURL','z alora')");

$pid = mysqli_insert_id($db);

mysqli_query($db,"INSERT INTO trend_harga

(idproduk,tanggal,harga) VALUES ('$pid','$tgl','$price2')"); }

(9)

48

Universitas Kristen Petra

Segmen 4.3 Function Cj_api (Sambungan)

else{

mysqli_query($db,"UPDATE product SET

harga='$price2' WHERE nama ='$title' and harga<>'$price2'"); if($rowproductz[2]<>$price2){

mysqli_query($db,"INSERT INTO trend_harga (idproduk,tanggal,harga) VALUES ('$rowproductz[1]','$tgl','$price2')"); } } } } } else{ if(strpos($category,$cat) !== false) { $title = addslashes($title); $cproductz = mysqli_query($db,"SELECT

IFNULL(COUNT(id),0),id,harga FROM product WHERE nama ='$title' and gambar='$imgURL'");

$rowproductz = mysqli_fetch_array($cproductz); if($rowproductz[0]==0){

mysqli_query($db,"INSERT INTO product (nama,harga,deskripsi,kategori,uri,gambar,web)

VALUES

('$title','$price2','$description','$kat','$link','$imgURL',' zalora')");

$pid = mysqli_insert_id($db);

mysqli_query($db,"INSERT INTO trend_harga

(idproduk,tanggal,harga) VALUES ('$pid','$tgl','$price2')"); }

else{

mysqli_query($db,"UPDATE product SET

harga='$price2' WHERE nama ='$title' and harga<>'$price2'"); if($rowproductz[2]<>$price2){

mysqli_query($db,"INSERT INTO trend_harga (idproduk,tanggal,harga) VALUES ('$rowproductz[1]','$tgl','$price2')"); } } } } } } } ?>

(10)

49

Universitas Kristen Petra

Segmen 4.4, Segmen 4.5, dan Segmen 4.6 diambil dari http://www.

jacobward.co.uk/using-php-to-scrape-javascript-jquery-json-websites/

dengan

beberapa perubahan. Segmen 4.4, Segmen 4.5, dan Segmen 4.6 adalah function

yang digunakan untuk mengambil data dari Tokopedia dengan teknik scraping.

Data yang diambil kemudian dimasukkan ke database. Pada proses scraping

Tokopedia, sistem mengambil data berupa id produk, nama produk, url produk,

url gambar dan lokasi penjual. Deskripsi produk tidak ditampilkan pada halaman

yang diambil datanya sehingga perlu sebuah fungsi untuk mengambil deskripsi

produk dari url produk. Fungsi tersebut bernama scapeDesc. Pada fungsi tersebut

sistem

mengambil

deskripsi

produk

yang

berada

didalam

tag

<p

itemprop="description" class="mt-20">.

Segmen 4.4. Function scrapeProductTokped

public function scrapeProductTokped($searchString,$category) {

$searchString=str_replace(' ', '+', $searchString); if($category == '1')

//Fashion & Accesories {

$searchUrl =

'https://ajax.tokopedia.com/search/v1/product?q='. $searchString .'&sc=79&start=0&rows=100&ob=1'; }

else if($category == '2') //Clothes { $searchUrl = 'https://ajax.tokopedia.com/search/v1/product?q='. $searchString .'&sc=80&start=0&rows=100&ob=1'; } $search = $this->curlPostFields($searchUrl); return $search; }

(11)

50

Universitas Kristen Petra

Segmen 4.5. Function scrapeDesc

Segmen 4.6. Function curlPostFields

Segmen 4.7 diambil dari https://davidwalsh.name/php-notifications

dengan beberapa perubahan. Segmen 4.7 adalah function yang digunakan untuk

mengambil data dari Lazada dengan teknik scraping. Data yang diambil kemudian

dimasukkan ke database. Pada proses scraping di Lazada, sistem mengambil data

berupa url gambar, url produk, nama produk, harga produk normal, harga produk

setelah diskon dan jumlah diskon. Deskripsi produk tidak ditampilkan pada

halaman yang diambil datanya sehingga perlu sebuah code tambahan untuk

mengambil deskripsi produk dari url produk. Code tersebut melakukan scraping

tambahan pada url produk untuk mengambil deskripsi produk.

public function scrapeDesc($urlProduct) {

$output = $this->curlPostFields($urlProduct);

$start = strpos($output, '<p itemprop="description" class="mt-20">');

$end = strpos($output, '</p>', $start); $length = $end-$start;

$output = substr($output, $start, $length); return $output;

}

public function curlPostFields($postUrl) {

$_ch = curl_init(); // Initialising cURL session curl_setopt($_ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($_ch, CURLOPT_FAILONERROR, TRUE);

curl_setopt($_ch, CURLOPT_COOKIESESSION, TRUE); curl_setopt($_ch, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($_ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($_ch, CURLOPT_COOKIEFILE, $this->cookie); curl_setopt($_ch, CURLOPT_COOKIEJAR, $this->cookie);

curl_setopt($_ch, CURLOPT_USERAGENT, $this->useragent); curl_setopt($_ch, CURLOPT_URL, $postUrl); curl_setopt($_ch, CURLOPT_CONNECTTIMEOUT, $this->timeout); curl_setopt($_ch, CURLOPT_TIMEOUT, $this->timeout);

curl_setopt($_ch, CURLOPT_HTTPGET, true); $results = curl_exec($_ch); curl_close($_ch);

return $results; }

(12)

51

Universitas Kristen Petra

Segmen 4.7. Function Callhtmldom

function callhtmldom($target_url,$db,$kategory) {

$tgl=date('Y-m-d');

$html = new simple_html_dom(); $htmldesc = new simple_html_dom(); $html->load_file($target_url); foreach($html->find('div[class=product-description]') as $article) { $item['imgsrc'] = $article->find('img', 0)->src; $item['img'] = $article->find('img', 0); $item['price'] = $article->find('span.product-price', 0)->plaintext; $item['pricedisc'] = $article->find('span.product-price-discount', 0)->plaintext; $item['pricedisc'] = filter_var($item['pricedisc'], FILTER_SANITIZE_NUMBER_INT);

$item['url'] = $article->find('a.product-name', 0)->href; $htmldesc->load_file($item['url']); $item['details'] = $htmldesc->find('div.product-info-name', 0)->plaintext; $item['details'] = addslashes($item['details']); $item['desc'] = $htmldesc->find('ul.prd-attributesList', 0); $cproductlzd = mysqli_query($db,"SELECT

IFNULL(COUNT(id),0),id,harga FROM product WHERE nama ='$item[details]' and gambar='$item[imgsrc]' ");

$rowproductlzd =

mysqli_fetch_array($cproductlzd,MYSQLI_NUM); if($rowproductlzd[0]==0){

mysqli_query($db,"INSERT INTO product (nama,harga,deskripsi,kategori,uri,gambar,web)

VALUES

('$item[details]','$item[pricedisc]','$item[desc]','$kategory', '$item[url]','$item[imgsrc]','lazada')");

$pid = mysqli_insert_id($db);

mysqli_query($db,"INSERT INTO trend_harga (idproduk,tanggal,harga) VALUES

('$pid','$tgl','$item[pricedisc]')"); }

else{

mysqli_query($db,"UPDATE product SET

harga='$item[pricedisc]' WHERE nama ='$item[details]' and harga<>'$item[pricedisc]'");

if($rowproductlzd[2]<>$item['pricedisc']){ mysqli_query($db,"INSERT INTO trend_harga (idproduk,tanggal,harga) VALUES ('$rowproductlzd[1]','$tgl','$item[pricedisc]')"); } } } }

(13)

52

Universitas Kristen Petra

Segmen 4.8 adalah

function untuk menampilkan data produk dari

database. Query dilakukan berdasarkan sorting produk yang dipilih oleh user.

Sorting yang tersedia adalah nama A-Z, nama Z-A, harga tertinggi, harga terendah

dan review. Selain sorting, query juga dilakukan dengan keyword dan kategori.

Data pada tabel produk dicocokan dengan keyword dan kategori produk. Jika

kategori yang dipilih all maka akan ditampilkan semua produk dengan keyword

yang dimasukkan tanpa mencocokan kategori produk.

Segmen 4.8. Function Load Data

<?php if($_POST['page']) { $page = $_POST['page']; $cur_page = $page; $page -= 1; $per_page = 20; $previous_btn = true; $next_btn = true; $first_btn = true; $last_btn = true;

$start = $page * $per_page; include '../connectdb.php'; $cat = $_POST['kategori'];

$key = str_replace(" ","%",$_POST['keyword']); $sort = $_POST['sort'];

if($sort==1) {

if($cat == '0') {

$query_pag_data = "SELECT * FROM product WHERE lower(nama) like lower('%$key%') ORDER BY id LIMIT $start, $per_page";

} else{

$query_pag_data = "SELECT * FROM product WHERE lower(nama) like lower('%$key%') and kategori='$cat' ORDER BY id LIMIT $start, $per_page";

} }

elseif($sort==2) {

if($cat == '0') {

$query_pag_data = "SELECT * FROM product WHERE lower(nama) like lower('%$key%') ORDER BY harga DESC LIMIT $start, $per_page";

} else{

$query_pag_data = "SELECT * FROM product WHERE lower(nama) like lower('%$key%') and kategori='$cat' ORDER BY harga DESC LIMIT $start, $per_page";

} }

(14)

53

Universitas Kristen Petra

Segmen 4.8 Function Load Data (Sambungan)

elseif($sort==3){

if($cat == '0') {

$query_pag_data = "SELECT * FROM product WHERE lower(nama) like lower('%$key%') ORDER BY harga LIMIT $start, $per_page";

} else{

$query_pag_data = "SELECT * FROM product WHERE lower(nama) like lower('%$key%') and kategori='$cat' ORDER BY harga LIMIT $start, $per_page";

} } elseif($sort==4){ if($cat == '0') { $query_pag_data = "SELECT DISTINCT(p.id),nama,harga,deskripsi,kategori,uri,gambar,web,IF NULL(COUNT(r.idproduk),0) AS rev FROM product p LEFT OUTER JOIN review r ON p.id=r.idproduk WHERE lower(nama) like

lower('%$key%') GROUP BY p.id ORDER BY rev DESC LIMIT $start, $per_page";

} else{

$query_pag_data = "SELECT

DISTINCT(p.id),nama,harga,deskripsi,kategori,uri,gambar,web,IF NULL(COUNT(r.idproduk),0) AS rev FROM product p LEFT OUTER JOIN review r ON p.id=r.idproduk WHERE lower(nama) like

lower('%$key%') and kategori='$cat' GROUP BY p.id ORDER BY rev DESC LIMIT $start, $per_page";

} }

elseif($sort==5){

if($cat == '0') {

$query_pag_data = "SELECT * FROM product WHERE lower(nama) like lower('%$key%') ORDER BY nama LIMIT $start, $per_page";

} else{

$query_pag_data = "SELECT * FROM product WHERE lower(nama) like lower('%$key%') and kategori='$cat' ORDER BY nama LIMIT $start, $per_page";

} }

elseif($sort==6){

if($cat == '0') {

$query_pag_data = "SELECT * FROM product WHERE lower(nama) like lower('%$key%') ORDER BY nama DESC LIMIT $start, $per_page";

} else{

$query_pag_data = "SELECT * FROM product WHERE lower(nama) like lower('%$key%') and kategori='$cat' ORDER BY nama DESC LIMIT $start, $per_page";

} }

(15)

54

Universitas Kristen Petra

Segmen 4.8 Function Load Data (Sambungan)

Pada Segmen 4.9 adalah function sistem rekomendasi sederhana yang

digunakan untuk membandingkan harga produk dan menampilkan harga produk

yang termurah. Jika harga yang dibandingkan sama, maka kedua harga produk

tersebut akan ditampilkan.

$result_pag_data = mysqli_query($db,$query_pag_data) or die('MySql Error' . mysqli_error());

$msg = "";

$msg = $msg . ' <div class="col-md-10">

<div class="row">'; while ($row = mysqli_fetch_array($result_pag_data)) { $htmlmsg=htmlentities($row['nama']);

$msg = $msg ."<div class=\"col-md-3\"> <div class=\"thumbnail\">

<img class=\"pimg\" src=\"". $row['gambar'] ."\" alt=\"". $row['nama'] ."\">

<div class=\"caption\">

<p class=\"color\"><color>". $row['nama'] ."</color></p>

<p class=\"price\">Price: Rp. ". number_format($row['harga'] , 0, ',', '.')."</p> <p class=\"soldby\">Sold By: "; if($row['web']=='zalora'){ $msg = $msg . "<img src=\"../img/logos/Zalora_icon.png\" alt=\"zalora\" height=\"50px\">"; } elseif($row['web']=='tokopedia'){ $msg = $msg . "<img src=\"../img/tokopedia.jpg\" alt=\"tokopedia\" height=\"50px\">"; } elseif($row['web']=='lazada'){ $msg = $msg . "<img src=\"../img/logos/lzd_logo.png\" alt=\"lazada\" height=\"50px\">"; } $msg = $msg ."</p>

<p><a href=\"detail/?id=". $row['id'] ."\" class=\"btn btn-primary\" role=\"button\" target=\"_blank\">More Detail</a> <a href=\"". $row['uri'] ."\" class=\"btn btn-default puri\" role=\"button\" target=\"_blank\"><span class=\"glyphicon glyphicon-link\" aria-hidden=\"true\"></span></a></p>

<input type=\"hidden\" class=\"form-control pid\" value=\"". $row['id']."\">

<div class=\"comparebox\"> <input class=\"cbox\" type=\"checkbox\"> compare</div>

</div> </div> </div>"; }?>

(16)

55

Universitas Kristen Petra

Segmen 4.9. Function Compare

<?php

if(!isset($_GET['idproduk3'])){

if($rowp1['harga'] < $rowp2['harga']){ echo '<a class="pricecom"

href="'.$rowp1['uri'].'">'.$rowp1['nama'] . '</a></br>'; echo 'Rp. ' . number_format($rowp1['harga'] , 0, ',', '.');

}

if($rowp2['harga'] < $rowp1['harga']){ echo '<a class="pricecom"

href="'.$rowp2['uri'].'">'.$rowp2['nama'] . '</a></br>'; echo 'Rp. ' .number_format($rowp2['harga'] , 0, ',', '.');

}

if( $rowp1['harga'] == $rowp2['harga']){ echo 'Harga produk 1 dan 2 sama</br>'; echo '<a class="pricecom"

href="'.$rowp1['uri'].'">'.$rowp1['nama'] . '</a></br>'; echo 'Rp. ' .number_format($rowp1['harga'] , 0, ',', '.') . '</br>';

echo '<a class="pricecom"

href="'.$rowp2['uri'].'">'.$rowp2['nama'] . '</a></br>'; echo 'Rp. ' .number_format($rowp2['harga'] , 0, ',', '.'); } } if(isset($_GET['idproduk3'])){

if(($rowp1['harga'] < $rowp2['harga']) && ($rowp1['harga'] < $rowp3['harga'])){

echo '<a class="pricecom"

href="'.$rowp1['uri'].'">'.$rowp1['nama'] . '</a></br>'; echo 'Rp. ' .number_format($rowp1['harga'] , 0, ',', '.');

}

if(($rowp2['harga'] < $rowp1['harga']) && ($rowp2['harga'] < $rowp3['harga'])){

echo '<a class="pricecom"

href="'.$rowp2['uri'].'">'.$rowp2['nama'] . '</a></br>'; echo 'Rp. ' .number_format($rowp2['harga'] , 0, ',', '.');

(17)

56

Universitas Kristen Petra

Segmen 4.9 Function Compare (Sambungan)

if(($rowp3['harga'] < $rowp1['harga']) && ($rowp3['harga'] < $rowp2['harga'])){

echo '<a class="pricecom"

href="'.$rowp3['uri'].'">'.$rowp3['nama'] . '</a></br>'; echo 'Rp. ' .number_format($rowp3['harga'] , 0, ',', '.');

}

if( $rowp1['harga'] == $rowp2['harga']){ echo 'Harga produk 1 dan 2 sama</br>'; echo '<a class="pricecom"

href="'.$rowp1['uri'].'">'.$rowp1['nama'] . '</a></br>'; echo 'Rp. ' .number_format($rowp1['harga'] , 0, ',', '.'). '</br>';

echo '<a class="pricecom"

href="'.$rowp2['uri'].'">'.$rowp2['nama'] . '</a></br>'; echo 'Rp. ' .number_format($rowp2['harga'] , 0, ',', '.');

}

if( $rowp1['harga'] == $rowp3['harga']){ echo 'Harga produk 1 dan 3 sama</br>'; echo '<a class="pricecom"

href="'.$rowp1['uri'].'">'.$rowp1['nama'] . '</a></br>'; echo 'Rp. ' .number_format($rowp1['harga'] , 0, ',', '.'). '</br>';

echo '<a class="pricecom"

href="'.$rowp3['uri'].'">'.$rowp3['nama'] . '</a></br>'; echo 'Rp. ' .number_format($rowp3['harga'] , 0, ',', '.');

}

if( $rowp2['harga'] == $rowp3['harga']){ echo 'Harga produk 1 dan 3 sama</br>'; echo '<a class="pricecom"

href="'.$rowp2['uri'].'">'.$rowp2['nama'] . '</a></br>'; echo 'Rp. ' .number_format($rowp2['harga'] , 0, ',', '.'). '</br>';

echo '<a class="pricecom"

href="'.$rowp3['uri'].'">'.$rowp3['nama'] . '</a></br>'; echo 'Rp. ' .number_format($rowp3['harga'] , 0, ',', '.'); } } ?>

(18)

57

Universitas Kristen Petra

4.5.3

Implementasi Review

Menu review berfungsi untuk menambah data review kedalam database.

Menu tambah review terdapat pada halaman detail produk. Selain menambah

review, user juga dapat melihat daftar review dari sebuah produk pada halaman

detail produk.

Function review

Tabel 4.5.

No. Function

Keterangan

Segmen

1.

Add

Menambahkan data review.

4.10

2.

View Review

Menampilkan data review.

-

Segmen 4.10 adalah function untuk menyimpan data review ke database.

Segmen 4.10. Function Add Review

4.5.4

Implementasi Forum

Menu forum berguna untuk menambah data forum ke dalam database,

menampilkan data forum, menambah komentar forum dan menampilkan komentar

dari forum.

Function forum

Tabel 4.6.

No. Function

Keterangan

Segmen

1.

Add

Menambahkan data forum.

4.11

2.

View forum

Menampilkan data forum.

-

3.

Add komentar

Menambahkan data komentar forum.

-

4.

View komentar Menampilkan komentar dari forum.

4.12

<?php $tgl=date('Y-m-d'); include '../connectdb.php'; mysqli_query($db,"INSERT INTO review(idproduk,iduser,tanggal,judul,isi,status) VALUES ('$_POST[inpt_idproduk]','$_POST[inpt_iduser]','$tgl','$_POST[in pt_judul]','$_POST[inpt_isi]','1')"); header("location: ../product/detail/?id=".$_POST['inpt_idproduk']); ?>

(19)

58

Universitas Kristen Petra

Segmen 4.11 adalah function untuk menyimpan data forum ke database.

Segmen 4.11. Function add forum

Segmen 4.12 adalah function untuk menampilkan komentar forum.

Segmen 4.12. Function view komentar

<?php $tgl=date('Y-m-d H:i:s'); include '../../connectdb.php'; mysqli_query($db,"INSERT INTO forum(iduser,date,judul,isi,status) VALUES ('$_POST[iduser]','$tgl','$_POST[judul]','$_POST[isi]','1' )"); header("location: ./"); ?> <?php include '../../connectdb.php'; $count = 0;

$resultkomen = mysqli_query($db,"SELECT tanggal,isi,iduser FROM komentar_forum WHERE idforum='$_POST[cforum]' ORDER BY tanggal DESC");

if(!empty($resultkomen)) {

while($rowk = mysqli_fetch_array($resultkomen)) {

$ruser = mysqli_query($db,"SELECT id,nama,images FROM user WHERE id='$rowk[iduser]' ");

$rowu = mysqli_fetch_array($ruser); echo '

<div class="col-md-12 komentar"> <div class="col-md-2">

<center>

<a href="../../'. $rowu['images']. '" rel="prettyPhoto"><img src="../../'.$rowu['images'].'" class="img-responsive" width=100/></a> <a href="#">'.$rowu['nama'].'</a> </center> </div> <div class="col-md-10"> <div class="revtgl"> '. $rowk['tanggal'] .' </div> <br> '. $rowk['isi'] .' </div> </div>'; } } ?>

(20)

59

Universitas Kristen Petra

4.5.5

Implementasi User

Menu berguna user untuk mengelola data user seperti menyimpan data

user, mengganti data user, melakukan proses login pada user baik login melalui

website maupun login melalui Facebook.

Function user

Tabel 4.7.

No. Function

Keterangan

Segmen

1.

Sign-up

Menambahkan data user.

4.13

2.

Sign-in

Melakukan login user.

4.14

3.

Login Facebook

Melakukan login melalui

Facebook.

4.15

4.

Forget password

Mengirimkan email kepada user

berupa link untuk melakukan reset

password.

-

5.

Edit user

Mengganti data user.

-

Segmen 4.13 adalah

function untuk menyimpan data user ke database.

Segmen 4.13. Function Sign-up

Segmen 4.14 adalah

function untuk melakukan pengecekan email dan

password yang dimasukkan user. Jika email dan password yang dimasukkan

sudah sesuai dengan database maka user dapat mengakses menu tambah forum,

tambah review, dan mengomentari forum.

<?php $tgl=date('Y-m-d'); include '../connectdb.php'; $pass = md5($_POST['pass']); mysqli_query($db,"INSERT INTO user(nama,email,password,images,join_date) VALUES ('$_POST[nama]','$_POST[email]','$pass','img/customer/no-photo.jpg','$tgl')"); mysqli_close($db); header("location: ../"); ?>

(21)

60

Universitas Kristen Petra

Segmen 4.14. Function login user

Segmen 4.15 diambil dari

http://www.krizna.com/general/login-with-facebook-using-php/ dengan beberapa perubahan.

Segmen 4.15 adalah

function

untuk melakukan login melalui Facebook.

Segmen 4.15. Function login Facebook

<?php include 'connectdb.php'; $myemail=$_POST['email']; $mypassword=md5($_POST['pass']); $myemail = stripslashes($myemail); $mypassword = stripslashes($mypassword); $myemail = mysqli_real_escape_string($db,$myemail); $mypassword = mysqli_real_escape_string($db,$mypassword);

$sql="SELECT * FROM user WHERE email='$myemail' and password='$mypassword'"; $result=mysqli_query($db,$sql); $row = mysqli_fetch_array($result); $count=mysqli_num_rows($result); if($count==1){ $lifetime = 86400*2; session_start(); setcookie(session_name(),session_id(),time()+$lifeti me); $_SESSION['id']=$row['id']; header("location:./"); } else{ session_start(); $_SESSION['loginerror'] = 1; header("location:./?code=1"); } ?> <?php

session_start(); //Session should always be active include 'connectdb.php';

$app_id = '627815840655106';

//localhost

$app_secret =

'2231136946ac092c760ab121248fd257';

$required_scope = 'public_profile, publish_actions'; //Permissions required

$redirect_url = 'http://www.fashion-grabber.esy.es/fbcall1.php';

require_once __DIR__ . "/facebook-php-sdk-v4-4.0-dev/autoload.php";

(22)

61

Universitas Kristen Petra

Segmen 4.15 Function login Facebook (Sambungan)

//import required class to the current scope use Facebook\FacebookSession;

use Facebook\FacebookRequest; use Facebook\GraphUser;

use Facebook\FacebookRedirectLoginHelper;

FacebookSession::setDefaultApplication($app_id , $app_secret); $helper = new FacebookRedirectLoginHelper($redirect_url); try {

$session = $helper->getSessionFromRedirect(); } catch(FacebookRequestException $ex) {

die(" Error : " . $ex->getMessage()); } catch(\Exception $ex) {

die(" Error : " . $ex->getMessage()); }

if ($session) {

$user_profile = (new FacebookRequest($session, 'GET', '/me'))->execute()->getGraphObject(GraphUser::className());

$_SESSION["fb_user_details"] = $user_profile->asArray(); $user_id = ( isset( $_SESSION["fb_user_details"]["id"] ) )? $_SESSION["fb_user_details"]["id"] : "";

$user_name = ( isset( $_SESSION["fb_user_details"]["name"] ) )? $_SESSION["fb_user_details"]["name"] : "";

$user_email = ( isset( $_SESSION["fb_user_details"]["email"] ) )? $_SESSION["fb_user_details"]["email"] : "";

$results = $db->query("SELECT COUNT(*) FROM usertable WHERE fbid=".$user_id);

$get_total_rows = $results->fetch_row();

if(!$get_total_rows[0]){ //no user exist in table, create new user

$insert_row = $db->query("INSERT INTO usertable (fbid, fullname, email) VALUES(".$user_id.", '".$user_name."', '".$user_email."')");

}

$resultu = mysqli_query($db,"SELECT id FROM usertable WHERE fbid=".$user_id);

$rowu = mysqli_fetch_array($resultu); $_SESSION['id'] = $rowu['id'];

header("location: index.php"); }

(23)

62

Universitas Kristen Petra

Segmen 4.15 Function login Facebook (Sambungan)

else { if(isset($_SESSION["fb_user_details"])) { $user_id = ( isset( $_SESSION["fb_user_details"]["id"] ) )? $_SESSION["fb_user_details"]["id"] : "";

$resultu = mysqli_query($db,"SELECT id FROM usertable WHERE fbid=".$user_id);

$rowu = mysqli_fetch_array($resultu); $_SESSION['id'] = $rowu['id'];

//session ver is set, redirect user header("location: index.php"); } else { $loginUrl = $helper->getLoginUrl(); header("location:".$loginUrl); exit; } } ?>

Gambar

Gambar 4.1.  Connect XAMPP Server
Gambar 4.4.  Pengaturan field tabel

Referensi

Dokumen terkait

Function edit, dimana ini, merupakan function yang menjabarkan data yg telah di record dalam database untuk dilakukan perubahan dalam record data tersebut.. Function

Prosedur (PSP) secara lengkap yang meliputi kegiatan kemanan data, backup dan restorasi serta penghapusan berkala data yang tidak berguna, telah mengacu pada standar

“PENERAPAN SANKSI TINDAK PIDANA ILLEGAL LOGGING MENURUT UNDANG – UNDANG NOMOR 41 TAHUN 1999 TENTANG KEHUTANAN DI PENGADILAN NEGERI REMBANG” dalam rangka memenuhi syarat

1) Syarat-syarat substansial yang diminta berdasarkan Dokumen Pengadaan ini dipenuhi/dilengkapi. 2) Surat penawaran memenuhi ketentuan, ditandatangani, bertanggal, jangka

Salah satu cara dalam mencapai hal tersebut adalah dengan meningkatkan minimal combo yang terjadi saat pergerakan karena semakin besar combo yang terjadi semakin besar juga

Retribusi izin trayek (jenis retribusi perizinan tertentu). Adapun target PAD Bidang Perhubungan di Tahun 2016 sebagaimana DPPA-SKPD DISHUB Kab. Ketidaktercapaian target

Bobot induk botia yang dapat digunakan adalah yang berukuran lebih dari 70 gram, sehingga dengan 6 (enam) ekor induk betina produktif sudah mencukupi untuk produksi 10.000 ekor

Pesantren ini masih mempertahankan bentuk aslinya dengan mengajarkan kitab yang ditulis oleh ulama abad ke-15 dengan menggunakan bahasa Arab. Pola pengajarannya dengan