pilots Posted March 9, 2008 Report Share Posted March 9, 2008 Izpalīdzēt lūdzams, kaut vai ar linku uz darbošanās piemēra kodu vai principa apskaidrošanu. Ir tabula ar rakstiem un vēlētos izvadīt pēdējo 24h lasītākos rakstus. Kā to panākt? Visi ieteikumi aicināti, paldies. Link to comment Share on other sites More sharing options...
andrisp Posted March 9, 2008 Report Share Posted March 9, 2008 Pieglabaa lasiishanas laikus katram rakstam un katrai lasiishanas reizei. Peec tam ar kveriju skaiti, kurhs vairaak lasiits peedeejaas 24 h ? Link to comment Share on other sites More sharing options...
777 Posted March 9, 2008 Report Share Posted March 9, 2008 $mysql_query = ("SELECT * FROM `raksti` WHERE datums = 'date();' ORDER BY `lasits` DESC"); nu nez, ka tev shads variants, neesmu parliecinats ka tas 100% stradas, sen neesmu neko rakstijis ;) nu bet vari pameginat Link to comment Share on other sites More sharing options...
Pentiums Posted March 10, 2008 Report Share Posted March 10, 2008 $24h = date(); //iekš date uztaisi vajadzīgo laika formātu skat te http://lv.php.net/date SELECT * FROM `raksti` WHERE datums = '".$24h."' ORDER BY `lasits` DESC Link to comment Share on other sites More sharing options...
andrisp Posted March 10, 2008 Report Share Posted March 10, 2008 777, Pentiums, jūsu kveriji atgriezīs tikai pēdējos 24 stundu rakstus, sakārtotus pēc lasījumiem, nevis pēdējo 24 stundu lasītākos rakstus (kas nozīmē, ka tajā teorētiski var parādīties arī raksti, kas ir nedēļu veci) Link to comment Share on other sites More sharing options...
Pentiums Posted March 10, 2008 Report Share Posted March 10, 2008 mana kļūda.. neieskatījos ko tieši vajadzēja pilotam panākt.. Link to comment Share on other sites More sharing options...
mounkuls Posted March 10, 2008 Report Share Posted March 10, 2008 Ja vajadzētu atlasīt konkrētam datumam ierakstus, varētu ielikt skaitītāju katram rakstam tabulā. Taču, ja vajag 24h atpakaļ, tas neder. Atliek vien taisīt kā andrisp ieteica un skaitīt ierakstus, kuri iekļaujas 24h laikā. Link to comment Share on other sites More sharing options...
Aleksejs Posted March 10, 2008 Report Share Posted March 10, 2008 Ir vēl viens... "Tricky" variants... Ja es nekļūdos, protams (bet nu ceru, ka pamatideju izstāstīšu un ieviešanas nianses varēs izdomāt tālāk)... Pieņemsim, ka nav svarīga absolūta precizitāte (līdz pat sekundes daļām), bet gan pietiek ar precizitāti līdz stundai. Izveidojam katram rakstam vēl 24 laukus, kurus nosaucam teiksm: h0, h1, h2, h3... h23, kuriem: 1) Atkarībā no stundas pie katras apskatīšanas skaitām klāt pa vienībai (ja pulkstens ir 13:27, tad pie nolasīšanas palielinām par vienu lauku h13); 2) Pie stundu nomaiņas nonullējam visu rakstu lauku h<stunda> (piemēram, ja ir pulkstens 14:00, tad izpildām: UPDATE raksti SET h14=0) - Te vajadzīgs vai nu cron, vai arī DB piedāvātā funkcionalitāte. Apskatīšanas skaitu nosakām: SELECT (h1+h2+h3...+h23) as apskatisanas FROM raksti WHERE id = x Link to comment Share on other sites More sharing options...
Aleksejs Posted March 10, 2008 Report Share Posted March 10, 2008 P.S. Lauku skaitu var samazināt, samazinot precizitāti... Piemēram, ja apmierina 3h precizitāte, tad var iztikt ar 8 laukiem, ja apmierina 4h precizitāte, tad ar 6 laukiem. Principā... Apskatieties Round Robin Data Base - mehānisms, kas dod maksimālu detalizaciju uz šo brīdi un aizvien mazāku detalizāciju, skatoties pagātnē. Šo pašu ideju var izmantot šeit. Link to comment Share on other sites More sharing options...
nemec Posted March 11, 2008 Report Share Posted March 11, 2008 CREATE TABLE `prefix_text_view` ( `id` int(10) NOT NULL AUTO_INCREMENT, `text_id` int(10) NOT NULL DEFAULT '0', `view` int(10) NOT NULL DEFAULT '0', `get_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_latvian_ci AUTO_INCREMENT=1; CREATE TABLE `prefix_text` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8_latvian_ci NOT NULL DEFAULT '', `friend_url` varchar(255) COLLATE utf8_latvian_ci NOT NULL DEFAULT '', `intro` text COLLATE utf8_latvian_ci NOT NULL, `full` text COLLATE utf8_latvian_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_latvian_ci AUTO_INCREMENT=1; SELECT t.`name`, SUM(v.`view`) AS viewed FROM `prefix_text` AS t LEFT JOIN `prefix_text_view` AS v ON v.`text_id`=t.`id` AND v.`get_time`>(NOW() - INTERVAL 1 DAY) GROUP BY t.`id` ORDER BY viewed DESC Link to comment Share on other sites More sharing options...
Recommended Posts