平台上的用户选择社交媒体服务,然后选择预算范围。我收集信息并通过ajax发布到PHP。现在,利用这些信息,我试图为他创建一个随机计划,并在其预算范围内定价。我在while循环中使用do-while,但它会永久加载并且无法正常工作。基本上,如果用户选择每月预算为30美元的Facebook,Twitter和YouTube,则该应用应返回Facebook Bronze,Twitter Bronze和YouTube Bronze。然后加上15美元的预付款,并显示总计30美元。我真的很想尝试这项工作。
Db表看起来像这样
id | social | price | level
1 | Facebook | 5 | Bronze
2 | Facebook | 7 | Silver
3 | Facebook | 9 | Gold
4 | Twitter | 5 | Bronze
5 | Twitter | 7 | Silver
6 | Twitter | 9 | Gold
7 | YouTube | 5 | Bronze
8 | YouTube | 7 | Silver
9 | YouTube | 9 | Gold
...
服务器端
$monthlybudget = $_POST['monthlybudget'];
$mysocialmediachoice = $_POST['mysocialmediachoice'];
$upfront = 15;
$query = "SELECT * FROM `services` WHERE social IN ($mysocialmediachoice)";//yes I do know this is prone to injections this is just a demo for here NOT the actual code
$webstsm = $conn->prepare($query);
$webstsm->execute();
$result = $webstsm->get_result();
if ($monthlybudget =='30') {
$level ='Bronze';
}
if ($monthlybudget =='200') {
$level ='Silver';
}
if ($monthlybudget =='400') {
$level ='Gold';
}
while ($row = $result->fetch_assoc()) {
if (($row['level'] == $level)) {
$subtotal +=($row['price'] + $upfront);//sum of total of array
//var_export($row); //testing
do {
echo $row['social'];
} while ($subtotal < $monthlybudget);
}
}
$sumtotal = ($subtotal);
echo $sumtotal;//print total of recommended plan
答案 0 :(得分:4)
您有一个无限循环:
do {
echo $row['social'];
} while($subtotal < $monthlybudget);
只要条件为真,这将执行。由于$ subtotal或$ monthlybudget都不会在循环内更改,因此一旦进入循环,就永远不会退出。
答案 1 :(得分:3)
问题在于,do-while的条件永远不会从TRUE变为FALSE。如果条件$subtotal < $monthlybudget
以TRUE开头,则循环中的指令将永远运行。