Počítadlo zobrazení článků

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Lazius
Člen | 9
+
0
-

Zdravím,

řeším jak napsat počitadlo zobrazení článku. Něco jsem tu našel a pochytil, ale ne konkrétně to co chci.

U každého článku po zobrazení v databázi inkrementuji hodnotu zobrazení článku. Ale chci aby každý uživatel byl zaznamenán pouze jednou. Toho bych chtěl docílit pomocí session. Nejde mi o žádné neprůstřelné řešení, počitadlo má pouze orientačně informativní charakter.

Jakým způsobem mám, ale v session reprezentovat id článku. Jelikož je to moje první práce se session v nette, tak nevím jak začít. Session rozběhnu, ale jak dál uložit informaci, že si to uživatel přečetl?

CZechBoY
Člen | 3608
+
+1
-

Já bych si to ukládal třeba do listu integerů.

$section = $this->session->getSection('ankety');
$section['id_anket'][] = $id_ankety; // pro tuhle jsem ted hlasoval

if (in_array($id_ankety, $section['id_ankety'], true)) { // uz hlasoval
	$this->flashMessage('Už jsi hlasoval');
} else { // nehlasoval
	$this->model->hlasuj($id_ankety, $this->user->getId());
}

Editoval CZechBoY (9. 8. 2016 19:53)

Lazius
Člen | 9
+
0
-

Nedošlo mi že to tam můžu ukládat do pole. Tak já to zkusím. Díky

matopeto
Člen | 395
+
+2
-

No mozno miesto:

$section['id_anket'][] = $id_ankety;

a testu:

in_array($id_ankety, $section['id_anket'], true)

by som pouzil

$section['id_anket'][$id_ankety] = true;

a test

array_key_exists($id_ankety, $section['id_anket'])

Je to rychlejsie a nemusi sa vzdy prechadzat cele pole.

Editoval matopeto (15. 8. 2016 16:26)