Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Numerowanie problem
Forum PHP.pl > Forum > Bazy danych
howcio
Siemka, mam problem jak usuwam rekordy przez pma, to numeracja leci dalej zamiast zacząć od nowa...
Np. Mam rekordy :
ID(auto_inc) Nazwa Kod
1 Nazwa1 22938
2 Nazwa2 39948

jeśli usunę oba rekordy, i przez formularz dodaję kolejny rekord to dodaje mi się z numerem 3... mimo, że tabela jest pusta, nie ma żadnych rekordów... Jak zrobić, aby numery dodawały się po kolei, jeśli usunę jakiś to żeby jeszcze raz go dodawało ?
com
pytanie poco? bo zasadniczo tak to powinno działać, ponieważ id ma być unikatowe wink.gif
pedro84
W pętli, gdziekolwiek dodaj sobie numer. Ile razy się jeszcze ta kwestia na forum pojawi?

Edyta:
Wartości identyfikacyjne do tego nie służą, jak sama nazwa wskazuje.

"Edytłem", bo wyszedł mi najgorszy skrót myślowy jaki mógł.
pedro84
Cytat(com @ 29.11.2013, 01:03:00 ) *

Wow, no co Ty?!

Przeczytaj to co napisałem ze 100 razy, wtedy zrozumiesz i przyznasz: najgorszy skrót myślowy ever smile.gif
com
pedro84

Ja Ciebie zrozumiałem, chodziło Ci o nr przy wyświetlaniu a autorowi o nr id w bazie pod którym dodaje rekord biggrin.gif

Twoja wypowiedź akurat dało się zrozumieć, na tym forum widziałem gorsze... szczególnie jak delikwent sam nie wiedział w zasadzie czego chce biggrin.gif

Chyba że robiłeś za wróżke i stwierdzasz ze tego używa do wylistowania tego w jakieś tabeli lub gdziekolwiek biggrin.gif
pedro84
Cytat(com @ 29.11.2013, 01:30:27 ) *
Chyba że robiłeś za wróżke i stwierdzasz ze tego używa do wylistowania tego w jakieś tabeli lub gdziekolwiek biggrin.gif

To chyba sobie szklaną kulę kupię, bo idę o zakład, że coś takiego robi smile.gif
werdan
Masz dla danej tabeli ustawiony AUTO INCREAMENT.

Jesli chcesz go zresetowac/zmienic, wejdz w daną tabele, wybierz "Operacje" i zmien AUTO_INCREAMENT na 1.
Kshyhoo
Cytat(howcio @ 29.11.2013, 00:48:06 ) *
Jak zrobić, aby numery dodawały się po kolei, jeśli usunę jakiś to żeby jeszcze raz go dodawało ?

Dla bazy danych nie ma znaczenia, czy są "dziury" w numeracji, bo taka jest poprostu konstrukcja bazy. Jeżeli się upierasz przy resetowaniu numeracji, to po usunięciu WSZYSTKICH danych, możesz wywyołać:
  1. ALTER TABLE tablename AUTO_INCREMENT = 1

Wtedy numeracja zacznie się od nowa.

Możesz również po usunięciu rekordu uzyć tej funkcji, ale o AUTO_INCREMENT równym ID usuniętego rekordu. Wtedy ominiesz problem dziur.
Możesz też, jeśli zechcesz wykorzystać puste, wolne numery rekordów w polu AUTO_INCREMENT, musisz napisać własną funkcję, która pobiera pierwszy wolny numer. Coś w stylu:
  1. if (mysql_query("SET @n:=0, @m:=0")) {
  2. $wynik1 = mysql_query("SELECT id, (@m:=@m+1) as nr
  3. FROM $tabela GROUP BY id HAVING id<>(@n:=@n+1) LIMIT 1");
  4. if (mysql_num_rows($wynik1)==0) {
  5. $wynik2 = mysql_query("SELECT max(id)+1 as nr FROM $tabela");
  6. }
  7. }
  8.  
  9. if ($wynik2 and $dane = mysql_fetch_array($wynik2)) {
  10. $nr = $dane["nr"];
  11. if ($nr<1) $nr = 1;
  12. } else echo "Błąd w danych...";
com
czytajcie inne wątki, bo wszystko to co piszecie jest zawarte w linkach które podałem, dajcie autorowi troche pomyśleć, ponadto tu http://forum.php.pl/lofiversion/index.php/t168565.html thek napisał dlaczego zapychanie dziur jest bez sensu...
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.