Witam z adresu URL pobieram filtry wyszukiwania np URL?size[]=30&color[]=czerwony&color[]=czarny
w PHP pobieram te wartosci jako tablice (działa)
następnie przesyłam je do funkcji która używa ich jako parametry w zapytaniu, krótki kod (xd) :
function search_multi($nameFilters, $colorFilters, $sizeFilters){
$where = "";
if(count($nameFilters) > 0 || count($colorFilters) > 0 || count($sizeFilters) > 0)
$where = "WHERE";
if(count($nameFilters) > 0){
$nameParameters = "Nazwa IN (";
for($i=0; $i<count($nameFilters); $i++){
$nameParameters .= "name" . $i;
if($i < count($nameFilters)-1)
$nameParameters .= ",";
}
$nameParameters .= ") ";
}
if(count($colorFilters) > 0){
$colorParameters = "Kolor IN (";
for($i=0; $i<count($colorFilters); $i++){
$colorParameters .= "color" . $i;
if($i < count($colorFilters)-1)
$colorParameters .= ",";
}
$colorParameters .= ") ";
}
if(count($sizeFilters) > 0){
$sizeParameters = "Rozmiar IN (";
for($i=0; $i<count($sizeFilters); $i++){
$sizeParameters .= "size" . $i;
if($i < count($sizeFilters)-1)
$sizeParameters .= ",";
}
$sizeParameters .= ") ";
}
$query = "SELECT id, Nazwa, Rozmiar, Kolor FROM " . $this->nazwa_tabeli . " " . $where . " ";
if(count($nameFilters) > 0)
$query.= $nameParameters;
if(count($colorFilters) > 0){
if(count($nameFilters) > 0)
$query.= "AND ";
$query.= $colorParameters;
}
if(count($sizeFilters) > 0){
if(count($nameFilters) > 0 || count($colorFilters) > 0)
$query.= "AND ";
$query.= $sizeParameters;
}
$stmt = $this->polaczenie->prepare($query);
if(count($nameFilters) > 0){
for($i = 0;$i<count($nameFilters);$i++){
$tmp_string = $nameFilters[$i];
$tmp_string=htmlspecialchars(strip_tags($tmp_string));
$tmp_string = "%{$tmp_string}%";
$stmt->bindParam("name" . $i, $tmp_string);
}
}
if(count($colorFilters) > 0){
for($i = 0;$i<count($colorFilters);$i++){
$tmp_string = $colorFilters[$i];
$tmp_string=htmlspecialchars(strip_tags($tmp_string));
$tmp_string = "%{$tmp_string}%";
$stmt->bindParam("color" . $i, $tmp_string);
}
}
if(count($sizeFilters) > 0){
for($i = 0;$i<count($sizeFilters);$i++){
$tmp_string = $sizeFilters[$i];
$tmp_string=htmlspecialchars(strip_tags($tmp_string));
$tmp_string = "%{$tmp_string}%";
$stmt->bindParam("size" . $i, $tmp_string);
}
}
$stmt->execute();
return $stmt;
}