我有一个表,其中一列包含类似文本的表面:“200 300 450 557” 用户搜索给出了我通过 2 个变量 $min 和 $max 获得的范围的表面。 我需要选择在该区间内具有表面的所有属性。
这里我有一个很长的解决方案,但我相信在选择范围内有一个较短的解决方案...
$min=$_GET["min"]; // min price given by user - like 1000 euro
$max=$_GET["max"]; // max price given by user - like 2500 euro
$result=mysql_query("SELECT * FROM `offers`");
$nr=mysql_numrows($result);
while( $i<$nr) {
$surface=mysql_result($result,$i,"surface"); // something like "100 200 250 350" sqm
$price=mysql_result($result,$i,"price"); // this is per square metter like "12" euro/sqm
$s=explode(' ',$surface);
if ($s[$i]*$price<=$max && $s[$i]*$price>=$min) // i don't know if it sees it like number or char???
{
$id = mysql_result($result,$i,"id");
$area = mysql_result($result,$i,"area");
$details = = mysql_result($result,$i,"det");
// do something with them
};
}
重点是我需要最简单的多重搜索解决方案。 如果我有一个表面,代码将如下所示:
"SELECT * FROM `offers` WHERE (surface between $min and $max) && (price between $pmin and $pmax)&&(area='$area') ORDER BY `id` DESC LIMIT 50;"
但是如果我有“123 300 500 790...”这样的表面,我该怎么办?是否可以只选择一项?
谢谢
最佳答案
if((min($s) * $price) >= $min && (max($s) * $price) <= $max)
{
$id = mysql_result($result,$i,"id");
$area = mysql_result($result,$i,"area");
$details = = mysql_result($result,$i,"det");
// do something with them
}
关于php - 检查表数组值是否在范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27604449/