2017-03-16 140 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