Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL]AUTO_INCREMENT uzywanie poprzednich id
wrcnitro
post 5.06.2008, 15:34:37
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 4.03.2006

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
JoShiMa
post 5.06.2008, 15:38:41
Post #2





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


Jeśli chodzi Ci o przestawienie licznika to:
  1. ALTER TABLE nazwa_tabeli AUTO_INCREMENT=1;


--------------------
Go to the top of the page
+Quote Post
sowiq
post 5.06.2008, 15:42:30
Post #3





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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ś.

Ten post edytował sowiq 5.06.2008, 15:43:43
Go to the top of the page
+Quote Post
wrcnitro
post 5.06.2008, 15:42:33
Post #4





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 4.03.2006

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post
JoShiMa
post 5.06.2008, 15:45:16
Post #5





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


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. ?>


--------------------
Go to the top of the page
+Quote Post
wrcnitro
post 5.06.2008, 15:46:50
Post #6





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 4.03.2006

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.07.2025 - 19:46