Vyhledávání pomocí formuláře

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

Dobrý den,
chtěla bych požádat o radu ohledně vyhledávání pomocí formuláře.

  1. Formulář, který má mimo jiných polí i volbu data vyplňuji podle komponenty „datetimepicker“. Potřebovala bych poradit, co mám zadat do dotazu, aby se mi vybralo takové datum, které zadá uživatel v tomto poli?
  2. V dotazu pro odeslání formuláře mám několik hodnot, které spojuji AND. Jak mám ale zajistit, abych získala výsledek, pokud si uživatel v polích vybere jen jednu hodnotu? Jde mi o to, jak zajistím,aby některé hodnoty byly možné vyplnit a jiné se vyplňovat nemusely?
ViPEr*CZ*
Člen | 818
+
0
-

ad 1) To datum co vybere uživatel? Respektive v callbacku pro Submit získat hodnotu pole s datem a to pak předat do dotazu za pomocí where:

$values = $form->getValues();
...->where("date", $values['date']);

Pozor na typehinty. Pokud z formu přijde třeba 2015–04–26 a sloupec v databázi je DATETIME, tak nebude porovnání úplně sedět. Pak bych si asi vyrobil objekt DateTime a přes format doplnil i časovou část.

ad 2) Přes if? Ve formuláři povinná pole nastavit jako required. Při sestavení dotazu přes if normálně zjistit jestli přišla ta či ona hodnota a poté nad dotazem (nejspíše objekt Selection) použít where.