【发布时间】:2021-04-19 22:21:50
【问题描述】:
我目前正在开发一个日历网站,其功能之一是管理员应该能够为其他人创建预订。为了尝试和重用网页,我想动态地这样做;如果他们是管理员,则应显示一个选择框,否则用户自己的名称应显示为静态文本。
为此,我编写了以下 PHP sn-p:
<?php
// Be sure that we included the msql lib
include_once($_SERVER["DOCUMENT_ROOT"] . "/assets/php/intern/msql.php");
if ($user_info["admin"]) {
// If the user is an administrator, then show the picker
// First, get a list of all (possible) users
$users = msql_fetch(msql_start(), "SELECT * FROM users WHERE role <= ?",
$user_info["role"]);
if (count($users) == 0) {
// That's weird; should be at least the logged-in user
echo("<span style='color: #FFFFFF;font-weight: bold;'>Error; herlaad de pagina</span>");
} else {
// Generate a list of options from this list
$options = "";
foreach ($users as $user) {
// Typify that user
$user = typify_user($user);
// Generate the option
$options = $options . "<option value=\"" . $user["id"] . "\"";
// If this is the present user (which is guaranteed to exist, I'd say), then set it as default
if ($user["id"] === $user_info["id"]) {
$options = $options . " selected";
}
$options = $options . ">" . $user["name"] . "</option>";
}
// Generate the actual div
echo(
"<select id=\"home-create-reservation-name\" style=\"padding: 5px;color: #22CC00;font-weight: bold;\">" .
$options .
"</select>"
);
}
} else {
// Otherwise, show the user's name statically
echo("<span id='home-create-reservation-name' style='color: #22CC00;font-weight: bold;'>" . $user_info["name"] . "</span>");
}
?>
sn-p 似乎可以工作,因为如果用户是管理员,它会成功生成一个选择元素,如果用户不是,它会成功生成一个静态名称范围。
但是,我遇到的问题是选项元素未正确添加,而是选择框显示为空:
为了增加谜团,这是 Firefox 的检查器显示的代码:
<select id="home-create-reservation-name" style="padding: 5px;color: #22CC00;font-weight: bold;">webmaster</select>
但 Firefox 接收的原始源内容是:
<select id="home-create-reservation-name" style="padding: 5px;color: #22CC00;font-weight: bold;"><option value="1" selected>webmaster</option><option value="17">lut_99</option><option value="19">dummy</option></select>
事实上,如果我将其复制/粘贴为检查器中同一选择的 HTML 内容,然后选择会突然正常运行并显示所有三个用户帐户。
不过,我应该注意,因为我使用的是 Firefox,并且只有在登录时才能访问此页面,所以我不能直接使用“查看源代码”,而是复制 Firefox 发出的第一个 HTTP 请求的响应。我认为这不应该是一个问题,但是如果是,请告诉我。
我觉得我犯了一个非常简单和愚蠢的错误,但我就是不知道它是什么。添加“名称”属性也无济于事,也没有将 HTML 引号更改为 PHP sn-p 中的单引号。
谁能看到这里出了什么问题?如果您需要更多信息,请告诉我。
谢谢!
【问题讨论】:
-
“不过,我应该注意,因为我使用的是 Firefox,而且这个页面只有在登录时才能访问,所以我不能直接使用‘查看源代码’” - 为什么不呢,你的登录基于什么?
-
如果浏览器实际上收到了正确的 HTML 代码开始 - 那么也许其他东西在你的选择字段之后弄乱了,也许是一些 JavaScript ......?
-
我不能使用视图源,因为对我来说,视图源似乎不像 PHPSESSION cookie 那样发送 cookie。在任何情况下,网络服务器都会将我重定向到登录页面 - 而这就是我看到的 HTML。
-
另外,你是我的英雄——我查看了我的 Javascript,发现确实有一条旧行,从我以前在 Javascript 中加载它时开始,将元素的文本设置为用户名。 .. *facepalm* 非常感谢!编辑:据我了解,我只能将实际答案标记为答案-因此,如果您这样做,我可以将您的回复标记为:)
标签: php html firefox select option