1

Тема: Поле id в Mysql

Столкнулся с проблемой, как сделать чтоб когда удалялась запись (например с id 3) то можно было пересчитать id, чтоб вместо пропущенной записи появлялась новая запись с этим же id на  место удаленной записи. И давно мучает вопрос как вместо числовых  id сделать имена, типо так: url: /page/example_id/.

2

Re: Поле id в Mysql

Skil сказал:

как сделать чтоб когда удалялась запись (например с id 3) то можно было пересчитать id,

Без изменения идентификаторов этого сделать нельзя. С изменением - надо сперва очистить таблицу (TRUNCATE), затем добавить строки с пропущенным идентификатором, чтобы при вставке идентификаторы создались автоматически.

Skil сказал:

как вместо числовых  id сделать имена, типо так: url: /page/example_id/

Не смог понять вопрос.

3

Re: Поле id в Mysql

Не смог понять вопрос.

Ну вот можно сделать вывод например так: /page/4/, а нельзя ли уникальное имя сделать /page/name/ ?

4

Re: Поле id в Mysql

Skil сказал:

Ну вот можно сделать вывод например так: /page/4/, а нельзя ли уникальное имя сделать /page/name/ ?

Заведите в таблице отдельное поле для формирования урла и сделайте его уникальным.

5 (изменено: Skil, 2012-02-09 23:25:39)

Re: Поле id в Mysql

не хочу наглеть, но я даже не могу представить как его сделать neutral
а именно как оно будет взаимодействовать.

6

Re: Поле id в Mysql

Skil сказал:

как оно будет взаимодействовать.

Точно так же, как и обычный целочисленный идентификатор: выбираете из урла строку и ищете ее в таблице. Добавить  поле VARCHAR в таблицу, думаю будет не сложно.

7

Re: Поле id в Mysql

Hanut сказал:
Skil сказал:

как оно будет взаимодействовать.

Точно так же, как и обычный целочисленный идентификатор: выбираете из урла строку и ищете ее в таблице. Добавить  поле VARCHAR в таблицу, думаю будет не сложно.

Если не очень трудно накатайте мне запрос как создавать этот урл, уж больно непонятно все.

8

Re: Поле id в Mysql

Skil сказал:

Если не очень трудно накатайте мне запрос как создавать этот урл, уж больно непонятно все.

Урл создается из того, что хранится в поле таблицы. Запишите в поле "name", затем выберите его запросом и соберите урл. Я не понимаю в чем именно трудности.

9 (изменено: Skil, 2012-02-10 11:43:47)

Re: Поле id в Mysql

http://s57.radikal.ru/i158/1202/8b/317006087804.jpg
http://s018.radikal.ru/i509/1202/ca/3b3eacdf7543.jpg

Вот, как я понимаю должно работать, но урл не рабочий (. Может надо в мод rewrite лезть? Это каждый раз получается надо будет лезть в базу и присваивать урл, а нельзя его формировать из имени?

10

Re: Поле id в Mysql

В поле url надо хранить только ban_list, без косой черты. mod_rewrite обязательно нужен, чтобы передать скрипту-обработчику часть урла.

RewriteEngine on
RewriteBase /
RewriteRule ^page/([^/]+)/?$ /page/index.php?url=$1 [L,NC]

Далее в скрипте /page/index.php проверяем переменную $_GET['url'] и если ее значение найдено в таблице, то выводим content.

11 (изменено: Skil, 2012-02-10 16:22:24)

Re: Поле id в Mysql

Hanut сказал:

В поле url надо хранить только ban_list, без косой черты. mod_rewrite обязательно нужен, чтобы передать скрипту-обработчику часть урла.

RewriteEngine on
RewriteBase /
RewriteRule ^page/([^/]+)/?$ /page/index.php?url=$1 [L,NC]

Далее в скрипте /page/index.php проверяем переменную $_GET['url'] и если ее значение найдено в таблице, то выводим content.

page.php (код отвечающий за вывод контента)

<?php

    // If there are pages
    if ($forum_db->num_rows($result))
    {
        while ($page = $forum_db->fetch_assoc($result)) {

?>
            <a href="<?php echo forum_link($forum_url['page_id'], array($page['id'], sef_friendly($page['title']))) ?>"><?php echo forum_htmlencode($page['title']) ?></a><br />

rewrite_rules.php

$forum_rewrite_rules_portal = array(
    '/^forum(\.html?|\/)?$/i'            => 'index.php?forum',
    '/^pages(\.html?|\/)?$/i'            => 'index.php?pages',
    '/^page[\/_-]?([0-9]+).*(\.html?|\/)?$/i'    => 'index.php?page=$1/$2/',
    '/^news[\/_-](rss|atom)(\.html?|\/)?$/i'    => 'extern.php?news_feed&type=$1',
);

$forum_rewrite_rules = array_merge($forum_rewrite_rules, $forum_rewrite_rules_portal);