所以基本上,如果你的数据库中有一个表,它看起来像这样:
id::name:numbers
1:::Jack::::4
2:卡特里娜飓风:::2
3:克莱德:::8
我希望在数字列中循环,将数字相互相加,直到达到某个数字输入,然后回声出一行,其中数字相加为。因此,如果你的输入是3,它将用Jack输出行,如果输入是5或6,它将输出Katrina,如果输入从7-14,它将使用clyde输出行
这里我想不通的是,我如何循环通过数字列,将数字相加,直到到达特定的行,然后只回显该特定的行。
我知道如何回声出所有行并为输入字段创建条件,但我似乎一直在掌握如何走得更远。
$sql = "SELECT medlemsid, navn, lotterinr, tid FROM medlemmer";
$result = $con->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "| id: " . $row["medlemsid"]. " | - Name: " . $row["navn"]. " " ." | Lotterinr " . $row["lotterinr"]. " | Tid: ". $row["tid"]. "<br>";
}
} else {
echo "0 results";
}
if (isset($_POST['numberinput'])) {
$numbers = $_POST['numberinput'];
}
$con->close();
?>
<div id="udlodning-wrapper">
<form name="login-form" class="login-form" method="post">
<div>
<input name="numberinput" type="number" id="numberinput" placeholder="Lotterinummer" />
</div>
<div>
<input type="submit" name="submit" value="Udlodning" id="udlodning-submit" class="button-input"/><br/>
</div>
</form>
</div>
使用self-join查找id等于或小于当前人员的人数总和
select
p1.id,
p1.name,
p1.number,
sum(p2.number) as sum
from people p1
join people p2 on p2.id <= p1.id
group by p1.id, p1.name, p1.number;
上面的SQL会产生这样的结果:
id name number sum
1 jack 4 4
2 katrina 2 6
3 clyde 8 14
然后,您可以迭代结果,根据总和检查您的输入