2017-03-16 116 views
0

非常感謝您的時間。PHP - 在同一頁面搜索數據庫並返回結果

我正在爲我的業務創建一個CRM。這將是非常基礎的,但包括我的行業在CRM中特別需要的一些關鍵功能,似乎並不存在於任何地方,但我離題了。

我目前正在網絡應用程序中搜索功能,搜索客戶端並將結果返回到搜索表單下方的下拉菜單中。當在該列表中選擇客戶端時,用戶被重定向到顯示與該客戶端相關的所有信息的頁面。

我的問題與此搜索功能有關。我現在有搜索在下拉菜單中將結果作爲ECHO返回,它看起來非常混亂。 PHP最終埋在了html表單中。必須有一種更簡單更方便的方式來將結果作爲列表返回。

邊注:返回的搜索結果中甚至不必是在一個下拉列表中,我剛剛來到這個解決方案隨着時間的推移,因爲它讓我對通過所選擇的用戶對下一個PHP代碼下一頁相當容易與ID的隱藏表單字段。

這是我到目前爲止所做的。有人可以幫我清理一下嗎?

<!DOCTYPE html> 
<html> 
<head> 
<title>Client Search Results</title> 
<link rel="stylesheet" href="styles.css"> 
</head> 

<body> 

<div class="container">  
<form id="contact" action="" method="get"> 

<fieldset> 
<h4>Search For Client</h4> 
<input name="term" placeholder="Enter Name Here" type="text"> 
</fieldset> 

<fieldset> 
<button type="submit">Search</button> 
</fieldset> 

</form> 
</div> 

<div class='container'>  
<form id='contact' action='edit.php' method='post'> 

<fieldset> 
<h4>Search Results</h4> 
<select size="5" style="width:100%" name='id' > 

<?php 
// Database Connection String 
include("../../comm/comm.php"); 
$con = mysql_connect($DB_HOST,$DB_USER,$DB_PASS); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db($DB_NAME, $con); 

//Retrieve The Searched Term and Display The Results 
if (!empty($_GET['term'])) { 
$term = mysql_real_escape_string($_GET['term']);  
$sql = "SELECT * FROM client WHERE firstname LIKE '%".$term."%'"; 
$r_query = mysql_query($sql); 
while ($row = mysql_fetch_array($r_query)) { 

echo "<option"; 
echo " value='"; 
echo "".$row['client_id']; 
echo"'>"; 
echo "".$row['firstname']; 
echo " ".$row['lastname']; 
echo " - ".$row['city']; 
echo " ,".$row['state']; 
echo "</option>"; 

}} 
?> 

</select> 
</fieldset> 

<fieldset> 
<button type='submit' name='submit'>View Selection</button> 
</fieldset> 

</form> 
<div> 

</body> 
</html> 

回答

1

你的選擇可能只是被寫成如下:

echo '<option value="$row[client_id]">$row[firstname] $row[lastname] - $row[city], $row[state]</option>'; 

另外,還要注意mysql_功能已被棄用,以錯誤的方式使用是非常危險的,讓你的網站受到攻擊。

使用準備好的語句,使用mysqli或PDO。

+0

我剛開始研究如何正確使用PDO,並且它對我來說不是一件容易的事。我正在教自己所有這些。我計劃在一定程度上將框架中的粗糙表達式運用到一定程度後,用準備好的語句和mysqli來替換所有這些。 – inkslinger

1
... 
$r_query = mysql_query($sql); 
while ($row = mysql_fetch_array($r_query)) { ?> 

    <option value='<?= $row['client_id'];?>'> 
     <?= $row['firstname'] . " " . $row['lastname']; ?> - 
     <?= $row['city'] . ", " . $row['state']; ?> 
    </option> 

<?php }} ?> 

或者一些變化。要點是,你的PHP不必是一個連續的塊,你可以在任何時候關閉你的PHP標籤,恢復使用普通的HTML,然後打開一個新的PHP標籤並繼續循環。

此外,在上例中,<?=<?php echo的簡寫。

另外,在您的示例中,您使用的是mysql_函數,這些函數在較新版本的PHP5中已棄用,並在PHP7中刪除。最好研究一下mysqli_PDO(你也可以使用MySQL數據庫)。

最後,一旦你開始使用其中任何一種,查看準備好的語句,這將使你的代碼更好地運行/避免SQL注入。

+0

感謝您的快速回復。我打算使用mysqli和準備好的語句。我只是試圖爲整個事情鋪平道路,然後通過清理整個過程。 – inkslinger