PHP - jaký algoritmus?
Ahoj.
Jsem přetažený, tak mi to málo myslí.
Mám následující dotaz:
SELECT additional_name, additional_value
FROM products_additional
WHERE TYPE = 'ADI'
AND products_id
IN ( 61508, 61501, 61512, 61507, 61500, 61511, 61509, 61510 )
ORDER BY additional_name
Tabulka vypadá takto:Výsledek dotazu vypadá takto:
Jedná se o zboží v eshopu, které má různé filtry ve sloupci additional_name (podle stejného jména) různé hodnoty- sloupec additional_value .
A problém je následující:
Sloupec aditional_value může obsahovat jak řetězce, tak čísla.
Pokud obsahuje řetězce, měl by se zobrazit checkbox. (není problém!)
Pokud však obsahuje více čísel, měl by se zobrazit tzv. range slider s minimální a maximální hodnotou.
Můj dotaz je tedy jednoduchý, jak zjistit minimální a maximální hodnotu TíMTO DOTAZEM ?
Vymyslel jsem tohle:
$filtry = mysql_query("select additional_name, additional_value from products_additional where type='ADI' AND products_id in (".$id_pro_filtry.") order by additional_name, additional_value");
$dotayek = "select additional_name, additional_value from products_additional where type='ADI' AND products_id in (".$id_pro_filtry.") order by additional_name";
echo $dotayek.'<hr>';
$predchoziMinimalniHodnota;
$minimalniHodnota = 0;
$maximalniHodnota = 0;
$lastFilterName = '';
$poprvee = 1;
while($zakaznik = mysql_fetch_array($filtry)){
echo '<input type="checkbox" value="'. $zakaznik["additional_name"] .'">'. $zakaznik["additional_name"].'<br>';
if(is_numeric($zakaznik["additional_value"])){
if ($lastFilterName == $zakaznik["additional_name"])
{
if ($maximalniHodnota < $zakaznik["additional_value"])
$maximalniHodnota = $zakaznik["additional_value"];
$minimalniHodnota = $zakaznik["additional_value"];
if ($minimalniHodnota < $zakaznik["additional_value"])
$minimalniHodnota = $zakaznik["additional_value"];
}
$lastFilterName = $zakaznik["additional_name"];
$predchoziMinimalniHodnota = $zakaznik["additional_value"];
}
}
echo "<hr>";
echo $minimalniHodnota.'+'.$maximalniHodnota;
echo "<hr>";
Ovšem na konci se vždy vytiskne maximální hodnota (i v minimální).Vidíte tam někdo chybku ?