J'ai deux tables:SQLproducts filtre
sklep_produkty: id | nom
sklep_atr_prod: id | id_prod | atr | ? Valeur
En url j'utilise fq = couleur ('Czerwony'), pour obtenir la valeur i Utilisez le code:
$fq = $this->getRequest()->getParam('fq');
$fq = explode(',', $fq);
$myArray = array();
foreach($fq as $param){
$literal_pattern = "/('[^']*')/";
$fq = preg_match($literal_pattern, $param, $token);
$myArray[] = str_replace("'", "", $token[0]);
}
Puis-je obtenir id_prod comme ceci:
$filterActionQuery = $db->select()->from('sklep_atr_prod', array('id_prod', 'wartosc'));
foreach($myArray as $parames){
$filterActionQuery->where('wartosc = ?', $parames);
}
$filterActionresult = $db->fetchAll($filterActionQuery);
requête SQL:
SELECT `sklep_atr_prod`.`id_prod`,
`sklep_atr_prod`.`wartosc`
FROM `sklep_atr_prod`
WHERE (wartosc = 'Czerwony')
Résultat:
Array
(
[0] => stdClass Object
(
[id_prod] => 1
[wartosc] => Czerwony
)
[1] => stdClass Object
(
[id_prod] => 3
[wartosc] => Czerwony
)
)
Et cela est ok, mais quand voulez utiliser antother filtr "size" Je fais URL comme ceci: fq = couleur ('Czerwony'), la taille ('XL')
SQL résultat:
SELECT
`sklep_atr_prod`.`id_prod`,
`sklep_atr_prod`.`wartosc`
FROM `sklep_atr_prod`
WHERE (wartosc = 'Czerwony') AND (wartosc = 'XL')
Et cela me donne aucun résultat. Comment faire requête SQL en utilisant deux parametrs de la Czerwony »et 'XL' pour obtenir id_prod = 3.
fq = couleur ('Czerwony') et la taille ('XL') – scaisEdge