Php 显示下拉列表中的数据

Php 显示下拉列表中的数据,php,mysqli,Php,Mysqli,我正在努力在项目的下拉列表中显示所选选项的详细信息 我有一个从MYSQLi查询填充的下拉列表。我希望用户选择一个选项以及从数据库中提取并显示给用户的相关值 动态填充的下拉列表用于人员的“FirstName”(表名),当用户从下拉列表中选择名称时,我希望显示该人员的记录 下面的代码用于动态填充下拉列表。用户单击按钮并进入下一页,该页将创建一个包含结果的表。没有错误,但也没有要求的结果 下拉代码 <!DOCTYPE> <html> <head> <titl

我正在努力在项目的下拉列表中显示所选选项的详细信息

我有一个从MYSQLi查询填充的下拉列表。我希望用户选择一个选项以及从数据库中提取并显示给用户的相关值

动态填充的下拉列表用于人员的“FirstName”(表名),当用户从下拉列表中选择名称时,我希望显示该人员的记录

下面的代码用于动态填充下拉列表。用户单击按钮并进入下一页,该页将创建一个包含结果的表。没有错误,但也没有要求的结果

下拉代码

<!DOCTYPE>
<html>
<head>

<title>Update Data</title>
</head>

<body>

<form name="form_update" method="post" action="update_test.php">

<?php
$con=mysqli_connect("localhost","root","","ismat_db");
//============== check connection
if(mysqli_errno($con))
{
echo "Can't Connect to mySQL:".mysqli_connect_error();
}



//This creates the drop down box

echo "<select name= 'FirstName'>";
echo '<option value="">'.'--- Please Select Person ---'.'</option>';
$query = mysqli_query($con,"SELECT FirstName FROM persons");
$query_display = mysqli_query($con,"SELECT * FROM persons");

while($row=mysqli_fetch_array($query))
{
echo "<option value='". $row['id']."'>".$row['FirstName']
 .'</option>';

}

echo '</select>';

?>&nbsp;<input type="submit" name="submit" value="Submit"/>
</form><br/><br/>
<a href="main.html"> Go back to Main Page </a>
</body>
</html>
<title>Update Data</title>
</head>

<body>
<!--<table>
<tr>
<td align="center"> From Database </td>
</tr>
<tr>
<td>
    <table border="1">
        <tr>
            <td>First Name</td>
            <td>Last Name </td>
            <td> Gender </td>
            <td> Subject </td>
            <td> Hobbies </td>
        </tr>
     -->
  <?php 
$con=mysqli_connect("localhost","root","","ismat_db");
if(mysqli_errno($con))
{
echo "Can't Connect to mySQL:".mysqli_connect_error();
}


//$name = mysqli_real_escape_string($con,$_POST['select']);
 // $fetch = mysqli_query($con,"SELECT * FROM persons WHERE FirstName='".$name."'");
//  $row_display=mysqli_fetch_assoc($fetch);

if(isset($_POST['select']))
{

$name = mysqli_real_escape_string($con,$_POST['select']);
  $fetch = "SELECT * FROM persons WHERE FirstName = '".$name."'";
 $result = mysqli_query($con,$fetch);

 //display the table
 echo '<table border="1">'.'<tr>'.'<td align="center">'. 'From Database'. '</td>'.'</tr>';
echo '<tr>'.'<td>'.'<table border="1">'.'<tr>'.'<td>'.'First Name'.'</td>'
.'<td>'.'Last           Name'.'</td>'.'<td>'. 'Gender' .'</td>'.'<td>'
. 'Subject'. '</td>'.'<td>'. 'Hobbies' .'</td>'.'</tr>';
while($data = mysqli_fetch_row($result))
{
echo ("<tr><td>$data[0]</td><td>$data[1]</td><td>$data[2]</td><td>$data[3]</td><td>$data[4] </td></tr>");
 }

  echo '</table>'.'</td>'.'</tr>'.'</table>';
    }

   ?>
   <!--
   </table>
   </td>
   </tr>
   </table>
   -->
   <br/>
   <a href="update.php"> Go back to Main Page </a>
   </body>
   </html>

更新数据

您在视图代码中使用了错误的字段名:

echo "<select name= 'FirstName'>";
                     ^^^^^^^^^
表单提交时带有
fieldname=value
对,而不是输入来自的标签的名称。

没有多少建议

  • 在查询中添加已设置为选项值的id

    echo'.$row['FirstName']

    因此,请按如下方式更新它:
    $query=mysqli_query($con,“从个人中选择id、名字”)

  • 您正在检查错误的
    POST var'select'
    ,它应该是'FirstName',这是您在下面使用的选择字段的名称:

    echo“

    因此,不使用以下代码:

    
    如果(isset($_POST['select']))
    {
    $name=mysqli\u real\u escape\u字符串($con,$\u POST['select']);
    $fetch=“从FirstName=”“$name.”的人员中选择*;
    $result=mysqli\u查询($con,$fetch);
    

  • 还要注意,在where子句中,您应该检查id而不是名字

    请改用此更正的代码:

    
    如果(isset($_POST['FirstName']))
    {
    $name=$_POST['FirstName'];
    $fetch=“从id=”“$name.”的人员中选择*;
    $result=mysqli\u查询($con,$fetch);
    

  • 它将特定用户的数据显示到同一页面

    您的下拉框看起来像

    在另一页上获取fname变量并显示该变量的数据 这就是从数据库中获取

    在PHP中


    我更改了“echo”“;”,结果是显示了该表,但没有从数据库中提取任何数据。WHILE循环没有运行。您的代码意味着假设查询成功。始终检查返回值是否为布尔值false,这表示失败。例如,
    $result=mysqli\u query(…)或die(mysqli\u error())
    。我不理解第一行,但我更新了$query,并在底部更新了代码,也就是if(isset($\u POST['FirstName']),但当我向查询中添加id时,下拉框不会获取db列表。因此我没有添加该行,当我应用底部的代码时,我会得到以下错误=警告:mysqli\u fetch\u row()要求参数1为mysqli_result@fvrghi如果(isset($\u POST['FirstName']”),但当我向查询中添加id时,下拉框不会获取db列表。我得到此错误=警告:mysqli_fetch_row()期望参数1是给定的mysqli_结果字符串
    $name = mysqli_real_escape_string($con,$_POST['select']);
                                                   ^^^^^^
    
    <select id="c-name" name="name" onChange="reload()">
        <option value="">Select Name</option>
    </select>
    
    function reload()   {
        var val=document.getElementById("c-name").value;
        self.location="yourfilename.php?fname=" + val ;
        //alert(val);
    }
    
    if(isset($_REQUEST['fname'])) {
    
      //your code
    
    }