每次提交表单时,从按列值排序的查询中选择下一行(在MySQL中)

hgc7kmma  于 2023-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(145)

首先,让我告诉你,我是PHP和MySQL的新手,并试图学习。因此,我创建了一个网络应用程序,其中一个随机的公寓号码将显示对一个人的名字排序的会员号码的资历。公寓号和人名来自不同的表。我可以通过这样的查询得到一个随机的名字-

SELECT bd, rank, name FROM person ORDER BY RAND() DESC LIMIT 1

但我需要的是-当我提交表格时,它会显示最资深的人的名字和一个随机的公寓号码,当我点击再次提交表格时,然后是下一个资深的人和一个随机的公寓号码,等等。那么,我的疑问应该是什么呢?我的代码看起来像这样-

if (isset($_POST['submit'])) {
$query = "SELECT house_no FROM houses ORDER BY RAND() LIMIT 1";
$result = mysqli_query($link, $query);
while ($row = mysqli_fetch_array($result))
{
    global $won;
    $won = $row['house_no'];
    echo $won;
}

$query2 = "SELECT bd, rank, name FROM person ORDER BY RAND() DESC LIMIT 1";
$result2 = mysqli_query($link, $query2);
while ($row2 = mysqli_fetch_array($result2))
{
    $winner_rank = $row2['rank'];
    $winner = $row2['name'];
    $winner_bd = $row2['bd'];
    global $winner, $winner_bd, $winner_rank;

    echo $row2['rank']. " ";
    echo $row2['name']. ", ";
    echo "Member No/".$row2['bd'];
} }
ulydmbyx

ulydmbyx1#

我可以帮助你,但我不认为我完全理解你试图用代码完成的事情。尝试注解代码的每一步,而且我不知道数据库的结构是什么样的。
但是从我的理解==>当我提交表格时,它会显示最年长的人的名字和一个随机的公寓号码,当我再次点击提交表格时,然后是下一个年长的人和一个随机的公寓号码等等。
//确保一个公寓不会被发给一个成员两次。我建议在users和apartment表中都有一个名为assigned的列,它的默认值为0
因此,当您为用户和公寓选择任何值时,请将该列值更改为1。
//对于高级成员//我假设你有一个users表:)我认为最高级的人将在数据库中拥有最低的id号。
选择所有赋值列中的值为0的成员,然后按id排序,将结果限制为1
然后将该值保存在变量中。
//for random apartment//假设你有一个公寓表,只要选择id和公寓号,其赋值为0,然后将其保存在一个变量中。
//返回变量

相关问题