Postingan lainnya
Search dengan Pagination di PHP
Jadi gini baru aja saya lagi nyoba tutorial sekolah koding yaitu membuat blog dengan php, kodingan sudah saya modifikasi salah satunya dengan menambahkan pagination, untuk halaman search nya sendiri tidak ada masalah yg jadi mslh terletak pd paginationnya. Misal ane cari satu artikel nah ketika artikel itu muncul dan ane cek sendiri hanya ada 1 artikel di database, yg ada malahan pagination malah nampil semua. Nah begitu ane coba klik hal berikutnya yg ada malah kosong. Jadi gimana ya caranya biar saat kita search nah halamanny itu ga nampil semua dan kalaupun data yg kita search lebih dari 1 baru ditampilkan pagination yg berkaitan saja jd ga semuanya ditampilkan. Jadi bgmn gan Tolong dibantu gan, soalnya saya ga dapet logicnya nih. Ini kodingan yg udh di modifikasi di bag index.php
<?php
require_once "core/init.php";
$super_user = $login = false;
if($_SESSION['user']){
$login = true;
if(cek_status($_SESSION['user']) == 1){
$super_user = true;
}
}
$articles = tampilkan();
$hal = 5;
$perHal = setPerPage($hal);
$start = setStartPage($perHal,$hal);
$total = result_total($articles);
$getHal = getpage($total,$hal);
$articles = tampilkan_limit($start,$hal);
if(isset($_GET['cari'])){
$cari = $_GET['cari'];
$articles = hasil_cari($cari,$start,$hal);
}
require_once "view/header.php";
?>
<form action="" method="get">
<input type="search" name="cari" placeholder="Cari Judul Artikel">
</form>
<?php while($row = mysqli_fetch_assoc($articles)):?>
<div class="each_article">
<h3><a href="single.php?id=<?= $row['id']; ?>"><?= $row['judul']; ?></a></h3>
<p>
<?= excerpt($row['isi']); ?>
</p>
<p class="waktu"> <?= $row['waktu']; ?></p>
<p class="tag"> Tag: <?= $row['tag']; ?> </p>
<?php if($login == true): ?>
<a href="edit.php?id=<?= $row['id']; ?>"> Edit </a>
<?php if($super_user == true): ?>
<a href="delete.php?id=<?= $row['id']; ?>"> Hapus </a>
<?php endif; ?>
<?php endif; ?>
</div>
<?php endwhile; ?>
<div class="">
<?php
for($i=1;$i<=$getHal;$i++){
if(isset($cari))
echo "<a href='?halaman=$i&cari=$cari'>$i</a> ";
else
echo "<a href='?halaman=$i'>$i</a> ";
}
?>
</div>
<?php
require_once 'view/footer.php';
?>
<!-- <a href="?halaman=<?php /*echo $i; ?>"><?php echo $i; */?></a> -->
dan ini screenshotnya 1 screenshot 2 screenshot 3
4 Jawaban:
$getHal itu banyaknya jumlah halaman yah? jika benar, maka ketika proses pencarian data $getHal nya diubah sesuai count dri data hasil pencarian itu,, yg jadi masalah sepertinya $getHal atau count pagenya masih berdasarkan semua data yg ada, bukan berdasarkan dari filter banyaknya data yg sesuai dengan keyword pencariannya..
kira2 nih gan @gunaliresqimauludi gmn caranya ngubah biar variabel $getHal nya diubah sesuai count dri data hasil pencarian itu, saya masih belum ada bayangan nih, tolong dibantu gan.
$start = (isset($_GET['halaman'])) ? (int)$_GET['halaman'] : 1;
ksih code tsb setelah $perHal = setPerPage($hal);
btewe class tampilkan() itu di post gan biar gw jawab lengkap wkkw soalnya gak tau isi class tsb.
kalo salah maaf......
itu gan codingan paging.php, sebetulnya utk codingan paging.php itu sama persis kaya di https://www.sekolahkoding.com/kelas/membuat-pagination-dengan-php cuma di sini ane bikin jadi method aja sih gan di file baru
<?php
function tampilkan_limit($start,$limit){
$start = $start;
$limit = $limit;
$query = "select * from blog limit $start,$limit";
return result($query);
}
function setPerPage($hal){
$page = isset($_GET['halaman']) ? (int)$_GET['halaman'] : 1;
return $page;
}
function setStartPage($perHal,$hal){
$start = ($perHal > 1) ? ($perHal * $hal) - $hal : 0;
return $start;
}
function getpage($total,$perPage){
$total_page = ceil($total/$perPage);
if($total_page == 0){
$total_page = 0;
}
return $total_page;
}
function result_total($result){
if($result = mysqli_num_rows($result) or die('gagal menampilkan data')){
return $result;
}
}
?>
ini utk codingan blog.php
<?php
function tampilkan(){
$query = "select * from blog";
return result($query);
}
function tampilkan_per_id($id){
$id = escape($id);
$query = "select * from blog where id='$id'";
return result($query);
}
function hasil_cari($cari,$start,$limit){
$cari = escape($cari);
$start = escape($start);
$limit = escape($limit);
$query = "select * from blog where judul LIKE '%$cari%' limit $start,$limit";
return result($query);
}
function result($query){
global $link;
if($result = mysqli_query($link,$query) or die('gagal menampilkan data')){
return $result;
}
}
function tambah_data($judul,$konten,$tag){
$judul = escape($judul);
$konten = escape($konten);
$tag = escape($tag);
$query = "insert into blog (judul,isi,tag) values ('$judul','$konten','$tag')";
return run($query);
}
function edit_data($judul,$konten,$tag,$id){
$judul = escape($judul);
$konten = escape($konten);
$tag = escape($tag);
$id = escape($id);
$query = "update blog set judul='$judul',isi='$konten',tag='$tag' where id='$id'";
return run($query);
}
function hapus_data($id){
$id = escape($id);
$query = "delete from blog where id='$id'";
return run($query);
}
function run($query){
global $link;
if(mysqli_query($link,$query)) return true;
else return false;
}
function excerpt($string){
$string = substr($string,0,600);
return $string . "...";
}
function escape($text){
global $link;
return mysqli_real_escape_string($link,$text);
}
?>