2012-02-01 110 views
1

嘿傢伙即時通訊具有帶陣列的麻煩。我需要的是查詢到基於記錄ID更新表2列多個更新陣列查詢出錯:(

表有一個名爲OffID列它會查找任何尚未被授權的記錄,爲了標記授權,用戶將選擇授權或拒絕的複選框,然後按下提交按鈕,但目前我有9個記錄,每個記錄顯示在表中有自己的唯一ID,但是當提交被選中時,它只會更新一個。任何幫助顯示出錯的地方將是感激和歡呼提前:)

好吧我編輯的代碼,但它現在只設置冷杉t記錄。因此,如果有8條記錄,我選擇接受的第一條記錄,並拒絕對第二個記錄同時接受和拒絕被設定爲第一個記錄在數據庫中我的新代碼如下

<?php 
    $path = $_SERVER['DOCUMENT_ROOT']; 
    $path .= "/Apollo/dbc.php"; 
    include_once($path); 
    $rs_results = mysql_query("SELECT * FROM off WHERE IsItAuthorised='0' and isitsick='0' ORDER BY DayOff"); 
    ?> 
    <html> 
    <head> 
    <title>Administration Main Page</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    <?php 
    if (isset($_POST['submit'])) { 
     //Assign each array to a variable 
     $id = $_POST['id']; 
     $approve = $_POST['approve']; 
     $deny = $_POST['deny']; 
     $limit = count($rs_results); 
    $values = array(); // initialize an empty array to hold the values 
     for($k=0;$k<$limit;$k++){ 
     $msg[] = "$limit New KPI's Added";     
       $query = "UPDATE off SET Authorised = '$approve[$k]', Deny = '$deny[$k]' WHERE OffID = '$id[$k]'"; 
     }  
     $Event = "INSERT INTO events (UserName, Event) VALUES ('$_SESSION[user_name]', 'Entered New KPI')"; 
echo $query; 
    if (!mysql_query($query,$link)){ 
      die('Error: ' . mysql_error()); 
     } else { 

      mysql_query($Event); 
      echo "<div class=\"msg\">" . $msg[0] . "</div>"; 
     } 
     }        
    ?> 
    </head> 

    <body> 
    <table width="100%" border="0" cellspacing="0" cellpadding="0"> 
     <tr> 
     <td width="14%" valign="top"><?php 

    ?> 

     </td> 
     <td width="74%" valign="top" style="padding: 10px;"> 

      <p><?php 
      if(!empty($msg)) { 
      echo $msg[0]; 
      } 
      ?></p> 

      <p> 
      <?php 
      $cond = ''; 
      $sql = "select * from off ";   
      $rs_total = mysql_query($sql) or die(mysql_error()); 
      $total = mysql_num_rows($rs_total);   
      ?>   
      <p> 
      <form name "searchform" action="/Apollo/Admin/HolidayRequests.php" method="post"> 
      <table width="100%" border="0" align="center" cellpadding="2" cellspacing="0"> 
       <tr class="mytables"> 
       <td width="4%"><font color="white"><strong>ID</font></strong></td> 
       <td width="4%"> <font color="white"><strong>Staff Member</font></strong></td> 
       <td width="10%"><font color="white"><strong>Day Off</font></strong></div></td> 
       <td width="10%"><font color="white"><strong>Is It Authorized</font></strong></div></td> 
       <td width="15%">&nbsp;</td> 
       </tr> 
      <tr> 
       <td>&nbsp;</td> 
       <td width="10%">&nbsp;</td> 
       <td width="17%"><div align="center"></div></td> 
       <td>&nbsp;</td> 
       </tr> 
       <?php while ($rrows = mysql_fetch_array($rs_results)) {?> 
       <tr> 
       <td><input name="id[]" id="id[]" size="4" value="<?php echo $rrows['OffID'];?>" /></td> 
       <td><?php echo $rrows['StaffMember']; ?></td> 
       <td><?php echo date('d/m/Y', strtotime($rrows['DayOff']));?></div></td> 

       <td> <span id="approve<?php echo $rrows['id']; ?>"> 
        <?php if(!$rrows['IsItAuthorised']) { echo "Pending"; } else {echo "Authorized"; }?> 
        </span> </td> 

        <td> 
       <input type="checkbox" name="approve[]" id="approve[]" value="1"> Approve 
       <input type="checkbox" name="deny[]" id="deny[]" value="1"> Deny 


      </td> 
       </tr> 

       <?php } ?> 
      </table> 
       <input name="submit" type="submit" id="submit" value="Submit"> 
      </form> 
      &nbsp;</p> 
      <?php 
      ?> 
      <p>&nbsp;</p> 
      <p>&nbsp;</p> 
      <p>&nbsp;</p> 
      <p>&nbsp;</p></td> 
     <td width="12%">&nbsp;</td> 
     </tr> 
    </table> 
    </body> 
    </html> 
+0

請刪除不必要的空格,而把代碼,特別是行 - 空白.. :) – 2012-02-01 12:38:44

+0

我個人會改變這個,所以它沒有列出每一條記錄,並在同一時間發佈。我建議從審批過程中分離歷史記錄顯示,並且只在編輯時更新單個記錄。隨着時間的推移,它的表現會變得非常糟糕,每年有100人蔘加2.8k。它可能會開始達到郵政大小限制,因爲它會在每次修改時發送整個表格,並且更新速度很慢。我還會注意到,加強SQL注入是明智的做法,因爲它可能會刪除整個數據庫。 – corrodedmonkee 2012-02-01 13:13:32

+0

它只提取未經授權的記錄,每天查看,通常只有大約5條記錄。我只是需要它看看它目前在哪個ID和張貼到 – slowie 2012-02-01 13:26:12

回答

0

任何<input name="id[]"/>是不是因爲你的$ id等不傳遞一個數組:

$id = $_POST['id']; 
$approve = $_POST['approve']; 
$deny = $_POST['deny']; 
0

您使用$_POST['id']但無處在你<form/>我看這可以提供數據

+0

可以沒有人幫助這個? – slowie 2012-02-01 20:23:52