[ Ivan Vasić @ 29.09.2004. 19:07 ] @
Imam tabelu sa primarnim ključem :
id - type (auto increase).
Sve to lepo funkcioniše dok ne obrišem neku vrednost i onda tu ostane "rupa" tj. ako izbacim row sa id=3 imaću 1,2,4,5 ....

Pošto meni je u php skripti neophodan niz bez ovakvih rupa, da li postoji neki način da podesim da id automatski pomeri sve id'e za jedno mesto unazad ili ne ? Mnogo bi mi značilo da može ali nešto sumnjam u to....

Da li postoji neki drugi način za tako nešto ili ću morati da menjam skript ???
[ _owl_ @ 29.09.2004. 21:51 ] @
Menjaj skriptu, ili daj stvarno dobar razlog zbog kojeg ne smes da imas rupe medju id-evima (u tom slucaju mozda se neko i iscima da detaljnije razmisli o tvom problemu).
[ Shinhan @ 30.09.2004. 08:13 ] @
Kao sto kaze _owl_ daj razlog zasto ne smes da imas rupe.
Ako ti samo zelis da imas redom brojeve, onda mozes posle vadjenja
podataka iz baze da jednostavno napravis neki brojac $i i da ga
inkrementujes pri svakom zapisu i prikazujes.
Ako vrsis prikaz na vise stranica onda samo inicijalizujes gore
pomenutu promenljivu na odgovarajuci broj (za 20 zapisa po strani i
ako je ovo 3 strana onda je $i = 40).
[ Dejan Topalovic @ 30.09.2004. 10:44 ] @
Hm, ako mislis na situaciju kada izbrises npr. record koji ima id 3, a kasnije dodajes npr. neki record koji ima id 524, on se smjesta na prvo prazno mjesto, odnosno na to ispraznjeno mjesto od recorda sa id 3 ? Pri ispisu ti nakon id 1 i 2, ispisuje i id 524 ? Jesi li na to mislio?
Imas dva rjesenja.
Jedno je da sortiras ispis po id koloni, a drugo je da nakon svake DML (INSERT, DELETE i UPDATE) operacije uradis optimizaciju tabele sa komandom:
Code:
OPTIMIZE TABLE ime_tabele;


Ili sam te pogresno shvatio sta ti treba?
[ Ivan Vasić @ 30.09.2004. 11:25 ] @
Ljudi nema potrebe da se "cimate"

Zanimalo me je samo da li postoji nešto "prosto" što mi ne pada na pamet kako da ovo rešim. Čim vam odmah nije palo na pamet - znači da nije prosto

Ajd, sad kad se bolje razmislim izložiću celu situaciju :

Zadatak : U direktorijum treba postaviti oko malih 100 sličica u JPEG formatu (ne u bazi nego u direktorijumu servera - ne pitajte zašto ). Iz baze se čitaju neki podaci o slikama.
Admin treba da ima mogućnost da dodaje i briše ove sličice pomoću male PHP skripte. Takodje na jednoj strani imam listanje svih tih slika ( 1 per page ) i linkove ka svim ostalim stranama ( + previous i next page ). Imena slika su mi img1.jpg, img2.jpg, img3.jpg itd itd... - znači jednostavan ID u bazi se povezuje sa imenom slike.
Tako da je pozivanje neke strane sa odgovarajućom slikom maximalno jednostavno
Code:
 prikaz.php?id=3 
i eto meni 3. slike. Problem nastane kad neko obriše 3. sliku pa onda ovaj isti kod ne prikaže ništa.

Težim da ovo bude jednostavno jer je klijent "zahtevao" da se održi ovakav prost koncept PHP skripte (što ne znači da ne može da se menja - ukoliko postoji drug prost način).

Hvala na pomoći do sada. Nadam se da sam uspeo da objasnim o čemu se radi. Thnx
[ Dejan Topalovic @ 30.09.2004. 11:28 ] @
Izvini, ali kako ti generises te linkove? Dinamicki ili ih imas vec svih 100 predefinisanih u statickom obliku?
Ako je ovo prvo u pitanju, onda neces imati problema, jer pri izvlacenju popisa id-ova iz tabele, generises linkove samo na one slike koje nisu obrisane.
Ako je ovo drugo u pitanju (sto je vrlo lose odradjeno onda), onda ces morati rucno da prepravljas sve linkove na slike, koje su obrisane.

