Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Переиндексация


Автор: R.M. 30.9.2005, 11:35
Подскажите, как сделать переиндексацию id после удаления строки?

Автор: z-END 30.9.2005, 11:45
Куксикус ты о чем?

Автор: $дмитрий 30.9.2005, 11:52
Куксикус
1. записать ИД удаленной строки
2. циклом переименовать, то что лежит "ниже" удаленной строки.

Автор: -=Ustas=- 30.9.2005, 11:56
Я так понимаю, что ты не хочешь чтобы у тебя поле id содержало дырки, типа 1,2,4,8 ?! Если это так, то тебе лучше завести дополнительное поле, например nid - целочисленного типа, и в нем проставлять нумерацию по-порядку. А после удаления делать следующее:
Код

<?php

$sql = "SELECT
            id
        FROM
            your_table
        ORDER BY
            id
        ASC";
$res    = mysql_query($sql);
$allRec = mysql_num_rows($res);

$i = 0;
while ($obj = mysql_fetch_object($res)) {
    $idArray[$i] = $obj->id;
    $i++;
}

for ($i = 0; $i < $allRec; $i++) {
    $sql = "UPDATE
                your_table
            SET
                nid = '".$i."'
            WHERE
                id = '".$idArray[$i]."'";
    $res = mysql_query($sql);
    if (!$res) {
        echo "Ошибка обновления записи с ID -> ".$idArray[$i];
        exit();
    }
}

?>

Автор: R.M. 30.9.2005, 13:44
-=Ustas=-

Спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)