2011-09-28 59 views
0

我有兩個php頁面,admin_bkp.phpdb_submit.phpComboboxes沒有更新

admin_bkp.php給用戶,它可以讓用戶設置權限爲員工和權限保存到一個MySQL表的表稱爲權利。員工信息從hs_hr_employee收集並保存到權限以及附加'權限'列。

剛開始工作時,您可以保存數據,當您刷新頁面時,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

如果正確的值顯示在數據庫中,那麼你的問題是在另一端顯示數據。據我所知,你想輸出一個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>"; 
    } 
} 

這應該工作。

FINAL EDIT

下面的代碼標記爲 '代碼' 應被置於下方:

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 
+0

所以我基本上替換代碼片段與所述一個你給了我? – Brian

+0

我試過的是這個,但它顯示了多個組合框,我不想要的東西。我想要的是一個組合框,默認情況下顯示以前選擇的選項。我更新了主要問題中的代碼,以便了解我所做的工作。 – Brian

+1

我給你的代碼循環訪問每個權限(存儲在數組中),併爲每個權限輸出一個