2016-02-25 92 views
0

我对PHP和MySQL仍然很陌生,但是我正在制作一个数据库,同时使用我可以从本书中获得的所有信息。我试图创建一个员工数据库,您可以添加人员,按名称搜索,然后删除刚刚搜索的人员。最后一部分是我遇到一些重大问题的地方。我知道如何通过使用sql查询来删除特定的员工,但我不知道如何从最后搜索到的员工处传递信息,然后将其删除。我将包括搜索雇员的代码,然后包括我的删除页面,因为我非常确定的其他页面是正确的。PHP员工数据库

PHP代码

<?php 
echo "<h2>Search Results:</h2><p>"; 
$find = $_POST['find'] 

mysql_connect('localhost', 'username', 'password'); 
mysql_select_db('employedatabase'); 

$find = strtoupper($find); 
$find = strip_tags($find); 
$find = trim($find); 

$EmployeeName = mysql_query("SELECT * FROM employee_data WHERE upper($EmployeeName) LIKE '%$find%'"); 
while ($result = mysql_fetch_array($EmployeeName)) 
{ 
    echo $result['employee_name']; 
    echo "<br>"; 
} 
$anymatches = mysql_num_rows($EmployeeName); 
if ($anymatches == 0) 
{ 
    echo "Sorry, but we could not find that employee...<br><br>"; 
} 
echo "<b>Searched For:</b> " . $find; 
?> 

HTML代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <title>Employee Results</title> 
</head> 
<body> 
<h2>Employee Results</h2> 
<form name="Delete" method="POST" action="delete.php"> 
    Delete Employee: <input type="text" name="find"/> 
    <input type="submit" name="Delete" value="Delete"/> 
</form> 
</body> 
</html> 

Delete.php代码

<?php 
mysql_connect('localhost', 'username', 'password'); 
mysql_select_db('employedatabase'); 

$find = $_POST['find']; 

$strSQL = "DELETE * FROM employee_data WHERE employee_name = $find"; 
header("Location: Home.html"); 
?> 
+2

请使用'mysqli_'功能在'mysql' ...其实,你的书是非常有可能陈旧和被认为的弊端 – bear

+0

我认为一个更简单的方法是在搜索结果中包含员工ID,然后将相同的ID传递给删除页面。你在删除查询中使用该ID。 – Maximus2012

+3

哪本书会告诉你这样做? 'WHERE employee_name = $ EmployeeName' –

回答

0

首先,$找到必须声明为$find = $_GET['find']并在其顶部,您应该使用method="POST"而不是method="GET"由于许多原因(即,即:安全)。

此外,您的SQL查询不正确。 SELECT * FROM employee_data WHERE upper($EmployeeName) [...]应该是SELECT * FROM employee_data WHERE upper(employee_name) [...]

你也应该使用mysqli代替mysql,也许还有其他问题(DB类中的数据库文件和呈现类中的东西),但正如你所说的那样..你是新手,你正在努力学习; )

另外,在你的删除表单中,你只有一个信息被转移(大部分)到你的php页面:<input type="text" name="find"/>。你的PHP页面正在等待更多:employee_name,employee_address等..

希望这有助于:)

+0

好吧所以(是的,我仍然是一个noob)如果我改变方法为POST,这意味着$ find = $ _GET ['find']应该改为$ find = $ _POST ['find']吧? – Wolfenacht

+0

正确:) GET参数将显示在URL中,而POST参数隐藏。 –