gpt4 book ai didi

php - 如何使用PHP动态显示网页中的链接

转载 作者:行者123 更新时间:2023-11-29 19:23:05 26 4
gpt4 key购买 nike

大家好。我有这个代码片段,其目的是根据注册的类(class)显示该用户有资格参加的考试。它将显示考试名称、可用日期、通过成绩以及“参加考试”链接(如果他/她还没有写过)或“查看结果”(如果他/她以前写过)。

/*Connection String */
global $con;

$user_id = $_SESSION['user_id']; //user id

$courses = parse_course($user_id); //parse course gets the list of registered courses (Course Codes) in an array

foreach ($courses as $list)
{
$written = false;
$list = parse_course_id($list); //parse_course_id gets the id for each course
$ers = mysqli_query($con, "Select * from exams where course_id = '$list'");
while ($erows = mysqli_fetch_assoc($ers)) {
$trs = mysqli_query($con, "Select * from result_data where user_id = '$user_id'");
while ($trows = mysqli_fetch_assoc($trs)) {
if ($trows['user_id'] == $user_id && $trows['exam_id'] == $erows['exam_id'])
$written = true;
else
$written = false;
}

if($written)
{
echo "<tr><td>".$erows['exam_name']."</td><td>".$erows['exam_from']." To ".$erows['exam_to']."</td><td>".$erows['passing_grade']."%</td><td><a href=proc_result.php?id=".$erows['exam_id'].">".'View Result '."</a></td></tr>";
$written = false;
}
else
{
echo "<tr><td>".$erows['exam_name']."</td><td>".$erows['exam_from']." To ".$erows['exam_to']."</td><td>".$erows['passing_grade']."%</td><td><a href=Exam3.php?id=".$erows['exam_id'].">".'Take Exam '."</a></td></tr>";
$written = false;
}

}

}

但即使我参加了不止一场考试,它也只显示一个“查看结果”条目。它显示最近的条目。请问我缺少什么?

最佳答案

未经测试,但我会这样做。

我假设 $user_id 是一个整数。我有点担心它在没有任何清理的情况下被用于 SQL。我也不能保证您所做的其他任何事情都是安全的,因为我看不到您的其他代码。请阅读:http://php.net/manual/en/security.database.sql-injection.php

(哦,我看到有人对此发表了评论 - 不要掉以轻心!)

无论如何,我的方法是首先将用户的笔试 ID 收集到一个数组中。然后循环遍历可用的考试并检查每个考试 ID 以查看它是否在我们之前创建的数组中。

我不会费心去研究连接建议,除非你发现它的性能很差。在许多系统中,这种情况下通常有 3 个函数,一个生成 $users_writing_exam_ids ,一个提取 $all_available_exams 之类的内容,然后是比较两者的代码。但是因为人们在这里同时看到这两个查询,所以有一种强烈的诱惑去优化它,这很酷,但你可能只是希望它能够工作:)

<?php
global $con;

// Get the user id. Pass through intval() so no SQL injection is possible.
$user_id = intval($_SESSION['user_id']);

// Parse course gets the list of registered courses (Course Codes) in an array
$courses = parse_course($user_id);

foreach ($courses as $list)
{
// Gets the id for each course
$list = parse_course_id($list);

$users_written_exam_ids = array();
$trs = mysqli_query($con, "SELECT exam_id FROM result_data WHERE user_id = '$user_id'");
while ($trows = mysqli_fetch_assoc($trs))
{
$users_written_exam_ids[] = $trows['exam_id'];
}

$ers = mysqli_query($con, "SELECT * FROM exams WHERE course_id = '$list'");
while ($erows = mysqli_fetch_assoc($ers)) {
echo '<tr><td>' . $erows['exam_name'] . '</td><td>' . $erows['exam_from']
. ' To ' . $erows['exam_to'] . '</td><td>' . $erows['passing_grade']
. '%</td><td>';
if (in_array($erows['exam_id'], $users_written_exam_ids))
{
echo '<a href="proc_result.php?id=' . $erows['exam_id'] . '">View Result</a>';
}
else
{
echo '<a href="Exam3.php?id=' . $erows['exam_id'] . '">Take Exam</a>';
}
echo '</td></tr>';

}

}

关于php - 如何使用PHP动态显示网页中的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42323612/

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