php - 检查表数组值是否在范围内

标签 php mysql select

我有一个表,其中一列包含类似文本的表面:“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...”这样的表面,我该怎么办?是否可以只选择一项?

谢谢

最佳答案

使用minmax对于你的数组

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/

相关文章:

javascript - 加载页面后菜单项消失

mysql - 如果寄存器存在则更新,否则插入。数据库管理系统

mysql - 从 Excel 文件更新数据库表

c++ - 检查哪个套接字首先回答 C++

javascript - 如何在 Javascript 中访问具有相同属性的动态控件

php - DOM Scrape 不工作 PHP

php - 419 页面在 Laravel 中过期即使在添加 CSRF token 之后

mysql - sql 按计数分组

java - 如何在 PHP 和 Java 之间传递日期?

python - 修复列 "date_of_birth"中的空值违反了非空约束