Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 8 odgovora
  • 3.924 pregleda

Najnovija ↓

auto_increment or ? 13.02.2005. u 03:24 · pre 264 meseca #1
Ne znam ni sam kako da postavim pitanje, posto prvi put radim sa mysql bazom, procitao sam par tutoriala i vec sam naisao na problem.

mysql> select * from user;
+----+-----------+-----------------+----------+--------------+
| id | username | email | password | website |
+----+-----------+-----------------+----------+--------------+
| 10 | | | | |
| 9 | korisnik1 | [email protected] | pass1 | www.test.com |
+----+-----------+-----------------+----------+--------------+
2 rows in set (0.04 sec)

Znaci dodao sam kao neke korisnike, i pobrisao ih,.. svaki sledeci koji se reguje dobije sledeci id iako su prethodni obrisani,.. a tabelu sam kreirao na sledeci nacin:

CREATE TABLE user (
id int(10) NOT NULL auto_increment,
username varchar(25) NOT NULL default '',
email varchar(250) NOT NULL default '',
password varchar(25) NOT NULL default '',
website varchar(250) NOT NULL default '',
PRIMARY KEY (id),
);

Kao sto sam rekao, pocetnik sam, pa me zanima kako mogu da resim ovaj problem, znaci kad se reguje user da dobije sledeci po redu ID,.. i recimo ako obrisem 5 usera (od 5) da sledeci koji se reguje bude broj 1 a ne 6.

I jos nesto,.. kako jos da uradim da kada se neko registruje, ne moze da ostavi neko polje prazno:

if ( $username == "" and $password == "" and $email == "" and $website == "" )
{ echo 'Polja ne mogu da budu prazna!'; }

?
Re: auto_increment or ? 13.02.2005. u 15:16 · pre 264 meseca #2
Zasto je bitno da ID-evi idu jedan za drugim(i da ne bude rupa)??
Potpis
Owl
Re: auto_increment or ? 14.02.2005. u 03:04 · pre 264 meseca #3
Pa sad ;) treba mi zbog neke liste, mada verovatno to moze da se resi na neki drugi nacin...
Re: auto_increment or ? 14.02.2005. u 08:52 · pre 264 meseca #4
Za ovo pitanje treba napraviti top temu, svako malo pa se nađe neko ko pita kako da mu ključevi budu uzastopni...
Re: auto_increment or ? 14.02.2005. u 15:14 · pre 264 meseca #5
Pa ako je zbog liste (ustvari tebi treba samo redni broj ispred svakog reda), onda ti ne preostaje nista drugo nego da sednes i zasuces rukave. Moguce je ostvariti da imas uzastopne brojeve bez rupa samo sto ces da se iscimas dok to napravis. Posle ces se nadati da baza ne bude opterecena sa mnogo izmena (brisanje pa dodavanje) posto se moze desiti da dodje do znatnog usporenja - ali ipak sve to je vredno krajnjeg cilja zar ne?
Potpis
Owl
Re: auto_increment or ? 14.02.2005. u 21:16 · pre 264 meseca #6

Znas kako, dok ne smislim pravo resenje za to, necu ni stavljati ID,.. jer problem se javlja posle kad imas recimo 100 korisnika i obrises 41 i 72, treba svima da se pomeri ID, a to vec jeste problem, a posto sam ja pocetnik uopste nemam predstavu kako da krenem, mislim imam nekih ideja (sa max brojevima) ali za sada necu oko toga da se cimam, ako neko bude imao ideju ili resenje super, ako ne,.. ostace ce za sada bez ID-a.
Re: auto_increment or ? 14.02.2005. u 21:27 · pre 264 meseca #7
Ako moze da bude bez ID-a zasto ne moze da bude sa ID-evima koji nisu po redu? Ne kontam.
Potpis
Aj prevedi!
Re: auto_increment or ? 15.02.2005. u 02:37 · pre 264 meseca #8
Citat:
caiser: Ako moze da bude bez ID-a zasto ne moze da bude sa ID-evima koji nisu po redu? Ne kontam.


Pa sad, ako krenem tako, onda mi ni treba ni lista, ni sajt ;) u svakom slucaju, tu kolonu za sada necu da prikazujem, dok ne saznam id shemu...
Re: auto_increment or ? 15.02.2005. u 11:44 · pre 264 meseca #9
Pozd.
Ovaj ti komentar ne stoji. Ako neshto jednostavno ne treba raditi (a ne treba jer se kosi sa principima baza podataka), to ne znachi da ne treba raditi ni ostalo.

Pomenucu samo neke od problema chachkanja kljucheva kako ne treba:
- Aplikacija obrishe neku relaciju, i kulturno krene da menja kljucheve kako jelda ne bi bilo rupa. U tom trenutku drugi korisnik se nakachi i takodje obrishe nekog korisnika i krene da menja kljucheve. Problem je ochigledan - postoji verovatnoca da ce da se simultanim menjanjem kljuchevi totalno pobrkaju. (Molim samo bez komentara kako nikad nece biti drugog korisnika)
- Ako, dace codd, uznapredujesh sa radom sa bazama podataka, i pozhelish da ubacish josh koju tabelu koja ce biti vezana sa ovom i imati josh kojekakve podatke, treba da znash da je taj kljuch veza izmedju te dve (ili n) tabele/tabela. To znachi da bi chachkanje po kljuchevima iz prve tabele povlachilo da ce veze pobrkati, shto opet znachi da se moraju menjati i podaci u drugoj ili drugim tabelama. A sve to je totalna glupost i nevidjeno gubljenje vremena ... bolje da se skoncentrishesh na neke druge stvari, kao shto je ne korishcenje kljucheva u druge svrhe osim za ono za shta su namenjeni.

Za kraj, preporuchujem ti da malo prochitash o relacionim bazama podataka (google?) pre nego shto nastavish da ih koristish.

No, ako si bash zapeo da ti idu po redu, dajem ti reshenje bazirano na tvojoj strukturi tabele, i predlazhem da se bavish nechim drugim ako ga budesh primenio. ;)
Code:

DELETE from user WHERE id=[ID];
UPDATE user SET id=id-1 WHERE id>[ID];
ALTER TABLE user auto_increment=[MAX(id)+1]

Ovo naravno podrazumeva da je tabela vec uredjena. [ID] i [MAX(id)+1] su konstantne vrednosti.
Sada idem da se ubijem, jerbo vece djubre od koda u zhivotu nisam napisao :)

Svako dobro.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme