组合框不更新

时间:2011-09-28 07:30:43

标签: php mysql list combobox

我有两个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;">
    &nbsp;</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;">
    &nbsp;</p>
<p style="text-align: center;">
    &nbsp;</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>

以下是一些图片,可以让您大致了解设置。

enter image description here enter image description here

原始代码:

   <?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;">
    &nbsp;</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;">
    &nbsp;</p>
<p style="text-align: center;">
    &nbsp;</p>

</form>

你能指出我正确的方向吗?

1 个答案:

答案 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