За последние 24 часа нас посетил 18881 программист и 1708 роботов. Сейчас ищут 957 программистов ...

скрипт пересчета id

Тема в разделе "PHP для новичков", создана пользователем epocalips, 4 апр 2011.

  1. epocalips

    epocalips Активный пользователь

    С нами с:
    26 мар 2011
    Сообщения:
    31
    Симпатии:
    0
    Адрес:
    UA/Lviv
    Итак, что нужно. Имеем таблицу, в которой есть поле id (авто инкримент). Пусть имеем поля, где id = 1,2,3,4,5. Когда мы удаляем, например, поле 5, то добавляя новое, получим id не 5, а 6 ... т.е. будет 1,2,3,4,6 ... или другие подобные варианты, то есть не последовательность.

    Как правильно написать скрипт пересчета id?
    Вот мой вариант, который работает, но очень тупой (и вообще не знаю так можно делать).

    Код (Text):
    1.        $result = mysql_query ("SELECT id FROM article WHERE id=(SELECT MAX(id) FROM article)");
    2.         $myrow  =  mysql_fetch_array ($result);
    3.         $max= $myrow['id'];
    4.         $j=1;
    5.     for($i=1;$i<=$max;$i++){
    6.               $result33 = mysql_query ("SELECT title FROM article WHERE id='$i'");
    7.               $myrow33  =  mysql_fetch_array ($result33);
    8.               $result22 = mysql_query("UPDATE article SET num='$j' WHERE id='$i'");
    9.                   if(!$result22){echo"Помилка!";}
    10.               if(isset($myrow33['title'])) {$j++;}
    11.     }
    Спасибо, жду ответа.
     
  2. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    epocalips
    Самый верный вариант - оставить автоинкремент в покое.

    Кому понадобилось его менять?
     
  3. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
  4. epocalips

    epocalips Активный пользователь

    С нами с:
    26 мар 2011
    Сообщения:
    31
    Симпатии:
    0
    Адрес:
    UA/Lviv
    ага, а как тогда вывести, например, з 11 по 20 поле?
     
  5. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    SELECT title FROM article LIMIT 10 OFFSET 11
     
  6. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    у вас есть самый крутой учебник - гугл!!!111
    select from table where hello=12 limit 11,10
    ну кажись так
    а точнее - вот так и гуглить
     
  7. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Порядок, в котором ты вытаскиваешь записи, с порядком числа в поле id не имеет ничего общего.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    epocalips
    не делайте так.
     
  9. epocalips

    epocalips Активный пользователь

    С нами с:
    26 мар 2011
    Сообщения:
    31
    Симпатии:
    0
    Адрес:
    UA/Lviv
    вы о чем?)
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    epocalips
    Итак, что нужно.
    не делайте так.
     
  11. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    id не надо пересчитывать