Oznámení
dibi v nette a zaškrtávací políčka (podmínka if) – jak to děláte VY?
před 7 lety
- czhyenacz
- Člen | 12
Ahoj, snažím se vyrobit něco jako třídění katalogu. V presenteru mám
nastavený formulář, který vrací tag, který se porovnává u třech tagů
u produktu v databázi a navíc je tam několik zaškrtávací polí ,
kterýma se budou ještě třídit podle kategorie a vrací standartně TRUE.
Podlše dokumentace jsem udělat přes arry třídění tagů.
public static function fetchVysledekztag2($tag,$doutniky,$sport) {
return dibi::fetchAll('
SELECT *
FROM [darky] WHERE (%or) '
, array(
array('tag1 = %s', $tag),
array('tag2 = %s', $tag),
array('tag3 = %s', $tag),
)
);}
\--
i přidání jedné podmínky, která vyhodnocuje zaškrtnutí pole nějak funguje - vypíše jen doutníky, když je zaškrtlé TRUE (když dám false tak to hodí nějaký error, ale na to je času dost ))
public static function fetchVysledekztag2($tag,$doutniky,$sport) {
return dibi::fetchAll('
SELECT *
FROM [darky] WHERE (%or) and %if '
, array(
array('tag1 = %s', $tag),
array('tag2 = %s', $tag),
array('tag3 = %s', $tag),
)
,$doutniky=="TRUE",'kategorie="Doutníky"'
/* nebo ,$doutniky="TRUE",'kategorie="Doutníky"' ?? - nehází to error(check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2), ale když změní na false, tak se nic nestane */
);
}
ale kdybych chtěl přidat ostatní podmínky na třídění
public static function fetchVysledekztag2($tag,$doutniky,$sport) {
return dibi::fetchAll('
SELECT *
FROM [darky] WHERE (%or) and %if and %if'
, array(
array('tag1 = %s', $tag),
array('tag2 = %s', $tag),
array('tag3 = %s', $tag),
)
,$doutniky=="TRUE",'kategorie="Doutníky"'
,$sport=="TRUE",'kategorie="Sport"'
);
}
tak mi ladička hází pro mě skoro nepochopitelný error.
" You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and 1 kategorie='Sport'' at line 2 "
podle mě musí jít o nějaká pravidla pro přidávání více podmínek if . Víte o nějakých? vůbec nic nemůžu najít. A jak řešíte zaškrtávací pole přes dibi VY? Díky za případnou pomoc. Myslim, že by to pomohlo nejen mě. Metal
před 7 lety
- Vojtěch Dobeš
- Člen | 1317
Nemělo by to být spíš takto?
public static function fetchVysledekztag2($tag,$doutniky,$sport)
{
return dibi::fetchAll('
SELECT *
FROM [darky]
WHERE
(%or)
%if AND kategorie = "Doutníky" %end
%if AND kategorie = "Sport" %end
', array(
array('tag1 = %s', $tag),
array('tag2 = %s', $tag),
array('tag3 = %s', $tag),
),
$doutniky == "TRUE",
$sport == "TRUE"
);
}
před 7 lety
- cosmo
- Člen | 6
Nedalo by sa to vyriešiť cez dibi fluent ? Naozaj iba maly nastrel, presiel som to iba velmi zbezne:
<?php
$result = dibi::select('*')->from('darky');
// nette forms ??
// checkbox 'Doutniky'
if(isset($checkbox1)){
$result->where("kategorie = 'Doutniky'");
}
// checkbox 'Sport'
if(isset($checkbox2)){
$result->where("kategorie = 'Sport'");
}
$vysledok = $result->fetchAll();
?>
Editoval cosmo (16. 7. 2012 17:37)
před 7 lety
- czhyenacz
- Člen | 12
diky za pomoc – ta verze od vojtech.dobes je opravdu dobrá. Mám raději SQL.