我有一个问题,那就是我想在网站上创建一个链接,就像人们可以单击该链接以仅根据百分比显示某些产品一样。 例如,我的数据库中有一列包含折扣百分比,它将显示最小折扣和最大折扣。 假设我们有最小和最大折扣。 $min=12 和 $max=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>';
}
}
}
我知道这都是一团糟,但是..谢谢。
你可以做的第一件事只有一个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 循环。两个"如果"条件可以在同一循环中:
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>';
}
}
}
为了使其更具可读性,您还可以注释代码以了解什么做什么。
这和一个很好的缩进,你是对的。
希望对您有所帮助。