rudzis Posted August 17, 2005 Report Share Posted August 17, 2005 (edited) Ir aptuveni izveidota galeriju sistēma, bet problēmas ir ar atsevišķu galeriju dzēšanu. Vienkārši sāk aptrūkties idejas, kā lai to visu sataisa. 1. Tātad, kad tiek izveidota galerija, tad failā "../data/users/1/gal.txt" tiek ierakstīts "galerijas_nosakums|1\n" (Cipars aiz nosaukuma ir pieejas tiesības, kas šobrīd nav svarīgi). 2. Kad izveidotajā galerijā ielādē bildi, to ieliek direktorijā "../data/users/1/gal/" un nosauc par piem. "1_1.jpg", kur pirmais vieninieks ir galerijas numurs un otrs - bildes numurs. Katrai galerijai bilžu skaits sākas no 1. Uzreiz arī failā "../data/users/1/gal/$index.txt" tiek ierakstīts bildes faila nosaukums ("1_1.jpg\n"), lai tās pēc tam var ērti indeksēt. Tas arī šobrīd nav tik svarīgi. ($index - galerijas ID) Galerijas dzēšana Kad ar $_GET tiek padots id, kuru galeriju jādzēš, tiek noskaidrots, vai šī ir pati jaunākā, un ja ir, tad vienkārši tiek izdzēsts tās nosaukums no to faila ../data/users/1/gal.txt, izdzēsts bilžu indeksa fails (../data/users/1/gal/$index.txt) un izdzēstas visas šīs galerijas bildes (kuru nosaukums sākas ar galerijas ID), bet jā šī nav jaunākā, un ir kaut kur pa vidu, tad sākas problēmas. Teorētiski vajadzētu visu galeriju, kuru ID ir lielāki, index failu nosaukumus katru par vienu samazināt, un arī šo galeriju bildes pārsaukt ar mazākiem pirmajiem cipariem. Mēģināju šo visu īstenot ar dažu for ciklu palīdzību, bet nevarēju atrast kompromisu starp abiem gadījumiem: dzēšamā galerija ir pati jaunākā vai pati vecākā UN dzēšamā galerija ir kaut kur pa vidu. Droši vien grūti saprast šos manus murgus, bet nu paskaidroju kā mācēju. Es tiešām vairs nezinu kur likties. Te taču nav nekā pārāk sarežģīta, bet tomēr nevaru viens pats izdomāt. P.S. Nesitiet pa lūpām! Edited August 17, 2005 by rudzis Link to comment Share on other sites More sharing options...
Venom Posted August 17, 2005 Report Share Posted August 17, 2005 vieglāk tomēr autoincrementēt, vai turēt atsevišķu index-failu, kurā tiktu turēti direktoriju indeksi pēc datuma un tad tas $_GET nodotu tikai kārtas nummuru šajā masīvā/failā. Link to comment Share on other sites More sharing options...
bubu Posted August 17, 2005 Report Share Posted August 17, 2005 A kāpēc jāsmazina citu galeriju indeksu numuri, ja dzēš ārā? Dari tāpat kā mysql uz AUTO_INCREMENT kolonnu - visu laiku palielina skaili. Dzēšot rindas ārā nekas nenotiek, tb par jaunu liktais ieraksts +1 no pēdējā ieliktā, neatkarīgi no izdzēstajiem robiem pa vidu. Link to comment Share on other sites More sharing options...
Venom Posted August 17, 2005 Report Share Posted August 17, 2005 turi failā pēdējo direktoriju $last_file='last.txt'; $last=(int)file_get_contents($last_file); pie pievienošanas taisi e.g. fwrite($fh=fopen($last_file,'w'),++$last); fclose($fh); bet kad tiek padots $_GET['id'], tad pārbaudi, vai tas nau robs un ja kas - nobīdi uz turpmāko galeriju, e.g. //ja tiek padots -vērtība vai kaut kas lielāks par lielāko direktoriju if (($_GET['id']=(int)$_GET['id'])<0 || $_GET['id']>$last) $_GET['id']=1; //kamēr neeksistē direktorija, palielinam numuru par 1 while (!file_exists('../data/users/'.$_GET['id'])) ++$_GET['id']; Link to comment Share on other sites More sharing options...
bubu Posted August 17, 2005 Report Share Posted August 17, 2005 (edited) while (!file_exists('../data/users/'.$_GET['id']) && $_GET['id']<=$last) Edit: ā nē, pamanīju, ka iepriekš ir ifs... tad šito var ignorēt. Edited August 17, 2005 by bubu Link to comment Share on other sites More sharing options...
Klez Posted August 17, 2005 Report Share Posted August 17, 2005 dzees vienkaarshi. ielasi faila saturu un ar while ideja taada: ciklaa ej cauri visam faila saturam. ja dzeeshmaas galerijas parametrs sakriit ar to kas ir failaa, tad uztaisi jaunu mainiigo ar dzeeeshamaas galerijas ID .. $lines = file("galerijas.txt"); $result = ''; foreach ($lines as $line_num => $line) { if ($line != '$galerijas_id') $result .= $line; else $del_id = $line; } failu galerijas.txt vaig parrakstiit. tajaa ierakstaam $result mainiigaa saturu. un $del_id buus rindinja, kuru gribam dzeest un ja buus padots shkiiibs ID, tad $del_id nemaz nebuus respektiivi if ($del_id){ //dzeesham visu }else { // neritiigs id } ceru ka noderees .. un ceru ka domu gaajienu izprati Link to comment Share on other sites More sharing options...
rudzis Posted August 17, 2005 Author Report Share Posted August 17, 2005 (edited) A kāpēc jāsmazina citu galeriju indeksu numuri, ja dzēš ārā?Dari tāpat kā mysql uz AUTO_INCREMENT kolonnu - visu laiku palielina skaili. Dzēšot rindas ārā nekas nenotiek, tb par jaunu liktais ieraksts +1 no pēdējā ieliktā, neatkarīgi no izdzēstajiem robiem pa vidu. 21085[/snapback] Nu varētu jau arī šādi, un, visticamāk ka tā arī darīšu, bet gribējās tomēr tā tīri - lai viss sabidās, un nav to tukšumu. P.S. Nākamajā postā mēģināšu parādīt, kā es to visu iedomājos. Edited August 17, 2005 by rudzis Link to comment Share on other sites More sharing options...
bubu Posted August 17, 2005 Report Share Posted August 17, 2005 Vot šito es nesaprotu :) Kas cilvēkiem ir pret tiem "caurumiem". Pazīstu citus, kas ir kategoriski pret AUTO_INCREMENT, jo dzēšot ārā ierakstus rodās "caurums" un tas ir nesmuki. vot i principi!! Link to comment Share on other sites More sharing options...
Venom Posted August 17, 2005 Report Share Posted August 17, 2005 ja gribi bīdīt - tad vieglāk a ) numurēt attēlus pēc citādāka principa, t.i. vienkārši 001.jpg, 002.jpg utt b ) tomēr turēt pēdējā albūma numuru c ) ja tiek dzēsts albūms, e.g. 4 no 10, tad visiem albūmiem, sākot ar 5 līdz 10 (kuru noskaidrojām b ) daļā), bīdīt numur "uz leju" par viens un neaizmirst pārrakstīt augstāko numuru failā uz 9 tāpat, ja tomēr nu dikti gribēsi bīdīt numurus arī failiem direktorijā, būs vieglāk no 001.jpg dabūt to numuru ar parastu (int) operāciju Link to comment Share on other sites More sharing options...
v3rb0 Posted August 17, 2005 Report Share Posted August 17, 2005 kursh tev skatiisies ir vai nav `caurumi`. ja dikti gribi tikt no vinjiem valjaa, uztaisi servisa scriptu ar kuru katru vakaru visu paarkaarto taa lai nav caurumi. Link to comment Share on other sites More sharing options...
rudzis Posted August 17, 2005 Author Report Share Posted August 17, 2005 (edited) --- ../data/users/$id/ --- /gal/ gal.txt --- gal.txt saturs --- pirmaa galerija|2 naakamaa galerija|2 pr0n galerija|1 (cipari ir pieejas tiesības (nav svarīgi)) --- ../data/users/$id/gal/ --- 1_1.jpg 1_2.jpg 1_3.jpg 1_4.jpg 2_1.jpg 2_2.jpg 1.txt 2.txt ... 1.txt un 2.txt saturs ir tie paši bilžu failu nosaukumi - katrā failā savi. Galerijas nosaukuma dzēšana no faila "../data/users/$id/gal.txt" notiek apmēram šādi: $del = $_GET['del']; // dabonam ciparu $gal_f = file("../data/users/$id/gal.txt"); $gal = fopen("../data/users/$id/gal.txt", "w"); // atveram for($s = 0; $s < count($gal_f); $s++) { if($s != $del - 1) { // ja rinda nav dzeeshamaa... fwrite($gal, $gal_f[$s]); // ...rakstam atpakalj }} fclose($gal); Pēc šī ir kods, kurš vismaz mēģina izdarīt svarīgāko - aizpildīt robus ID, rīneimojot indeks failiņus un bilžu failus. Mans kods ir pārāk perverss, turklāt nestrādā, ja dzēšamā galerija ir pa vidu, tāpēc nav pat jēgas rādīt. Tagad vajadzēti to kodu uzrakstīt, bet īsti nezinu kā panākt, lai aizpildītu caurumus VIRS dzēšamā ID. bubu, nu gribās man sirdsmieru - lai nav to tukšumu :) Edited August 17, 2005 by rudzis Link to comment Share on other sites More sharing options...
rudzis Posted August 17, 2005 Author Report Share Posted August 17, 2005 Hoorey! Es to paveicu! :) Ar while gāju cauri galerijām, kas jaunākas par dzēšamo (sākot ar jaunāko), tur pat ar for cikla palīdzību nomainīju vajadzīgos failu nosaukumus, un beigās vēl izdzēsu tās bildes, kuru galerija bija jādzēš. Link to comment Share on other sites More sharing options...
des Posted August 18, 2005 Report Share Posted August 18, 2005 Vot šito es nesaprotu :) Kas cilvēkiem ir pret tiem "caurumiem".Pazīstu citus, kas ir kategoriski pret AUTO_INCREMENT, jo dzēšot ārā ierakstus rodās "caurums" un tas ir nesmuki. vot i principi!! 21103[/snapback] It seviskji tipa, ja ir tabula ar vairaakiem simtiem tuukstoshu ierakstu, tad kaads obligaati visus tos caurumus ieveeros :) Kas vinji tieshaam pie katras dzeeshanas taisa "update table set id=id-1 where id>$deleted"? :) Neenu labi, ja ir tabula ar liidz 10 ierakstiem un katru vakaru pirms guleetieshanas ieraksti tiek apskatiiti un apmiiljoti, un apchubinaati, tad, protams, tas caurums starp 5 un 7 ir ljoti nesmuks un traumeejoshs, un droshi vien tabulas iipashniekam nelabus sapnjus izraisoshs :D Link to comment Share on other sites More sharing options...
blackhalt Posted August 18, 2005 Report Share Posted August 18, 2005 Es jau ar atstātu ar caurumiem ;) kaut vai tādēļ, ka pazūd saite uz to konkrēto ierakstu. A ja nu kāds ielinkojis? Link to comment Share on other sites More sharing options...
des Posted August 18, 2005 Report Share Posted August 18, 2005 Es jau ar atstātu ar caurumiem ;) kaut vai tādēļ, ka pazūd saite uz to konkrēto ierakstu.A ja nu kāds ielinkojis? 21140[/snapback] Nu jā. Es pie tam aizmirsu piebilst, ka id pārupdeitošana jāveic visās saistītajās tabulās, ja tādas ir :DDD Link to comment Share on other sites More sharing options...
Recommended Posts