как изменить запрос и вывод из бд не по id а по alias в этих файлах осуществляется выбор из бд по категориям и вывод статей в соответствующих категориях Код (Text): <?php header("Content-Type:text/html;charset=UTF-8"); session_start(); include "config.php"; include "functions.php"; db(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME); //получаем название категории $category_id = (int)$_GET['category_id']; $res_category = mysql_query("SELECT `name`,`keywords`,`description` FROM `category` WHERE `category_id`= '$category_id'") or die( mysql_error() ); $row_category = mysql_fetch_assoc($res_category); //выбираем статьи $res_staty = mysql_query("SELECT `staty_id`,`title`,`alias`,`short_text`,`avatar` FROM `staty` WHERE `category`='$category_id' AND `visible`='1'"); ?><div id="content3"> <?php if(mysql_num_rows($res_staty) > 0){ while($row_staty = mysql_fetch_assoc($res_staty)){ echo '<div class = "staty">'."\r\n"; echo '<h1><a href="'.SITE_URL.'staty/'.$row_staty['staty_id'].'">'.$row_staty['title'].'</a></h1>'."\r\n"; echo $row_staty['short_text']; echo '<a href="'.SITE_URL.'staty/'.$row_staty['staty_id'].'">'."подробнее...".'</a>'."\r\n"; echo '</div>'."\r\n"; } }else echo "<script>alert(\"Здесь статей нет\");</script>"; ?> </div> а на этой странице уже должна выводится сама статья Код (Text): <?php header("Content-Type:text/html;charset=UTF-8"); session_start(); include "config.php"; include "functions.php"; db(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME); $staty_id = (int)$_GET['staty_id']; $res_staty = mysql_query("SELECT `title`,`keywords`,`description`,`content` FROM `staty` WHERE `staty_id` = ".$staty_id." LIMIT 1") or die( mysql_error() ); $row_staty = mysql_fetch_assoc($res_staty); ?><div id="contents"> <?php if(mysql_num_rows($res_staty) > 0){ $views = $row_staty['views'] + 1; $res = mysql_query("UPDATE `staty` SET `views`='{$views}' WHERE `staty_id`='{$staty_id}'"); echo "<span class='view_staty'><h1>{$row_staty['title']}</h1></span>"; echo $row_staty['content']; }else echo "<script>alert(\'Такой статьи нет!\");</script>"; ?> </div> <!-- #content --> . Всё работает, а вопрос такой, в бд в таблице статьи добавлен столбец alias( с помощью транслита записаны все названия статей) в файле .htaccess внесены соответствующие записи, в результате в строке браузера выводится http://localhost/mysite.ru/staty/dogovor-nayma-arendy, а как теперь изменить запрос к бд, чтобы выводилось не по id, а по alias.
какие записи? в sql-запросе заменить Код (Text): WHERE `staty_id` = ".$staty_id." на Код (Text): WHERE `alias` = '{$alias}' (обрати внимание на добавившиеся одинарные кавычки!) а вот как вычислить $alias — зависит от правил в .htaccess
RewriteEngine On RewriteRule ^category/(\d+) /mysyte.ru/articles.php?category_id=$1 RewriteRule ^staty/([a-z0-9-]+)/?$ view_article.php?staty_id=$1 Добавлено спустя 2 минуты 1 секунду: Это правила в .htaccess и как вычислить теперь $alias
Ок, последний RewriteRule помещает строку с алиасом в get-параметр staty_id. я хотел это имя увидеть. не очень мудро использовать старое имя переменной для новых целей, ну да ладно. в скрипте надо сделать то, что я тебе уже показал + перед этим заменить Код (PHP): $staty_id = (int)$_GET['staty_id']; на Код (PHP): $alias = mysql_real_escape_string($_GET['staty_id']);