我有两个php页面, admin_bkp.php 和 db_submit.php 。
admin_bkp.php 为用户提供一个表,让用户为员工设置权限,并将权限保存到名为权限的MySQL表中。员工信息从 hs_hr_employee 收集并保存到权限tog 以及额外的“权限”列。
最初工作时,您可以保存数据,当您刷新页面时, admin_bkp.php 会显示您之前选择的组合框中的默认值。
但是,现在它将默认值恢复为'全部',这是我不想要的。我希望它显示之前选择的值。
admin_php.bkp 会在点击'保存'按钮后保存值
这是代码: 的 admin_bkp.php
<?php
$connection = mysql_connect('localhost','admin','root');
if( isset($_POST['submit']) )
{
if( isset( $_POST['cb_change'] ) && is_array( $_POST['cb_change'] ))
{
foreach( $_POST['cb_change'] as $emp_number => $permission)
{
echo "$permission";
$sql = "UPDATE `rights` SET Permission='".mysql_real_escape_string($permission)."' WHERE emp_number='".mysql_real_escape_string($emp_number)."'";
echo __LINE__.": sql: {$sql}\n";
mysql_query( $sql );
}
}
}
?>
<p style="text-align: center;">
<span style="font-size:36px;"><strong><span style="font-family: trebuchet ms,helvetica,sans-serif;"><span style="color: rgb(0, 128, 128);">File Database - Administration Panel</span></span></strong></span></p>
<p style="text-align: center;">
</p>
<head>
<style type="text/css">
/*
http://icant.co.uk/csstablegallery/index.php?css=71
Data Tables and Cascading Style Sheets Gallery
Title: Casablanca
Author: RODrigo CASTilho Galv?o Ferreira - RODCAST
URL: http://www.rodcast.com.br
Update: 04/04/2008 10:51 AM
*/
body{
background: url('bg.gif');
}
table {
color: #666;
font: 0.8em/1.6em "Trebuchet MS",Verdana,sans-serif;
border-collapse: collapse;
background: #fff;
}
table,caption {
margin: 0 auto;
border-right: 0px solid #CCC;
border-left: 0px solid #CCC;
}
caption,th,td {
border-left: 0;
padding: 10px;
}
caption,thead th,tfoot th,tfoot td {
background-color: #216dab;
color: #FFF;
font-weight: bold;
text-transform: uppercase
}
thead th {
background-color: #666;
color: #fff;
text-align: center
}
tbody th {
padding: 20px 10px
}
tbody tr.odd {
background-color: #F7F7F7;
color: #666;
}
tbody a {
padding: 1px 2px;
color: #fff;
text-decoration: none;
border-bottom: 1px dotted #E63C1E;
background: #7bafd9;
}
tbody a:active,tbody a:hover,tbody a:focus,tbody a:visited {
color: #fff;
}
tbody tr:hover {
background-color: #EEE;
color: #333
}
tbody tr:hover a {
/*background-color: #FFF*/
color:fff;
}
tbody td+td+td+td a {
color: #fff;
font-weight: bold;
border-bottom: 0;
}
tbody td+td+td+td a:active,tbody td+td+td+td a:hover,tbody td+td+td+td a:focus,tbody td+td+td+td a:visited {
color: #fff
}
tbody td a[href="http://www.rodcast.com.br/"] {
margin: 0 auto;
display: block;
width: 15px;
height: 15px;
background: transparent url('data:image/gif;base64,R0lGODlhDwAPAIAAACEpMf///yH5BAAAAAAALAAAAAAPAA8AAAIjjA8Qer0JmYvULUOlxXEjaEndliUeA56c97TqSD5pfJnhNxYAOw%3D%3D') no-repeat;
text-indent: -999em;
border-bottom: 0;
}
tbody a:visited:after {
font-family: Verdana,sans-serif;
content: "\00A0\221A"
}
</style>
</head>
<form method="post" action="db_submit.php">
<?php
if (!$connection)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db('users', $connection);
#mysql_query('INSERT into rights(Emp_num, ID, Name, Surname) SELECT emp_number, employee_id, emp_firstname, emp_lastname FROM hs_hr_employee');
$result = mysql_query("SELECT emp_number, employee_id, emp_firstname, emp_lastname, Permissions FROM rights");
mysql_query("INSERT INTO rights (emp_number, employee_id, emp_firstname, emp_lastname)
SELECT emp_number, employee_id, emp_firstname, emp_lastname
FROM hs_hr_employee
ON DUPLICATE KEY UPDATE employee_id = VALUES(employee_id), emp_number = VALUES(emp_number)
");
$duplicates = mysql_query("SELECT emp_number, employee_id, emp_firstname, emp_lastname, count(*) FROM rights GROUP BY emp_number, employee_id, emp_firstname, emp_lastname having count(*) > 1");
$count = mysql_num_rows($duplicates);
if ($count > 0) {
while ($row = mysql_fetch_assoc($duplicates)) {
$field = $row["emp_number"];
$limit = $row["count(*)"] - 1;
mysql_query("DELETE FROM rights WHERE emp_number='$field' LIMIT $limit");
}
mysql_free_result($duplicates);
}
echo "<center>";
/*
echo "
<table >
<tr>
<th>Employee Number</th>
<th>ID</th>
<th>Name</th>
<th>Surname</th>
<th>Permissions</th>
<th>Change</th>
</tr>"; */
echo "
<table >
<tr>
<th>Employee Number</th>
<th>ID</th>
<th>Name</th>
<th>Surname</th>
<th>Permissions</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['emp_number'] . "</td>";
echo "<td>" . $row['employee_id'] . "</td>";
echo "<td>" . $row['emp_firstname'] . "</td>";
echo "<td>" . $row['emp_lastname'] . "</td>";
#echo "<td>" . $row['Permissions'] . "</td>";
echo "<td>
<select>
<option value='All'>All</option>
<option value='Remote Gaming' selected='selected'>Remote Gaming</option>
<option value='Landbased Gaming'>Landbased Gaming</option>
<option value='General Gaming'>General Gaming</option>
</select>
</td>
";
echo "</tr>" ;
echo "<input type='hidden' name='emp_id[]' value='". $row['employee_id'] ."'>";
}
$selected = $row['Permissions'];
$options = array(
"Remote Gaming",
"Landbased Gaming",
"General Gaming"
);
foreach ($options as $option){
if($option == $selected){
echo "<option value='$option' selected='selected'>$option</option>";
}else{
echo "<option value='$option'>$option</option>";
}
}
#echo "<td>" . $row['Change'] . "</td>";
echo "</table>
<p style='text-align: right;'>
<input name='Save_Btn' type='Submit' value='Save' />
</p>
</center>";
mysql_close($connection);
?>
<p style="text-align: center;">
</p>
<p style="text-align: center;">
</p>
</form>
db_submit.php:
<html>
<body>
<p>Data submitted successfully.</p>
<?php
$connection = mysql_connect('localhost','admin','root');
mysql_select_db('users', $connection);
$cbchange = $_POST['cb_change'];
$emp_id = $_POST['emp_id'];
foreach($cbchange as $a => $b){
echo $cbchange[$a] ." - ". $emp_id[$a];
echo "<br/>";
$query = "
UPDATE `rights`
SET `rights`.`Permissions`='".$cbchange[$a]."'
WHERE `rights`.`employee_id`='".$emp_id[$a]."'
";
mysql_query($query);
}
?>
</body>
</html>
以下是一些图片,可以让您大致了解设置。
原始代码:
<?php
$connection = mysql_connect('localhost','admin','root');
if( isset($_POST['submit']) )
{
if( isset( $_POST['cb_change'] ) && is_array( $_POST['cb_change'] ))
{
foreach( $_POST['cb_change'] as $emp_number => $permission)
{
echo "$permission";
$sql = "UPDATE `rights` SET Permission='".mysql_real_escape_string($permission)."' WHERE emp_number='".mysql_real_escape_string($emp_number)."'";
echo __LINE__.": sql: {$sql}\n";
mysql_query( $sql );
}
}
}
?>
<p style="text-align: center;">
<span style="font-size:36px;"><strong><span style="font-family: trebuchet ms,helvetica,sans-serif;"><span style="color: rgb(0, 128, 128);">File Database - Administration Panel</span></span></strong></span></p>
<p style="text-align: center;">
</p>
<head>
<style type="text/css">
/*
http://icant.co.uk/csstablegallery/index.php?css=71
Data Tables and Cascading Style Sheets Gallery
Title: Casablanca
Author: RODrigo CASTilho Galv?o Ferreira - RODCAST
URL: http://www.rodcast.com.br
Update: 04/04/2008 10:51 AM
*/
body{
background: url('bg.gif');
}
table {
color: #666;
font: 0.8em/1.6em "Trebuchet MS",Verdana,sans-serif;
border-collapse: collapse;
background: #fff;
}
table,caption {
margin: 0 auto;
border-right: 0px solid #CCC;
border-left: 0px solid #CCC;
}
caption,th,td {
border-left: 0;
padding: 10px;
}
caption,thead th,tfoot th,tfoot td {
background-color: #216dab;
color: #FFF;
font-weight: bold;
text-transform: uppercase
}
thead th {
background-color: #666;
color: #fff;
text-align: center
}
tbody th {
padding: 20px 10px
}
tbody tr.odd {
background-color: #F7F7F7;
color: #666;
}
tbody a {
padding: 1px 2px;
color: #fff;
text-decoration: none;
border-bottom: 1px dotted #E63C1E;
background: #7bafd9;
}
tbody a:active,tbody a:hover,tbody a:focus,tbody a:visited {
color: #fff;
}
tbody tr:hover {
background-color: #EEE;
color: #333
}
tbody tr:hover a {
/*background-color: #FFF*/
color:fff;
}
tbody td+td+td+td a {
color: #fff;
font-weight: bold;
border-bottom: 0;
}
tbody td+td+td+td a:active,tbody td+td+td+td a:hover,tbody td+td+td+td a:focus,tbody td+td+td+td a:visited {
color: #fff
}
tbody td a[href="http://www.rodcast.com.br/"] {
margin: 0 auto;
display: block;
width: 15px;
height: 15px;
background: transparent url('data:image/gif;base64,R0lGODlhDwAPAIAAACEpMf///yH5BAAAAAAALAAAAAAPAA8AAAIjjA8Qer0JmYvULUOlxXEjaEndliUeA56c97TqSD5pfJnhNxYAOw%3D%3D') no-repeat;
text-indent: -999em;
border-bottom: 0;
}
tbody a:visited:after {
font-family: Verdana,sans-serif;
content: "\00A0\221A"
}
</style>
</head>
<form method="post" action="db_submit.php">
<?php
if (!$connection)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db('users', $connection);
#mysql_query('INSERT into rights(Emp_num, ID, Name, Surname) SELECT emp_number, employee_id, emp_firstname, emp_lastname FROM hs_hr_employee');
$result = mysql_query("SELECT emp_number, employee_id, emp_firstname, emp_lastname, Permissions FROM rights");
mysql_query("INSERT INTO rights (emp_number, employee_id, emp_firstname, emp_lastname)
SELECT emp_number, employee_id, emp_firstname, emp_lastname
FROM hs_hr_employee
ON DUPLICATE KEY UPDATE employee_id = VALUES(employee_id), emp_number = VALUES(emp_number)
");
$duplicates = mysql_query("SELECT emp_number, employee_id, emp_firstname, emp_lastname, count(*) FROM rights GROUP BY emp_number, employee_id, emp_firstname, emp_lastname having count(*) > 1");
$count = mysql_num_rows($duplicates);
if ($count > 0) {
while ($row = mysql_fetch_assoc($duplicates)) {
$field = $row["emp_number"];
$limit = $row["count(*)"] - 1;
mysql_query("DELETE FROM rights WHERE emp_number='$field' LIMIT $limit");
}
mysql_free_result($duplicates);
}
echo "<center>";
/*
echo "
<table >
<tr>
<th>Employee Number</th>
<th>ID</th>
<th>Name</th>
<th>Surname</th>
<th>Permissions</th>
<th>Change</th>
</tr>"; */
echo "
<table >
<tr>
<th>Employee Number</th>
<th>ID</th>
<th>Name</th>
<th>Surname</th>
<th>Permissions</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['emp_number'] . "</td>";
echo "<td>" . $row['employee_id'] . "</td>";
echo "<td>" . $row['emp_firstname'] . "</td>";
echo "<td>" . $row['emp_lastname'] . "</td>";
#echo "<td>" . $row['Permissions'] . "</td>";
echo "<td> <select name='cb_change[]' SELECTED VALUE=".$row['Permissions'].">
<option value='All'>All</option>
<option value='Remote Gaming'>Remote Gaming</option>
<option value='Landbased Gaming'>Landbased Gaming</option>
<option value='General Gaming'>General Gaming</option>
</select> </td>";
echo "</tr>" ;
echo "<input type='hidden' name='emp_id[]' value='". $row['employee_id'] ."'>";
}
#echo "<td>" . $row['Change'] . "</td>";
echo "</table>
<p style='text-align: right;'>
<input name='Save_Btn' type='Submit' value='Save' />
</p>
</center>";
mysql_close($connection);
?>
<p style="text-align: center;">
</p>
<p style="text-align: center;">
</p>
</form>
你能指出我正确的方向吗?
答案 0 :(得分:1)
如果数据库中显示的值正确,则问题在于在另一端显示数据。根据我的理解,您希望在html选择框中输出权限列表,并将当前存储的权限设置为该用户的“已选择”,是否正确?
如果是这样,您的代码在这里:
echo "<td> <select name='cb_change[]' SELECTED VALUE=".$row['Permissions'].">
<option value='All'>All</option>
<option value='Remote Gaming'>Remote Gaming</option>
<option value='Landbased Gaming'>Landbased Gaming</option>
<option value='General Gaming'>General Gaming</option>
</select></td>";
错了。您需要将<option>
值与当前选定的值匹配,然后在其上粘贴属性。
例如:
$selected = $row['Permissions'];
$options = array(
"Remote Gaming",
"Landbased Gaming",
"General Gaming"
);
foreach ($options as $option){
if($option == $selected){
echo "<option value='$option' selected='selected'>$option</option>";
}else{
echo "<option value='$option'>$option</option>";
}
}
这应该有效。
最终编辑
下面标有“代码”的代码应放在下面:
echo "
<table >
<tr>
<th>Employee Number</th>
<th>ID</th>
<th>Name</th>
<th>Surname</th>
<th>Permissions</th>
</tr>";
代码:
$options = array(
"All",
"Remote Gaming",
"Landbased Gaming",
"General Gaming"
);
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['emp_number'] . "</td>";
echo "<td>" . $row['employee_id'] . "</td>";
echo "<td>" . $row['emp_firstname'] . "</td>";
echo "<td>" . $row['emp_lastname'] . "</td>";
#echo "<td>" . $row['Permissions'] . "</td>";
echo "<td> <select name='cb_change[]'>";
foreach($options as $option){
if($option == $row['Permissions']){
echo "<option value='" . $option . "' selected='selected'>". $option ."</option>";
}else{
echo "<option value='" . $option . "'>". $option ."</option>";
}
}
echo "</select> </td>";
echo "</tr>" ;
echo "<input type='hidden' name='emp_id[]' value='". $row['employee_id'] ."'>";
} // end while