Jump to content
php.lv forumi

pēdējo 24h lasītākie raksti


pilots

Recommended Posts

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

$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

$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

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

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

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

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

×
×
  • Create New...