2014-12-22 66 views
0

我有一个表格,其中一列包含像文字一样的表面:“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 ......”我该怎么办?只有一个选择可能吗?

感谢

+0

你可以分割面尺寸为自己的表,有许多到许多(甚至是一个一对多)的链接?那个设计不太好。 – slugonamission

+0

PLZ停止使用'mysql_ *',因为它已被弃用...开始使用'mysqli_ *'或'PDO'而不是 – Naruto

+0

可能太多...每个属性应该有多少列10 ... 20。 0.30?我更喜欢只用一张表和数组,如果可能的话 –

回答

0

使用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 
} 
0

为什么不使用最小值/最大值在查询?像这样:(未经测试)

$min=$_GET["min"]; // min price given by user - like 1000 euro 
$max=$_GET["max"]; // max price given by user - like 2500 euro 

// select from offers where price > min and price < max 
$result=mysql_query(sprintf("SELECT * FROM `offers` WHERE `price` > %d AND `price` < %d", 
    mysql_real_escape_string($min), 
    mysql_real_escape_string($max) 
)); 

$offers=mysql_numrows($result); 

// loop over the offers 
foreach($offers as $offer){ 
    $id = $offer['id']; 
    $price = $offer['price']; 

    // do something 
} 

现在请记住mysql_query()已被弃用。我建议做一个PDO教程。

PDO教程:http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059

+0

谢谢...我会学习比。同时我对这个问题作了一些澄清。 –

相关问题