Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL]AUTO_INCREMENT uzywanie poprzednich id
Forum PHP.pl > Forum > Przedszkole
wrcnitro
Witam!!

Mój problem doskonale jest opisany na tej stronie:
http://algorytmy.pl/?id=1397
jednak odpowiedzi na nie tam nie dostałem smile.gif a na jedno pytanie nie zmaierzam wykupowywac abonamentu smile.gif a wiec jak pomozecie questionmark.gifsmile.gif
JoShiMa
Jeśli chodzi Ci o przestawienie licznika to:
  1. ALTER TABLE nazwa_tabeli AUTO_INCREMENT=1;
sowiq
Nie wiem czy to najłatwiejszy sposób, bo nigdy nie używałem, ale:
  1. ALTER TABLE `moja_tabela` AUTO_INCREMENT = '11'



Poza tym nie wiem jaki masz cel takiej operacji. Auto increment robi się przeważnie jako unikalne ID. Skoro to ID nie istnieje (jest skasowane), to nie powinno go być, a nie znajduje się tam nagle jakiś nowy rekord. Przy relacyjnych bazach będzie już problem z takim czymś.
wrcnitro
Cytat(JoShiMa @ 5.06.2008, 14:38:41 ) *
Jeśli chodzi Ci o przestawienie licznika to:
  1. ALTER TABLE nazwa_tabeli AUTO_INCREMENT=1;


aha przypisanie wartosci 1 spowoduje ze ze skasowane wartosci beda mogly sie powtarzac questionmark.gif
tongue.gif
a jest jeszcze jakis sposob aby pola wewnatrz struktury byly zapelniane?? oczywiscie bez uzycia php questionmark.giftongue.gif
JoShiMa
Bez php to nie wiem. Tamta opcja to po prostu zresetowanie licznika i numerujesz wpisy od początku, oczywiście zamazując stare.

Z php to będzie tak:

  1. <?
  2. $tabela = "osoby";
  3.  
  4. if (mysql_connect($sql_serwer, $sql_login, $sql_haslo)
  5. and mysql_select_db($sql_baza)) {
  6.  
  7. if (mysql_query("SET @n:=0, @m:=0")) {
  8. $wynik2 = mysql_query("SELECT id, (@m:=@m+1) as nr
  9. FROM $tabela GROUP BY id HAVING id<>(@n:=@n+1) LIMIT 1");
  10. if (mysql_num_rows($wynik2)==0) {
  11. $wynik2 = mysql_query("SELECT max(id)+1 as nr FROM $tabela");
  12. }
  13. }
  14.  
  15. if ($wynik2 and $dane = mysql_fetch_array($wynik2)) {
  16. $nr = $dane["nr"];
  17. if ($nr<1) $nr = 1;
  18. } else echo "Błąd w danych...";
  19.  
  20. } else echo "Nie można połączyć się z bazą danych...";
  21.  
  22. echo "Pierwszy dostępny numer indeksu to: $nr";
  23. ?>
wrcnitro
Cytat(sowiq @ 5.06.2008, 14:42:30 ) *
Nie wiem czy to najłatwiejszy sposób, bo nigdy nie używałem, ale:
  1. ALTER TABLE `moja_tabela` AUTO_INCREMENT = '11'



Poza tym nie wiem jaki masz cel takiej operacji. Auto increment robi się przeważnie jako unikalne ID. Skoro to ID nie istnieje (jest skasowane), to go nie powinno go być, a nie znajduje się tam nagle jakiś nowy rekord. Przy relacyjnych bazach będzie już problem z takim czymś.



Skrypt wyswietla tabele wg id. Jedna z funkcji ktora obsluguje ten skrypt przestawia kolejnosc rekordow i zminia ja na stale tongue.gif Najlepszy sposob jaki wykombinowalme to stworzenie kolejnej kolumny "pozycja" jednak musialbym przerabiac w ten czas caly system ktory moze wydawac sie prosty ale jest naprawde bardzo rozbudowany smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.