2013-06-19 239 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 

}