@DragonPro

Как сделать так, чтобы выводилось не id, а url (ЧПУ)?

Добрый день, не могу никак сделать ЧПУ, другие советы не помогают.
.htaccess:
AddDefaultCharset UTF-8

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([^/\.]+)/?$ cars.php?id=$1 [L]


db.php:
<?php

$dbhost = "localhost";
$dbname = "urals";
$username = "root";
$password = "";

$db = new PDO("mysql:host=$dbhost; dbname=$dbname", $username, $password);

function get_cars_all() {
	global $db;
	$cars = $db->query("SELECT * FROM `cars`");
	return $cars;
}

function get_car_url($id) {
	global $db;
	$cars = $db->query("SELECT * FROM `cars` WHERE `id` = $id");
	foreach ($cars as $car) {
		return $car;
	}
}

?>


С самого начала в cars.php:
<?php require 'db.php'; ?>
<?php $car = get_car_url($_GET['id']);?>


Переходит по ссылке site.ru/1, site.ru/2 и т.д.

Все данные вывожу через echo $car["title"], в таблице cars имеется столбец url, который и нужен, чтобы по ссылке этой переходить, но все равно выводится id, в db.php пробовал вместо id писать url, но тогда ничего не выдает совсем. В php не силен от слова вообще, помогите, пожалуйста, второй день уже разобраться не могу с этим ЧПУ.
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ответы на вопрос 2
@101-s
если кратко (сам плохо разбираюсь в php) тебе нужна функция-расшифровщик ЧПУ
пока не прописывай в .htaccess переадресацию со старых url, на новые чпу-url - это будет только мешать.

половина дела уже сделана, то есть можно уже расшифровать обычные адреса.
$_GET['id'] - функция берет значение id из адреса страницы типа site.ru/?id=1
затем get_car_url($id) - обращается к базе и тд.

я так понял что в дешифровщике нужно написать алгоритм, который бы из адреса site.ru/1 брал бы нужные значения (1) и по этому значению искал бы нужную запись в базе данных, и что 1 это номер (id) записи в таблице cars
было бы еще лучше, если бы адрес был site.ru/cars/1 - тогда понятно, что нужно обращаться к таблице cars c id=1,
в этом случае вот это не понадобится : "в таблице cars имеется столбец url" или я чего то не догоняю, написано сумбурно
Ответ написан
gzhegow
@gzhegow
aka "ОбнимиБизнесмена"
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php


<?php 
// index.php
var_dump($_SERVER['REQUEST_URI']); // do some, explode, implode, select by `slug`, if ($selected) then require file.php;
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы