如何使用PHP更新表单下拉菜单?

时间:2014-11-10 16:08:56

标签: php html mysql forms

我一直在尝试使用数据库中的条目列表更新表单的下拉菜单。数据库已使用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>';

}

2 个答案:

答案 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())