Реализовать ЧПУ с помощью PHP

151
22 января 2020, 05:30

Помогите реализовать ЧПУ ссылки, на данный момент ссылка на альбом(подробнее) имеет вид: site.ru/single.php?id=1. А нужно site.ru/albums/1 но при этом если ввести site.ru/albums то выводит весь список альбомов, возможно это будет не совсем просто, но буду благодарен за помощь.

Конфиг:

<?
$host     = 'localhost';
$user     = 'root';
$password = '';
$database = 'db';
$connection = mysqli_connect($host, $user, $password, $database);
if (mysqli_connect_errno()) {
    printf(mysqli_connect_error());
    exit();
}
$db = new PDO("mysql:host=$host; dbname=$database", $user, $password);
function get_albums_all()
{
    global $db;
    $albums = $db->query("SELECT * FROM albums");
    return $albums;
}
function get_tracks_all_by_id($id)
{
    global $db;
    $tracks = $db->query("SELECT * FROM tracks WHERE album_id = $id");
    return $tracks;
}
function get_album_by_id($id)
{
    global $db;
    $albums = $db->query("SELECT * FROM albums WHERE id = $id");
    foreach ($albums as $album) {
        return $album;
    }
}
function get_album_by_prev($id)
{
    global $db;
    $albums = $db->query("SELECT * FROM albums WHERE id < $id ORDER BY id DESC LIMIT 1");
    foreach ($albums as $album) {
        return $album;
    }
}
function get_album_by_next($id)
{
    global $db;
    $albums = $db->query("SELECT * FROM albums WHERE id > $id ORDER BY id LIMIT 1");
    foreach ($albums as $album) {
        return $album;
    }
}

Список альбомов(главная страница):

<h2><a href="/albums">Альбомы</a></h2>
<div class="list-albums">
    <ul class="list-feature col-md-12 col-xs-12 col-sm-12">
        <?
        $albums = get_albums_all();
        foreach ($albums as $album): ?>
            <li class="col-md-3 col-sm-3 col-xs-12">
                <div class="album-icon">
                    <span class="thumbs-album">
                    <a href="/single.php?id=<? echo $album["id"] ?>">
                        <img width="270" height="270" src="<? echo $album["img"] ?>" class="attachment-album-thumbnail wp-post-image" alt="album-cover-1">
                    </a>
                </span>
                    <span class="disk"></span>
                </div>
                <div class="name">
                    <h3><? echo $album["album_name"]; ?></h3>
                    <p>
                        <? echo $album["author"]; ?>
                    </p>
                </div>
            </li>
            <? endforeach; ?>
    </ul>
</div>

Подробнее(альбом):

<? $album = get_album_by_id($_GET['id']); ?>
    <? $prevPage = get_album_by_prev($_GET['id']); ?>
        <? $nextPage = get_album_by_next($_GET['id']); ?>
            <!-- =============== Список песен альбома ================ -->
            <h2><a href="#"><? echo $album["album_name"]; ?></a></h2>
            <div class="jp-playlist">
                <div class="about-list clearfix">
                    <span class="about-name">NAME</span>
                    <span class="about-length">LENGTH</span>
                </div>
                <?
            $tracks = get_tracks_all_by_id($album['id']);
            foreach ($tracks as $track): 
            ?>
                    <div class="trak-item" data-audio="<? echo $track[" audio "]; ?>" data-artist="<? echo $track[" artist "]; ?>" data-thumbnail="<? echo $track[" img "]; ?>">
                        <audio preload="metadata" src="<? echo $track[" audio "]; ?>" title="<? echo $track[" title "]; ?>"></audio>
                        <div class="play-pause-button">
                            <div class="center-y-table">
                                <i class="fa fa-play"></i>
                            </div>
                        </div>
                        <div class="name-artist">
                            <div class="center-y-table">
                                <h2>
                        <? echo $track["title"]; ?>
                    </h2>
                            </div>
                        </div>
                        <time class="trak-duration">
                            00:00
                        </time>
                    </div>
                    <? endforeach; ?>
            </div>
            <!-- =============== Pagination Prev and Next album-> ================ -->
            <div class="section-block  bkg-grey-ultralight pagination-2">
                <div class="row full-width ">
                    <div class="col-sm-6 leftHover" style="background-image: url(assets/img/content/albFooter.jpg);">
                        <a href="?id=<? echo $prevPage[" id "]; ?>" class="pagination-previous">
                            <small>Prev</small>
                            <span><? echo $prevPage["album_name"]; ?></span>
                        </a>
                    </div>
                    <div class="col-sm-6 rightHover" style="background-image: url(assets/img/content/albFooter.jpg);">
                        <a href="?id=<? echo $nextPage[" id "]; ?>" class="pagination-next ">
                            <small>Next</small>
                            <span><? echo $nextPage["album_name"]; ?></span>
                        </a>
                    </div>
                </div>
            </div>
READ ALSO
Axios не может расспарсить JSON

Axios не может расспарсить JSON

Работаю на VueJs с подключением AxiosНе расспарсивает пришедшую с сервера JSON

140
Явная копия в copy-and-swap

Явная копия в copy-and-swap

Смотрю в википедии на описание copy-and-swap и его же в отдельной статье:

160
Up вектор в реализации камеры

Up вектор в реализации камеры

В примере к видовой матрице указано:

170
Строки вводятся не ожидаемым образом

Строки вводятся не ожидаемым образом

У меня есть код, в котором я ввожу число N, а потом просто ввожу в цикле по N строки, состоящие из пробелов, цифр, скобок и дефисовПотом я хочу...

138