我已经为用户编写了这段代码来编辑一行并在MySQL中更新它,但无论你选择了哪一行(有3行),它总是发布最后一行。
问题是什么?
<?php include("includes/db_connection.php"); ?>
<?php
global $connection;
$sid="s5";
/**select all salesman from store 5**/
$sql ="SELECT * FROM employees WHERE e_type='Salesperson' AND store_assigned='".$sid."';";
/**get the result and put into table, which can be edited by user**/
$result = mysql_query($sql);
echo "<form method='post' action='update_salesman.php'>";
echo "<table border='1'><tr><th>Employee ID</th><th>Name</th><th>Address</th><th>Email</th><th>Job Title</th><th>Store</th><th>Salary</th></tr>";
while ($row = mysql_fetch_assoc($result)) {
echo "<tr><td><input type='text' name='eid' value='".$row['eid']."' readonly /></td>";
echo "<td><input type='text' name='e_name' value='".$row['e_name']."' /></td>";
echo "<td><input type='text' name='e_addr' value='".$row['e_addr']."' /></td>";
echo "<td><input type='text' name='e_email' value='".$row['e_email']."' /></td>";
echo "<td><input type='text' name='e_type' value='".$row['e_type']."' /></td>";
echo "<td><input type='text' name='store_assigned' value='".$row['store_assigned']."'/></td>";
echo "<td><input type='text' name='e_salary' value='".$row['e_salary']."' /></td>";
echo "<td><input type ='submit' value='update' /></td></tr>";
}
echo "</table>";
echo "</form>";
print($sql);
?>
获取发布的数据,并在MySQL数据库中更新:
<?php include("includes/db_connection.php"); ?>
<?php
$eid = $_POST['eid'];
$ename = $_POST['e_name'];
$eaddr = $_POST['e_addr'];
$eemail = $_POST['e_email'];
$etype = $_POST['e_type'];
$estore = $_POST['store_assigned'];
$esalary = $_POST['e_salary'];
$sql = "UPDATE employees SET e_name='" . $ename . "', e_addr='" . $eaddr . "', e_email='" . $eemail . "', e_type='" . $etype . "', store_assigned='" . $estore . "', e_salary='" . $esalary . "' WHERE eid='" . $eid . "' ;";
$result = mysql_query($sql);
print("</br>" . $sql);
?>
结果总是这样:
UPDATE employees SET e_name='Norah ', e_addr='111 Melwood,PA', e_email='anorahm@gmiil.com', e_type='Salesperson', store_assigned='s5', e_salary='4000.00' WHERE eid='e334' ;
答案 0 :(得分:1)
你的问题是双重的。首先,在生成HTML代码时,使用while循环来回显字段。请注意,每次循环运行时,这些字段的名称都相同。 (您可以在生成的HTML(源代码)中看到这一点。请注意,在提交时,将发布多个同名字段中的一个。
其次,在PHP表单处理程序代码中,您阅读发布数据,然后执行一个更新查询,而您可能希望更新多个字段。
解决此问题的最简单方法是确保HTML表单中的字段名称对于每个行都不同,并在更新sql表时使用循环结构,以便更新每一行。
答案 1 :(得分:0)
即使它在html方面显得很好,但是当它获得表格时,它清楚地知道服务器端发生了什么
当服务器获取表单时,它只会看到最后一条记录,因为每条记录都会覆盖之前的值,导致只从最后一条记录中获取数据
您可以做的是为每组值赋予自己的形式(不建议)。但是使用这种方法,您可以将代码保持原样,只需将表单标记移动到while循环中即可。或者将输入名称写为e_name []等。
通过这种方式,它将作为一个数组传递给服务器,您可以循环访问以获取所有值
在服务器端,要获取数组,您可以执行类似
的操作$e_names = $_POST['e_name']; //Value will be an array