2013-06-19 241 views
0

我在一个下拉列表中为我的项目显示从所选的选项的详细努力。显示数据从下拉列表PHP

我有一个下拉列表,它是由mysqli的查询填充。我希望用户选择一个选项并将相关联的值从数据库中拉出并显示给用户。

的动态填充下拉列表是人的“名字”(表名称),当用户从下拉列表中我希望那个人的记录是显示下降的名称。

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

下拉代码

<!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> 

回答

2

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

echo "<select name= 'FirstName'>"; 
        ^^^^^^^^^ 

V.S.

$name = mysqli_real_escape_string($con,$_POST['select']); 
               ^^^^^^ 

形式与fieldname=value双,,输入来自的标记的名称提交。

+0

我已更改 'echo““;' 会发生什么情况是该表被显示,但是没有来自数据库的数据被提取。 WHILE循环不运行。 –

+0

你的代码暗示假设查询成功。总是检查布尔值为false的返回值,这表明失败。例如'$ result = mysqli_query(...)或者死(mysqli_error());'。 –

+0

谢谢,但没有任何工作... 编码是一个艰难的 –

0

有几个建议

  1. 在查询中添加您已设置为值的选项

    echo "<option value='". $row['id']."'>".$row['FirstName']

    的ID如下这样更新:
    $query = mysqli_query($con,"SELECT id,FirstName FROM persons");

  2. 你检查错误POST var 'select',应该是“名字”,这是你在下面使用的选择字段的名称:

    echo "<select name= 'FirstName'>

    所以不是下面的代码:

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

  3. 还要注意,在WHERE子句中,你应该检查该ID不中的firstName

    使用该纠正代码插件TEAD:

    if(isset($_POST['FirstName'])) { $name = $_POST['FirstName']; $fetch = "SELECT * FROM persons WHERE id = '".$name."'"; $result = mysqli_query($con,$fetch);

+0

我不明白的第一行,但我更新了$查询所告知和底部的代码也是如果(isset($ _ POST ['FirstName' ]' 但是,当我添加_id_到我的查询然后下拉框不会获取数据库列表。所以我没有添加,当我在底部应用代码时,我得到这个错误=警告:mysqli_fetch_row()期望参数1是mysqli_result –

+0

@fvrghi if(isset($ _ POST ['FirstName']'但是当我添加id到我的查询然后下拉框不会获取数据库列表。我得到这个错误=警告:mysqli_fetch_row()期望参数1是mysqli_result字符串给出 –

+0

它给出了while循环的错误。 –

0

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

你的下拉框看起来像

<select id="c-name" name="name" onChange="reload()"> 
    <option value="">Select Name</option> 
</select> 

在Javascript中写重载()函数

function reload() { 
    var val=document.getElementById("c-name").value; 
    self.location="yourfilename.php?fname=" + val ; 
    //alert(val); 
} 

在疗法页取FNAME可变&显示数据为可变 即从数据库中获取

在PHP

if(isset($_REQUEST['fname'])) { 

    //your code 

}