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.
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.
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 . ']'); }?>
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.
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.
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); ?>
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.="¤cy=$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');
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')"); }
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')"); } } } } } } } ?>
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; }
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; }
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]')"); } } } }
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";
} }
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";
} }
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>"; }?>
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, ',', '.');
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, ',', '.'); } } ?>
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']); ?>
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>'; } } ?>
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: ../"); ?>
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";
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"); }
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; } } ?>