Citat:

U direktorijum treba postaviti oko malih 100 sličica u JPEG formatu (ne u bazi nego u direktorijumu servera - ne pitajte zašto ).
Pa i bolje je tako da se slike drze u direktoriju, a ne u bazi. Ne vidim cemu se cudis u vezi tog koncepta? :)
[ flylord @ 30.09.2004. 12:16 ] @
Jednostavno prodjes sa nekom php skriptom kroz sve ID-eve i nadjes prvi slobodan i onda ga iskoristis. Vrlo prosto, brzo i efikasno:)
[ Ivan Vasić @ 30.09.2004. 12:51 ] @
Citat:
Izvini, ali kako ti generises te linkove? Dinamicki ili ih imas vec svih 100 predefinisanih u statickom obliku?
Ako je ovo prvo u pitanju, onda neces imati problema, jer pri izvlacenju popisa id-ova iz tabele, generises linkove samo na one slike koje nisu obrisane.

Da naravno dinamički. Izgleda da će morati ovako kao što ti kažeš.
Ili još jedna ideja : pri brisanju - poslednji record postavim na mesto ovog koji brišem a "stvarno" obrišem taj poslednji ? Jel nije glupo rešenje ?

Citat:

Pa i bolje je tako da se slike drze u direktoriju, a ne u bazi. Ne vidim cemu se cudis u vezi tog koncepta?

Eto vidiš, ispao sam glup u društvu
[ Shinhan @ 01.10.2004. 15:42 ] @
Meni je logicno resenje da kada korisnik odabere sliku broj 3 (koja je
ranije obrisana) da dobije poruku o gresci je rje ta slika obrisana.
Kazes mu lepo "slika je obrisana".
Naravno, pri prikazu liste slika ti ces napisati linkove samo do slika
koje sigurno postoje (recimo pomocu funkcije file_exists()).
[ Ivan Vasić @ 01.10.2004. 20:23 ] @

Pa da ... tako nešto ću i da uradim. Ipak ću malo da izmenim skriptu i to je to. Hvala svima na pomoći u svakom slučaju.
[ CandyMan @ 14.10.2004. 12:29 ] @
Dakle, hvala gdinu BondS-u na lepom rešenju
http://www.geocities.com/oranails/

Preuzet tekst, za one koji neće da klikću:
---------------------------------------

"Holefinder" query
Problem:

Suppose you have table with uniq sequence number field. And this numbers should be continuous, for example invoice No in Invoices table. How to check continuity?
Solution:

--
-- List of all holes in Invoices table
--
Code:

select b HoleStart, min(e) HoleEnd
from
(
select inv_num b from invoices bb
where not exists (select 'x' from invoices bp
                  where bp.inv_num = bb.inv_num - 1)
),
(
select inv_num e from invoices be
where not exists (select 'x' from invoices bn
                  where bn.inv_num = be.inv_num + 1)
)
where e >= b
group by b
order by 1

-----------------------------------------------------
Kraj preuzetog teksta

Ukoliko nešto nije jasno - objasniću. Provereno radi na Oracle-u, trebalo bi i na MySQL -u.
Pozdrav
[ flylord @ 14.10.2004. 12:31 ] @
I ovaj upit ce da radi u MySQL?
[ _owl_ @ 14.10.2004. 14:49 ] @
Jedino ako verzije 4.1.x podrzavaju subselect u FROM klauzuli (a mislim da ne podrzavaju).
[ Shinhan @ 14.10.2004. 18:28 ] @
5 mozda i podrzava.
Sta sve nema u petici ne bi me ni cudilo :-)
[ CandyMan @ 19.10.2004. 14:03 ] @
Citat:
_owl_: Jedino ako verzije 4.1.x podrzavaju subselect u FROM klauzuli (a mislim da ne podrzavaju).

Čak i da ne podržavaju, složićete se da je dobra smernica za pisanje skripte koja bi rešila problem.
[ Ivan Vasić @ 19.10.2004. 15:58 ] @
Tvoj post je potpuno na mestu i hvala sto si uopste pokusao da pomognes