我对标题感到抱歉,因为我不确定我的问题是在 PHP 还是 MSSQL 查询中。我很确定它是php。
我正在修复一个访问两个不同 MSSQL 表的 PHP 页面。该页面运行良好,直到我们进行了系统范围的更改,创建了新的部门 ID 并因此创建了一些新的部门名称。
我现在几乎完全解决了这个问题,除了一件小事。当您单击列出所有部门时,它会列出所有部门,并且每个链接下都有正确的个人。
问题是它在该部门名称中列出了每个人的链接,例如,如果业务部门中有 10 个人,我们有十个业务链接,并且所有链接下都有相同的信息。
我想做到,所以每个部门只有一个链接。这两个表是目录(涉及的列是显示名称和部门)和部门(涉及的列是名称和 ID)
有人可以告诉我我需要在哪里更改它,以便它只打印一个到每个部门的链接吗?是我的 SQL 查询还是 PHP 的问题?
这是代码
function listDepts() {
$query = "SELECT directory.Lastname, directory.Firstname, directory.email,
directory.phone, directory.Office, directory.Department, departments.id,
departments.name FROM directory FULL JOIN departments ON
directory.Department=departments.id ORDER BY name";
$result = mssql_query($query);
echo "<h3>Please select a department:</h3>\n";
echo "<ul>\n";
for ($i=0; $i<mssql_num_rows($result); ) {
$info = mssql_fetch_assoc($result);
echo "<li><a href=\"dept.php?dept=$info[id]\">$info[name]</a></li>\n";
}
echo "</ul>\n\n";
}
其他查询
function displayResults($query) {
$result = mssql_query($query);
if (mssql_num_rows($result) > 0) {
for ($i=0; $i<mssql_num_rows($result); $i++) {
$info = mssql_fetch_assoc($result);
if ($info[dept_name] != $last_dept) {
if ($i > 0) {
echo "</table>\n\n";
}
echo "<h3><a href=\"$info[dept_url]\">$info[dept_name]</a></h3>\n\n";
echo "<table id=\"directory_table\">\n";
echo "<tr>\n";
echo "<th>Name</th>\n";
echo "<th>E-mail</th>\n";
echo "<th>Phone</th>\n";
echo "<th>Office</th>\n";
echo "<th>Title</th>\n";
echo "</tr>\n";
}
if (!$info[dept_name] && $i==0) {
echo "<table id=\"directory_table\">\n";
echo "<tr>\n";
echo "<th>Name</th>\n";
echo "<th>E-mail</th>\n";
echo "<th>Phone</th>\n";
echo "<th>Office</th>\n";
echo "<th>Title</th>\n";
echo "</tr>\n";
}
if ($i % 2 == 0) {
echo "<tr class=\"even\">\n";
} else {
echo "<tr class=\"odd\">\n";
}
echo "<td>";
echo ($info[Firstname]) ? "$info[Firstname]" . " " . "$info[Lastname]" : " ";
echo "</td>\n";
echo "<td>";
echo ($info[email]) ? "<a href=\"mailto:$info[email]\">$info[email]</a>" : " ";
echo "</td>\n";
echo "<td>";
echo ($info[phone]) ? "$info[phone]" : " ";
echo "</td>\n";
echo "<td>";
echo ($info[office]) ? "$info[office]" : " ";
echo "</td>\n";
echo "<td>";
echo ($info[title]) ? "$info[title]" : " ";
echo "</td>\n";
$last_dept = $info[dept_name];
}
echo "</table>\n\n";
} else {
echo "<p>No results found.</p>\n\n";
}
}