Jump to content
php.lv forumi

Recommended Posts

Posted

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.

Posted

$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

Posted

$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

Posted

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)

Posted

mana kļūda.. neieskatījos ko tieši vajadzēja pilotam panākt..

Posted

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ā.

Posted

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

Posted

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.

Posted
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

×
×
  • Create New...