Forum Sveta kompjutera  

Nazad   Forum Sveta kompjutera > Test Run > Programiranje

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 15.9.2007, 23:30   #1
OFPNogix
Član
 
Član od: 14.8.2006.
Lokacija: BG, Cam
Poruke: 34
Zahvalnice: 1
Zahvaljeno jedanput na jednoj poruci
Određen forumom MySQL , DELETE i stari ID

Imam pitanje u vezi baze podataka u MySQL , tj. preciznije tabele.
Imam recimo tabelu koja sadrzi polje ID koje je PRIMARY KEY i postavljena je na AUTO_INCREMENT . I kada recimo pokrenem DELETE SQL komandu na neki od redova on se izbrise ali ostanu stare vrednosti. Npr ja izbrisem zadnji unos sa id=5 i kad ubacim sledeci unos on ima id=6 . I onda nastaje problem kad koristim
Kod:
while($myrow = mysql_fetch_array($result))
On detektuje stare vrednosti id-a i vraca mi prazne redove. Da li postoji neka naredba u SQL ili funkcija koju bi pokretao pri svakom brisaanju ili periodicno koja sredjuje bazu i ID-ove. Molim vas pomognite...
Unapred hvala.
OFPNogix je offline   Odgovor sa citatom ove poruke
Stara 15.9.2007, 23:52   #2
EclipsE
Starosedelac
 
Član od: 16.4.2006.
Lokacija: Scary Movie Reputacija: ■■□
Poruke: 1.337
Zahvalnice: 378
Zahvaljeno 278 puta na 195 poruka
Slanje poruke preko Skypea korisniku EclipsE
Određen forumom Re: MySQL , DELETE i stari ID

Cudno je, ne bi trebao da ti vrati prazne redove, treba da obrishe redove... Kako ti glasi mysql_query za DELETE?
EclipsE je offline   Odgovor sa citatom ove poruke
Stara 16.9.2007, 0:13   #3
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Određen forumom Re: MySQL , DELETE i stari ID

Nažalost praviš klasičnu grešku u korišćenju baza podataka a ona se ogleda u tome da ako moraš da menjaš vrednosti primarnih ključeva onda radiš nešto pogrešno. Naime, svrha primarnog ključa je da bude jedinstven i da na taj način garantuje integritet tvojih podataka. To znači da ako imaš tabelu sa 5 zapisa i ti obrišeš poslednji sledeća AUTOINCREMENT vrednost treba da bude 6 a ako budeš radio klasičan SELECT upit sasvim je normalno da ćeš dobiti sekvencu 1,2,3,4,6. Ovo se dešava zato što se svaki put pri povećanju AUTOINCREMENT vrednosti u tabeli (a po SQL definicije sme da postoji samo jedna AUTOINCREMENT vrednost po tabeli) vrši se zapis te vrednosti u određenom delu tabele koji ti ne vidiš a koji se ne menja ako kojim slučajem počneš da brišeš zapise.

Drugim rečima, ovako kako funkcioniše treba i da bude. Ako ti je baš potrebno da prikaz vršiš po rednom broju bez "rupa" onda možeš da iskoristiš jednu jednostavnu tehniku kao što je čuvanje trenutno iščitanog broja zapisa baze u pomoćnu promenjljivu dok ćeš recimo za primarni ključ koristiti nasumično generisan kod. Evo kako bi to trebalo da izgleda:
PHP kod:
$trenutniZapis 1;
while(
$zapis mysql_fetch_array($upit)){ //$upit ovde treba da ti bude ono sto si dobio od mysql_query-ja
    
echo "R.b.:".$trenutniZapis++;
    
/*
        ostatak tvog koda
    */

Znači još jednom, šta god da radiš nemoj da pokušavaš da na bilo koji način vršiš bilo kakva "dopunjavanja" ili "sortiranja" baze nakon brisanja zapisa. To se nikada ne radi!

Poslednja ispravka: VojaM (16.9.2007 u 18:13)
holodoc je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku holodoc na korisnoj poruci:
OFPNogix (19.9.2007)
Stara 19.9.2007, 20:05   #4
OFPNogix
Član
 
Član od: 14.8.2006.
Lokacija: BG, Cam
Poruke: 34
Zahvalnice: 1
Zahvaljeno jedanput na jednoj poruci
Određen forumom Re: MySQL , DELETE i stari ID

Hvala na odgovoru!!!
Uspeo sam da resim problem s tim sto sam uveo pomocnu promenljivu i tako sto sam proverio dali mi $zapis vraca NULL!
OFPNogix je offline   Odgovor sa citatom ove poruke
Stara 19.9.2007, 20:56   #5
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Određen forumom Re: MySQL , DELETE i stari ID

Citat:
OFPNogix kaže: Pregled poruke
Hvala na odgovoru!!!
Uspeo sam da resim problem s tim sto sam uveo pomocnu promenljivu i tako sto sam proverio dali mi $zapis vraca NULL!
A kako zapis može da ti vrati NULL ako red ne postoji i uopšte neće biti uzet u obzir kod upita Možda ja ne razumem kompletno tvoje pitanje ali ajd ako misliš da si rešio problem
holodoc je offline   Odgovor sa citatom ove poruke
Stara 20.9.2007, 15:37   #6
OFPNogix
Član
 
Član od: 14.8.2006.
Lokacija: BG, Cam
Poruke: 34
Zahvalnice: 1
Zahvaljeno jedanput na jednoj poruci
Određen forumom Re: MySQL , DELETE i stari ID

Pa fora je u tome sto mi nekad upit vraca upite koji "ne postoje" , a nekad ne.
Ne znam dal je do sintakse ili web servera, vrste baze podataka ali u svakom slucaju hvala.
OFPNogix je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Pomoć oko mysql Dado1 Serverske aplikacije i baze podataka 5 6.3.2007 14:50
stari aparati nighthawk Foto i audio/video 8 2.3.2007 0:08
Povezivanj dve baze (MySQL) nighthawk Programiranje 0 15.1.2007 16:32
Mysql i delete max values... dziber Programiranje 7 23.10.2006 23:16
Stari komp PAIN Šta da kupim? 23 10.4.2006 7:48


Sva vremena su po Griniču +2 h. Sada je 23:20.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2019, vBulletin Solutions, Inc.
Hosted by Beograd.com