我一直在尝试使用数据库中的条目列表更新表单的下拉菜单。数据库已使用MYSQL创建。我一直在寻找一个解决方案,我不知道为什么,但没有一个有效。我使用的最新版本是:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<body>
<form method="post" action="submitRequest.php">
Staff ID: <br>
<input type="text" name="StfID" value="">
<br><br>
E-mail: <br> <input type="text" name="email" >
<br><br>
Select a choice:
<br>
<select name="Choice" value="Select" size="1">
<?php
$server= '*******';
$user = '*******';
$password = '*******';
$database = '********';
$conn = new mysqli($server, $user, $password, $database);
if ($conn->connect_error)
{
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM choicesGiven";
$result = mysql_query($sql) or die (mysql_error());
while ($row = mysql_fetch_array($result))
{
$id=$row["ID"];
$titles=$row["CTitle"];
$options.="<option value=\"$id">".$titles;
}
$conn->close();
?>
<option>
<? echo $options ?>
</option>
</select>
<br><br>
<input type="submit" name="Submit" value="Submit">
</form>
</body>
如果有人能帮助我,我会很感激,因为我一直试图访问它一周左右。
我不确定使用html文件格式是否更好或仅使用php创建它(如果可能的话),感谢任何评论或提前帮助。
我不是PHP或HTML专家,所以再次提出任何提示/帮助/帮助都非常感谢。
更新:
感谢@FunkDoc和@Len_D,然而,当我使用任何一个答案时,都没有工作。我在一个单独的php文件中使用了主要的php块,我收到了这个错误(不确定它是否有任何用处:
Fatal error: Call to a member function query() on a non-object in /home/u309965349/public_html/Test2.php on line 11
第11行的代码是:
$result = $mysqli->query($sql) or die ($mysqli->error);
仍在寻找......
更新2:所以我使用了php chunk(中间的主要块)并将其保存为php文件。当我运行它并回显$ options时,我得到了我想要的列表,但是当我在html文档中使用它来更新表单的选择部分时,我仍然得到相同的$ titles,这意味着我的html语法是不正确的。
提前感谢大家的帮助。
更新3:
为了详细说明上述更新,我在一个单独的.php文件中使用了php chunk,如下所示:
<?php
$server= '*******';
$user = '*******';
$password = '*******';
$database = '********';
$conn = new mysqli($server, $user, $password, $database);
$sql = "SELECT * FROM choicesGiven";
$result = $conn->query($sql) or die ($conn->error);
$options;
while ($row = $result->fetch_object())
{
$id=$row->ID;
$titles=$row->CTitle;
// debug_to_console ($id);
$options.="<option value='".$id."'>".$titles."</option>";
}
echo $options;
$conn->close();
?>
我设法完美地获得了选项。这是用于将上述代码添加到html表单的html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<body>
<p><span class="error">* required field.</span></p>
<form method="post" action="submitRequest.php">
Staff ID: <br>
<input type="text" name="StuID" value="">
<br><br>
E-mail: <br> <input type="text" name="email" >
<br><br>
Select a choice:
<br>
<select name="Choice" value="Select">
<?php
$server= '*******';
$user = '*******';
$password = '*******';
$database = '********';
$conn = new mysqli($server, $user, $password, $database);
$sql = "SELECT * FROM choiceGiven";
$result = $conn->query($sql) or die ($conn->error);
$options;
while ($row = $result->fetch_object())
{
$id=$row->ID;
$titles=$row->CTitle;
// debug_to_console ($id);
$options.="<option value='".$id."'>".$titles."</option>";
}
}
echo $options;
$conn->close();
?>
<? echo $options ?>
</select>
<br><br>
<input type="submit" name="Submit" value="Submit">
</form>
</body>
</html>
我在下拉菜单中唯一得到的是:&#34;。$ title。&#34;
非常感谢,如果你能解决这个问题,请告诉我:)
更新4:
我也试过这个:
while ($row = mysql_fetch_array($result))
{
$id=$row->ID;
$titles=$row->BTitle;
// debug_to_console ($id);
echo '<option value="'.$id.'">'.$titles'</option>';
}
答案 0 :(得分:2)
这应该有效。全面改为mysqli并修复了一些HTML
<form method="post" action="submitRequest.php">
Staff ID: <br>
<input type="text" name="StfID" value="">
<br><br>
E-mail: <br> <input type="text" name="email" >
<br><br>
Select a choice:
<br>
<select name="Choice" value="Select" size="1">
<?php
$server= '*******';
$user = '*******';
$password = '*******';
$database = '********';
$conn = new mysqli($server, $user, $password, $database);
if ($conn->connect_error)
{
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT * FROM choicesGiven";
$result = $conn->query($sql) or die ($conn->error);
while ($row = $result->fetch_object())
{
$id=$row->ID;
$titles=$row->CTitle;
$options.="<option value='".$id."'>".$titles."</option>";
}
$conn->close();
?>
<? echo $options ?>
</select>
<br><br>
<input type="submit" name="Submit" value="Submit">
</form>
答案 1 :(得分:1)
您正在混合使用mysqli和mysql命令。编辑以下行:
$result = mysql_query($sql) or die (mysql_error());
while ($row = mysql_fetch_array($result))
致:
$result = mysqli_query($conn,$sql);
while mysqli_fetch_array($result);
另外,改变这个:
while ($row = $result->fetch_object())
对此:
while ($row = $result->fetch_array())