Kullanıcıların bir sorguyu gönderdikten sonra set sonuçlarını çimdik izin arama bölmeleri bir dizi oluşturma. Biz sonuçları belli alanlarda sık görülen değerleri çekmek ve onların popülerlik sırasına onları görüntülemek - Tüm eBay bu tür bir şey gördüm. Bizim sonuçlarımızda satırların bir sürü 2009 yılında oluşturulan Yani, biz "2009" tıklayın ve o yıl yaratılan sadece satırları görmek mümkün olacak.
Bu filtreler uygulayarak en etkili yolu sizce nedir? Benim çalışma çözeltisi gibi ekstra argümanlar, eşleşmiyor sonuçları girişleri atmak oldu:
while($row = mysql_fetch_assoc($query)) {
foreach($_GET as $key => $val) {
if($val !== $row[$key]) {
continue 2;
}
}
// Output...
}
Filtreler ekleyerek sorguyu değişmez Bu yöntem umarım sadece bir kez geçerli veritabanını sorgulamak gerekir - MySQL veri kümesini önbelleğe ve yeniden kullanabilirsiniz. Üzerinde olumsuz bir baş ağrısı biraz pagination yapar.
Açık alternatif ilk sorgu gibi bir şey içine herhangi bir ek kriterleri oluşturmak olacaktır:
$sql = "SELECT * FROM tbl MATCH (title, description) AGAINST ('$search_term')";
foreach($_GET as $key => $var) {
$sql .= " AND ".$key." = ".$var;
}
Bunun yerine bunu iyi nedenler var mı? Ya da daha iyi seçenekler tamamen vardır? Belki geçici bir tablo? Herhangi bir düşünce çok takdir!