Sephy Posted October 10, 2011 Report Share Posted October 10, 2011 Labdien. Man tāds jautājums kā var noresetot autoinkrimentu lai tas iet pēc katras dzēšanas. Piemērs ir 5 ieraksti: id ieraksts 1 ieraksts1 2 ieraksts2 3 ieraksts3 4 ieraksts4 5 ieraksts5 Es izdzēšu 3sho un gribu lai id ir nevis 1,2,4,5 bet gan 1,2,3,4. Un ja es izdzēšu 5to es gribu nevis lai jaunajam ierakstam būtu nr 6 bet gan 5! Quote Link to comment Share on other sites More sharing options...
marcis Posted October 10, 2011 Report Share Posted October 10, 2011 Kāpēc lai vispār kāds kaut ko tādu gribētu darīt? ID ir unikāls identifikators, tas nav kārtas skaitlis vai tml. Man ir aizdomas, ka tu mēģini risināt problēmu nepareizā virzienā. Varbūt labāk pastāsti ko tieši tu gribi panākt un tev ieteiks labāku risinājumu. Quote Link to comment Share on other sites More sharing options...
Sephy Posted October 10, 2011 Author Report Share Posted October 10, 2011 Lieta tāda ka man ņem no tabulas ierakstus pēc id un ja pa vidu gadās tukšs id, tad nav labi. Vajadzētu kādu skriptu kur pārbauda vai tie ieraksti eksistē un ja neeksistē ņem nākošo. Vienu ierakstu jau viegli pārbaudīt, bet ko darīt ja nenoteikts skaits ierakstu? Php neesmu nekur redzējis repeat until ciklu ;D Quote Link to comment Share on other sites More sharing options...
codez Posted October 10, 2011 Report Share Posted October 10, 2011 Tu vienlaga to dari nepareizi: "un ja pa vidu gadās tukšs id, tad nav labi" Kāpēc nav labi? Quote Link to comment Share on other sites More sharing options...
Sephy Posted October 10, 2011 Author Report Share Posted October 10, 2011 Tāpēc ja es uzspiežu no otra ieraksta uz trešo, tad trešā ieraksta vietā parādās tukša vieta, es gribētu rādīt tikai tos ierakstus kuriem ir kāds saturs! Quote Link to comment Share on other sites More sharing options...
codez Posted October 10, 2011 Report Share Posted October 10, 2011 (edited) Kad ielādē ierakstu, nosaki ar kādu id ir iepriekšejais ieraksts un ar kādu ir nākošais ieraksts un attiecīgi pogās norādi tos. Vai arī attēlo ierakstu nevis pēc id, bet atlasot ar LIMIT N,M, tad LIMIT15,1 nākamais ieraksts būs LIMIT 16,1 neatkarīgi no tā kāds ir tā id, attiecīgi tas būs solis tuvāk arī izpratnei par ierakstu sadalīšanu lapās attiecīgi LIMIT 150,10 būs 150.-159. ieraksts, kamēr LIMIT 160-10, būt 160.-169. ierkasts Edited October 10, 2011 by codez Quote Link to comment Share on other sites More sharing options...
Swear Posted October 11, 2011 Report Share Posted October 11, 2011 (edited) $id = mysql_result(mysql_query('SELECT MIN(t1.ID + 1) AS nextID FROM web_members t1 LEFT JOIN web_members t2 ON t1.ID + 1 = t2.ID WHERE t2.ID IS NULL'),0); pēc tam ievietojot rowu id laukā ieliec $id vērtību. tikai web_members aizstāj ar savu taublu. bet kā jau tika minēts, ideja ir diezgan slikta, laigan dažos gadījumos varētu tiešām būt lietderīgi. Edited October 11, 2011 by Swear Quote Link to comment Share on other sites More sharing options...
Gints Plivna Posted October 11, 2011 Report Share Posted October 11, 2011 $id = mysql_result(mysql_query('SELECT MIN(t1.ID + 1) AS nextID FROM web_members t1 LEFT JOIN web_members t2 ON t1.ID + 1 = t2.ID WHERE t2.ID IS NULL'),0); pēc tam ievietojot rowu id laukā ieliec $id vērtību. tikai web_members aizstāj ar savu taublu. bet kā jau tika minēts, ideja ir diezgan slikta, laigan dažos gadījumos varētu tiešām būt lietderīgi. Nu šis risinājums sako vienkārši nemērā, nav vērts kāpt uz grābekļa, ar kuru jau ntie cilvēki ir norāvušies pa pieri. Vajadzētu pieturēties pie koncepta, ka ID - tas ir unikāls (un TIKAI) identifikators, tas nav nekāds numurs pēc kārtas. Numurus pēc kārtas iegūst atlasot datus. Ja nu ļoti vajag tos nemainīgus (tipa pavadzīmēm utml), kur reāli to prasa likumdošana, tad tam ir atsevišķs lauks un nevis ID. Citādi pats sev radīs daudzas problēmas: - ja vairāki lietotāji veic darbības vienlaicīgi, dabūs to pašu nākošo id - ātrdarbības problēmas, jo tāda nākošā id atlase ir krietni lēnāka nekā autoincerment - ko darīt, ja kāds ieraksts jādzēš, vai tagad pārnumurēt visus nākošos idus un arī visus saistītos ierakstus (FK) - utt, utjp Gints Plivna http://datubazes.wordpress.com/ Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.