T-shirt apdruka,un mazo uzlīmju taisīšana. 4
Profesionālie tulkošanas pakalpojumi. 5
Pardod: MSI GeForce RTX 2080ti gaming X TRIO Graphic Card 1
Vēlos piedāvāt darbu online. 0
OCTA termiņš 13
Ka sauc Pasaules dalu kura dzivojam 4
google 1
Taustiņu funkcijas izmainīšana 2
Torrent 1
ESET izlaiž 2017.gada produktu izdevumus 23
VIAPLAY: Video tiešsaistē skatās 70% Latvijas iedzīvotāju 21
Katrā desmitajā datorā joprojām izmanto Windows XP 2
Google tuvākajā laikā atteiksies no Chrome paplašinājuma palaidēja 2
Acer ievieš nozares pirmo ieliekto monitoru ar acu izsekošanas funkcionalitāti 4
Adobe laiž klajā ārkārtas atjauninājumu 3
Tests: Cik precīzs ir "lēta gala" velo spidometrs? 3
Leģendārie telefoni – Nokia 3310 un citi 3
Puisis iziet Super Mario spēli mazāk kā piecu minūšu laikā un labo pasaules rekordu 2
Līdz 29.jūlijam atjaunini savu Windows bez maksas! 3
Kā uzlabot televizora skaņu? 2
Programma, ar kuras palīdzību fotogrāfijas pārveidot .gif formātā 1
Aproce, kas sastāv no 25 instrumentiem 1
Trīs padomi televizora izvēlei 2
Windows 7 ēra tuvojas noslēgumam, Microsoft koncentrējas uz Windows 10 1
Lietotāji online: 98
Reģistrētie lietotāji online: 0
Viesi online: 98
Sveicināti, kolēģi!
Projektēju CMS un esmu atdūries pret šādu jautājumu, vajag iespēju rakstu kategorijas bīdīt uz augšu un uz leju, t.i. mainīt to kārtību. Jautājums - kā atzīmēt šo kārtību datubāzē.
Viens variants būtu attiecīgās apakškategorijas ierakstiem vienkārši piešķirt numurus 1, 2, 3... un pie pārvietošanas tos attiecīgi rediģēt, lai šī kārtība visu laiku saglabātos korekta. Bet, manuprāt, tur sanāk gari kveriji un baigā čakarēšanās. Varbūt ir kāds vienkāršāks variants? Negribas no jauna divriteni izgudrot.
Paldies!
Jā, jā, jā.. Tā arī tiek darīts.
Bet tad to sort_id vnk liekt 1, 2, 3 un tā tālāk un tad pozīcijas maiņas gadījumā izomanīt to sort_id gan pārvietotai kategorijai, gan visām pārējām, kas ir pēc tās, ja? Nu tā sanāk..
Vienkārši mana doma ir tāda, iedomājies, ir 50 kategorijas. Un es kādu no 50. vietas, pārceļu uz trešo. Sanāk, ka tad visām kategorijām ar sort_id 3 - 49, tas sort_id ir jāpalielina par 1, baigi daudz to cilpu tur sanāk..
Tā jau gan nesanāk.
Neatkarīgi vai tu maini 'uz augšu, uz leju' vai izmanto 'drag-n-drop'.
Katrā gadījumā tu ietekmē tikai divus tabulas ierakstus. Tev vajag tikai apmainīt sort_id vērtības.
Sanāk gan, manā piemērā 3. un 50. nesmainās vietām... Ja samainītos vietām, tad jau būtu easy... Var jau arī cik tur tās reizes mainīt kategorijas vietām, kamēr viņa ir īstajā vietā, bet tas nav ērti, turklāt tāds risinājums neder, ja vajag pārcelt uz citu virskaegoriju..
Nu bļins.
Šitas ir drausmīgi vienkārši izskaidojams uz papīra, bet grūti aprakstīt forumā.
Ja tu pārvieto X uz Y'ko vietu
UPDATE bļum SET sort_id = sort_id + 1 WHERE sort_d < Y.sort_id AND sort_id > X.sort_id
(šitas ir pareiz ja X.sort_id > Y.sort_id)
Un tad tev tikai atliek uztaisīt UPDATE query'u priekš jaunā X_new.sort_id.
Kopā 3 query'i, neatkarīgi no kategoriju skatu, ja tu nemaini X.level , 4tri queryi, ja tu maini X.level.
Kas tur grūts:)
Jāsaprot ir, ka jāmaina tikai sort_id vērtības, pārējo jau tā pat selekts paveiks un par to galvu nav lauzīt vērts:)
Nu bļin, uztaisījuši zinātnisko diskusiju par divriteni :D
Ja tev ir nepieciešamība mainīt secību, likt pa vidu rakstus, utt, izmanto numerāciju ar caurumiem, piem.:
1000, 2000, 3000, ...
Ja tev vajag to pašu 50. pārlikt uz 3, tad tev vienkārši būs viņai jāuzliek 2500 un viss.
m
Tā gan kā iesaka #7 nedari. :)
Jo ja tu vēlāk vēl kaut ko gribēsi pārlikt uz 3, būs jāpārbauda vai 2500 jau neeksistē, ja eksistē, tad jāmeklē vai 2250 neeksistē, ja eksistē, tad 2125, līdz kamēr nonāks pie tā, ka visi iespējamie caurumi jau eksistē un tā vai tā jāizmanto algoritms, ko mefisto ieteica. :)
#8: nu, nu. Tā dara jau sen un ielikt pozīcijā ir ļoti vienkārši. ja tev vajag ielikt 3. piozīcijā, paņem 2. + ((3. - 2.) / 2) un neko nevajag pārbaudīt. Līdz zināmai robežai, protams ;)
m
Varbūt nesapratu problemu, bet kāpēc tu nevari rakstu tabulu veidot ar