.htaccess (Pewnie można go inaczej zapisać, nie będę się upierał)
RewriteEngine On
RewriteCond %{REQUEST_URI} ^aktualnosci/ [NC]
RewriteRule ^aktualnosci/([0-9]+)/?$ /news.php?page=$1
news.php (Taka moja lużna propozycja)
<?php
if (isset($_GET['page'])) {
$page = $_GET['page'];
if(!is_numeric($page) || $page <= 0) $page = 1;
} else {
$page = 1;
}
$news_per_page = 5;
$offset = ($page-1) * $news_per_page;
$conn = new mysqli("localhost","root","pass","test");
if ($conn->connect_error) {
die("<br><br><b>Bład połączenia z bazą danych</b></br>");
}
$news_to_display = true;
$sql = "SELECT COUNT(*) AS c_rows FROM news";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
$total_news = $row['c_rows'];
if(is_numeric($total_news) && $total_news > 0) {
$total_pages = ceil($total_news / $news_per_page);
$sql = "SELECT n.imie, n.data_dodania FROM news AS n "
."ORDER BY n.data_dodania DESC LIMIT $offset, $news_per_page";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
ob_start();
while($row = $result->fetch_assoc()) {
$create_data = date_create($row["data_dodania"]);
?>
<div class="news_wrapp">
<h1>Artykuł</h1>
<p>
<span class="news_autor">Autor: <?=$row["imie"]?></span>
<span class="news_data_dodania">Data dodania: <?=date_format($create_data, "Y-m-d H:i")?></span>
</p>
<p class="news_content">
<a href="https://pl.lipsum.com/" target="_blank">Lore ipsum generator</a> Duis nec ex libero. Cras ac
fringilla fermentum, tortor ex ullamcorper velit, ut mollis sapien ipsum et nibh.
Aliquam nec mi ac metus commodo dapibus nec ac augue. Nunc condimentum volutpat nisi.
Vivamus aliquam molestie ullamcorper. Nulla elementum arcu vitae maximus bibendum.
Sed eget mi a dolor eleifend rhoncus. Pellentesque pulvinar, dui luctus eleifend
vestibulum, massa ligula eleifend nisi, vitae facilisis ipsum sem eget orci. Cras magna
tellus, tempor sit amet massa id, elementum placerat felis. Suspendisse auctor lobortis
condimentum. Vivamus viverra risus vel enim convallis ultrices.
</p>
</div>
<?php
} // while($row = $result->fetch_assoc())
$news_html = ob_get_clean();
} else {
$news_to_display = false;
$news_html = "<div class='no_news_wrapp'>Brak artykułów</div>";
}
} else { // if(is_numeric($total_news) && $total_news > 0)
$news_to_display = false;
$news_html = "<div class='no_news_wrapp'>Brak artykułów</div>";
}
} else { // if ($result->num_rows > 0)
$news_to_display = false;
$news_html = "<div class='no_news_wrapp'>Brak artykułów</div>";
}
$conn->close();
?>
<html lang="pl">
<head>
<meta charset="utf-8">
</head>
<style>
body {
margin: 0px;
padding: 0px;
}
.no_news_wrapp {
font-weight: bold;
color: tomato;
}
.news_container {
width: 1000px;
margin-left: auto;
margin-right: auto;
margin-top: 20px;
background-color: aliceblue;
padding: 10px;
color: black;
font-family: Arial;
font-size: 14px;
}
.news_container .pagination {
text-align: center;
}
.news_wrapp {
margin-bottom: 40px;
}
.news_wrapp h1 {
letter-spacing: 1px;
margin-bottom: 0px;
}
.news_autor {
margin-right: 40px;
font-size: 12px;
}
.news_data_dodania {
font-size: 12px;
}
.pagination {
display: inline-block;
border: 0px;
}
.pagination a {
width: auto;
color: black;
float: left;
padding: 5px 10px;
font-size: 12px;
text-decoration: none;
font-variant: small-caps;
transition: color 0.4s;
}
.pagination a.curren_page {
cursor: default;
width: auto;
}
.pagination a:hover {
color: royalblue;
transition: color 0.4s;
}
.pagination a:active {
transform: translateY(2px);
}
</style>
<body>
<div class="news_container">
<?=$news_html?>
<?php
if($news_to_display) {
$prev_href = ($page <= 1 ? "/aktualnosci/1" : "/aktualnosci/".($page - 1));
$next_href = ($page >= $total_pages ? "/aktualnosci/".$total_pages : "/aktualnosci/".($page + 1));
$last_href = "/aktualnosci/".$total_pages;
?>
<div class="pagination">
<a href="/aktualnosci/1">Pierwsza</a>
<a href="<?=$prev_href?>">Poprzednia</a>
<a class="curren_page"><?=$page?></a>
<a href="<?=$next_href?>">Następna</a>
<a href="<?=$last_href?>">Ostatnia</a>
</div>
<?php } ?>
</div><!-- <div class="news_container"> -->
</body>
</html>
mod_rewrite mysqli connect() css pagination