使用PHP while循环创建高级过滤器

使用PHP while循环创建高级过滤器,php,arrays,loops,foreach,Php,Arrays,Loops,Foreach,我有一个问题,那就是我想在一个网站上创建一个链接,就像人们可以点击链接来显示某些产品只取决于百分比。例如,我的数据库中有一列显示折扣百分比,它将显示最小折扣和最大折扣。假设我们有最低和最高折扣$最低12美元,最高94美元;我想把它们放在链接中,只显示具有特定折扣的产品,就像过滤一样。下面是链接的示例 <a href="#">12% to 20%</a <a href="#">21% to 30%</a> <a href="#

我有一个问题,那就是我想在一个网站上创建一个链接,就像人们可以点击链接来显示某些产品只取决于百分比。例如,我的数据库中有一列显示折扣百分比,它将显示最小折扣和最大折扣。假设我们有最低和最高折扣$最低12美元,最高94美元;我想把它们放在链接中,只显示具有特定折扣的产品,就像过滤一样。下面是链接的示例

    <a href="#">12% to 20%</a
    <a href="#">21% to 30%</a>
    <a href="#">31% to 40%</a> and so on until it reaches 
    <a href="#">81% to 90%</a> and the last will be 
    <a href="#">91% to 94%</a>

等等,直到它到达
最后一个是
最小和最大的数字将来自数据库中的一列,它们可以频繁更改。我提出了解决方案,它工作得很好,但我的代码太长,就像我采取了许多步骤,可以在几行代码中完成。我已经在下面粘贴了我的工作代码,但我确信这可以减少到几行代码

$catsql25 = "SELECT MAX(down_percentage) as largest FROM hot_deals";
$catquery25 = mysqli_query($conn, $catsql25);
while ($row25 = mysqli_fetch_array($catquery25, MYSQLI_ASSOC)){
    $largest_number = $row25['largest'];
}

$catsql26 = "SELECT MIN(down_percentage) as smallest FROM hot_deals";
$catquery26 = mysqli_query($conn, $catsql26);
while ($row26 = mysqli_fetch_array($catquery26, MYSQLI_ASSOC)){
    $smallest_number = $row26['smallest'];
}

$array_tens = array(10,20,30,40,50,60,70,80,90,100);


foreach ($array_tens as $value){

    if(($value - $smallest_number <= 10) && ($value - $smallest_number > 0)){
        echo '<a href="/exp.php?fst='.$smallest_number.'&lst='.$value.'"><div class="lfmen2">';
        echo $smallest_number." to ".$value."</div></a>";
        $next_num = $value + 1;
        $next_ten = 9;
        $stop_num = floor($largest_number / 10);
        $stop_num2 = $stop_num * 10;
        //echo $stop_num2.'<br>';
        $num_rounds = $stop_num2 - $value;
        $num_rounds2 = $num_rounds / 10;
        //echo $num_rounds2;
        for ($i = 1; $i <= $num_rounds2; $i++){
        $end_num = $next_num + $next_ten;
        echo '<a href="/exp.php?fst='.$next_num.'&lst='.$end_num.'"><div class="lfmen2">';
        echo $next_num;
        echo " to ";
        echo $end_num;
        echo "</div></a>";
        $next_num += 10;
        $end_num += 10;
        }
    }
}


foreach ($array_tens as $value2){

    if(($largest_number - $value2 < 10) && ($largest_number - $value2 > 0)){
        $lsst = $value2 + 1;
        if($lsst != $largest_number){
        echo '<a href="/exp.php?fst='.$lsst.'&lst='.$largest_number.'"><div class="lfmen2">'.$lsst." to ".$largest_number."</div></a>";
        }
        elseif($lsst == $largest_number){
            echo '<a href="/exp.php?fnly='.$largest_number.'"><div class="lfmen2">'.$largest_number.'</div></a>';
        }
    }

}
$catsql25=“从热门交易中选择最大(下降百分比)作为最大值”;
$catquery25=mysqli_查询($conn$catsql25);
而($row25=mysqli\u fetch\u数组($catquery25,mysqli\u ASSOC)){
$maximust_number=$row25['maximust'];
}
$catsql26=“从热门交易中选择最小值(下降百分比);
$catquery26=mysqli_查询($conn,$catsql26);
而($row26=mysqli_fetch_数组($catquery26,mysqli_ASSOC)){
$ministen_number=$row26['ministen'];
}
$array_tens=数组(10,20,30,40,50,60,70,80,90100);
foreach($array\u tens作为$value){
if(($value-$minister_number 0)){
回声';
$next_num=$value+1;
$next_ten=9;
$stop\u num=楼层($max\u number/10);
$stop\u num2=$stop\u num*10;
//回显$stop_num2.“
”; $num_rounds=$stop_num2-$value; $num_rounds2=$num_rounds/10; //echo$num_rounds2;
对于($i=1;$i),您可以做的第一件事就是只执行一个SQL查询:

$catsql = "SELECT MAX(down_percentage) as largest, MIN(down_percentage) as smallest FROM hot_deals";
然后只需要一个循环:

$catquery = mysqli_query($conn, $catsql);
while ($row = mysqli_fetch_array($catquery, MYSQLI_ASSOC)){
    $largest_number = $row['largest'];
    $smallest_number = $row['smalest'];
}
之后,您只能进行一个foreach循环。两个“if”条件可以在同一个循环中:

foreach ($array_tens as $value) {

    if (($value - $smallest_number <= 10) && ($value - $smallest_number > 0)) {
        echo '<a href="/exp.php?fst='.$smallest_number.'&lst='.$value.'"><div class="lfmen2">';
        echo $smallest_number." to ".$value."</div></a>";
        $next_num = $value + 1;
        $next_ten = 9;
        $stop_num = floor($largest_number / 10);
        $stop_num2 = $stop_num * 10;
        //echo $stop_num2.'<br>';
        $num_rounds = $stop_num2 - $value;
        $num_rounds2 = $num_rounds / 10;
        //echo $num_rounds2;
        for ($i = 1; $i <= $num_rounds2; $i++) {
            $end_num = $next_num + $next_ten;
            echo '<a href="/exp.php?fst='.$next_num.'&lst='.$end_num.'"><div class="lfmen2">';
            echo $next_num;
            echo " to ";
            echo $end_num;
            echo "</div></a>";
            $next_num += 10;
            $end_num += 10;
        }
    }

    if (($largest_number - $value < 10) && ($largest_number - $value > 0)) {
        $lsst = $value + 1;
        if ($lsst != $largest_number) {
            echo '<a href="/exp.php?fst='.$lsst.'&lst='.$largest_number.'"><div class="lfmen2">'.$lsst." to ".$largest_number."</div></a>";
        } elseif ($lsst == $largest_number) {
            echo '<a href="/exp.php?fnly='.$largest_number.'"><div class="lfmen2">'.$largest_number.'</div></a>';
        }
    }
}
foreach($array\u tens作为$value){
if(($value-$minister_number 0)){
回声';
$next_num=$value+1;
$next_ten=9;
$stop\u num=楼层($max\u number/10);
$stop\u num2=$stop\u num*10;
//回显$stop_num2.“
”; $num_rounds=$stop_num2-$value; $num_rounds2=$num_rounds/10; //echo$num_rounds2; 对于($i=1;$i)