gpt4 book ai didi

php - 验证失败后重新加载页面时,保留 SQL 生成表单的原始顺序(随机)

转载 作者:行者123 更新时间:2023-11-30 00:14:44 25 4
gpt4 key购买 nike

我有一个 PHP/mysqli 生成的表单,使用 ORDER BY rand()在 mysqli 查询中随机化决策任务中的选项(使用找到的代码 here )。

我想出了一种方法来验证用户输入以匹配一组预定义的值(请参阅链接问题的答案),如果不满足验证条件,则会触发页面重新加载。但是,这会导致使用不同的随机顺序生成表单表。我想以与使用 php 加载第一页相同的顺序显示表单表。另外,我想echo用户在输入字段中输入值(以便用户可以看到他/她输入的内容)。

有没有一种相对简单的方法可以实现这一目标?我研究过使用多维数组并将数据存储在 $_SESSION 中,但似乎没有一个解决方案适用于这个问题。

最佳答案

我找到了一种方法,使用 this answer 输出与原始表相同的表。至Sort multidimensional array based on another array ,但在验证检查失败时填充用户输入数据。这要归功于 PHP 5 >= 5.5.0 中的 array_column

if(isset($_SESSION['origVals']) && $_SESSION['origVals'] == true){
$postOrd = array();
foreach($_POST["alt_ord"] as $order){
$postOrd[] = $order;
}
$postId = ($_POST['alt_id']);
$postRnk = array();
foreach($_POST['rank_'] as $inputRnk){
$postRnk[] = $inputRnk;
}

function resToArray($result){
$rws = array();
while($rw = $result->fetch_assoc()){
$rws[] = $rw;
}
return $rws;
}

$postsql = "SELECT id, alttext FROM `altrank`";
$result = $link->query($postsql) or die(mysql_error($link));

$rws = resToArray($result);

$row = array_column($rws, null, 'id');
$rows = array();
foreach ($postId as $k => $id){
$rows[] = $row[$id];
}

for($i = 0; $i < count($rows); $i++){
$rows[$i]['rank'] = $postRnk[$i];
}

$result->close();
unset($_SESSION['origVals']);

这适用于我想要实现的目标。我欢迎任何有关如何改进此代码的反馈。

关于php - 验证失败后重新加载页面时,保留 SQL 生成表单的原始顺序(随机),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23753541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com