Zmena SQL dotazu na zaklade zaskrtnutecho checkboxu

stefic
Člen | 5
+
+1
-

Zdravim vsechny,

chtel bych Vas poprosit o pomoc.
Resim ted z meho pohledu celkem banalni vec.

Mam stranku, ktera zobrazuje SELECT z databaze. Tento select mam momentalne napsany staticky ve funkci renderDefault().
Na stranku jsem si pridal CheckBox, ktery by mel slouzit jako filtr pro tento SELECT. Tzn neustale se mi zobrazuje puvodni select a ve chvili, kdy zaskrtnu CheckBox tak by se zmenil SQL dotaz na DB ktery by vice specifikoval muj dotaz.

Premyslel jsem tak, ze si v ramci tridy vytvorim globalni promenou filterString, kterou v konstruktoru naplnim. Kdyz bych klikl na checkbox, tak bych hodnotu v promenne filterString zmenil a stranka by me zacala zobrazovat novy SELECT.
Toto mi samozrejme nefungovalo, protoze promene se tu nechovaji tak, ze by se v ni drzela hodnota, kterou jsem do ni nejakym handlem ulozil.

Zacal jsem patrat a zjistil jsem, ze pro tyto ucely nette pouziva Sessions a Sections. Vytvoril jsem si proto v config.neon promenou

session:
myFilterString: ‚SELECT * FROM [table] WHERE [filter]=false‘

podle navodu ktery jsem nasel zde na strankach jsem se to snazil nalamat do meho kodu.

do konstruktoru tridy jsem tedy napsal

<?php
/**
* @persistent
*/
public $filterString;

public function __construct(\Dibi\Connection $connection,Nette\Http\Session $session)
{
	$this->db = $connection;
	$this->session = $session;
	$this->section = $this->session->getSection('myFilterString');

	$section['myFilterString'] = 'SELECT * FROM [table] WHERE [filter]=false';
	$this->filterString = $section['myFilterString'];
}
?>

takto napsane se to tedy chova jako pred tim, s tim ze dotaz jiz nemam napsany staticky, ale v promenne. Preklesleni prestava fungovat pokud do kodu neodkomentuju prvni radek funkce a pise mi to UNDEFINED VARIABLE: SECTION.
Myslel jsem, ze kdyz uz to mam jednou defaultne napsane v Config.neon a pak to jeste zapisu v konstruktoru tridy, tak by tam mela byt ulozena alespon defaultni hodnota.

<?php
public function renderDefault()
{
	//$section['myFilterString'] = 'SELECT * FROM [table] WHERE [filter]=false';
	$this->filterString = $section['myFilterString'];
    $this->data_db_DiB = $this->db->query($this->filterString);
}
?>

Pak bych rad funkci handleChangeFilterString zmenil podobu nastaveneho selectu a zobrazoval jina data. Coz me takto jak to mam take nefunguje. Ani pokud hodnotu ulozim do section, ani kdyz ji ulozim primo do promenne filterString.

<?php
public function handleChangeFilterString($internal)
{
	//$this->filterString = 'SELECT * FROM [table] WHERE [filter]=true';
	$section['myFilterString'] = 'SELECT * FROM [table] WHERE [filter]=false';
}
?>

Mohl bych vas poprosit ukazat co na takto jednoduchem priklade delam spatne? A jak se pracuje s promenyma, u kterych chci aby zustali ulozene po dobu co chci.

Diky moc za odpovedi