HTML interesse |
|
Hey sima's,
Ik ben bezig met een systeem waar webshops in opgeslagen worden.
Voor deze webshops kunnen reviews geschreven worden en gewaardeerd worden met een score.
Als er geen waardering gegeven is aan een webshop heeft deze een waarde "NULL" in de database, is er wel een waardering gegeven dan heeft deze een getal tussen de 0 en 5.
Maar het probleem zit hem nu in het filter systeem.
Met deze filters kun je o.a. op waardering filteren maar zodra ik mijn slider op een range zet van 0 - 5 geeft hij de webshops niet weer die waardering "NULL" hebben.
filter functie:
public function getShopsByHash($filterhash)
{
$hashQuery = Doctrine::getTable('Model_Filters')->findOneBy('hash', $filterhash);
$hashResult = $hashQuery->toArray();
if(count($hashResult))
{
$q = Doctrine_Query::create()
->from('Model_Shopentries as entry')
->leftJoin('entry.Model_Shopitems as item')
->where('item.isActive = 1');
$if($hashResult['catID'] != null)
$q->andWhere('entry.catID = ?', $hashResult['catID']);
if($hashResult['brandID'] != null)
$q->andWhere('entry.brandID = ?', $hashResult['brandID']);
if($hashResult['min'] != null)
$q->andWhere('ROUND(item.averageRating) >= ?', $hashResult['min']);
if($hashResult['max'] != null)
$q->andWhere('ROUND(item.averageRating) <= ?', $hashResult['max']);
$q->groupBy('entry.shopID');
return $q->fetchArray();
}
else
{
die('Niks gevonden met hash.');
}
}
public function getShopsByHash($filterhash) { $hashQuery = Doctrine::getTable('Model_Filters')->findOneBy('hash', $filterhash); $hashResult = $hashQuery->toArray(); { $q = Doctrine_Query::create() ->from('Model_Shopentries as entry') ->leftJoin('entry.Model_Shopitems as item') ->where('item.isActive = 1'); $if($hashResult['catID'] != null) $q->andWhere('entry.catID = ?', $hashResult['catID']); if($hashResult['brandID'] != null) $q->andWhere('entry.brandID = ?', $hashResult['brandID']); if($hashResult['min'] != null) $q->andWhere('ROUND(item.averageRating) >= ?', $hashResult['min']); if($hashResult['max'] != null) $q->andWhere('ROUND(item.averageRating) <= ?', $hashResult['max']); $q->groupBy('entry.shopID'); return $q->fetchArray(); } else { die('Niks gevonden met hash.'); } }
Het gaat nu mis bij de controle met $hashResult['min'].
De slider heeft altijd een waarde van 0 t/m 5 deze waardes zijn de min en max in het filter tabel.
Aangezien 0 niet gelijk staat aan NULL werkt mijn where statement niet.
De vraag is nu hoe ik het op kan lossen als ik minimale waardering op 0 heb staan dat hij ook de filter rijen sellecteerd die "NULL" bevatten.
Ik hoop dat ik het een beetje duidelijk uitgelegd heb.
Een voorbeeld is te zien op http://realtec.getmyip.com
Als je bij categorie "vrouwen kleding" kijkt staat er wel een webshop "Blondie Fashion" die geen review heeft en dus waarde "NULL" heeft als waardering.
|