2016-07-19 2 views
0

У меня есть html повторяющиеся значения в массиве, которые мне нужно обновить до базы данных, мне нужна помощь в том, как использовать PHP-скрипт для обновления базы данных, где manid matache. Ниже мой HTML кодКак обновить значения повторяющихся полей html в базе данных mysql

<!DOCTYPE html> 
 
<html> 
 

 
<head lang="en"> 
 
    <meta chartaxt="UTF-8"> 
 
    <link href="bootstrap/css/bootstrap.min.css" rel="stylesheet"> 
 
    <script src="js/jquery.min.js"></script> 
 
    <script src="bootstrap/js/bootstrap.min.js"></script> 
 
    <title>Sample salary computation</title> 
 

 
</head> 
 

 
<body> 
 
    <form method="POST" name="regis" id="regis"> 
 
    <table align="center" border="1" width="200"> 
 
     <tr> 
 
     <th>Staff ID</th> 
 
     <th>Salary</th> 
 
     <th>Total Tax</th> 
 
     <th>Total Net Pay</th> 
 

 

 
     </tr> 
 

 
     <!--Staff 1--> 
 
     <tr data-id="STAFF/2016/001"> 
 
     <td> 
 
      <input type="text" name="staffid[]" class="staffid" value="STAFF/2016/001" readonly="readonly"> 
 
     </td> 
 
     <td> 
 
      <input type="text" name="salary[]" class="salary" placeholder="salary" value="5000"> 
 
     </td> 
 
     <td> 
 
      <input type="text" name="tax[]" class="tax" placeholder="tax" value="500"> 
 
     </td> 
 
     <td> 
 
      <input type="text" name="total[]" class="total" placeholder="total" readonly="readonly" value="4500"> 
 
     </td> 
 
     </tr> 
 

 
     <!--Staff 2--> 
 

 
     <tr data-id="STAFF/2016/002"> 
 
     <td> 
 
      <input type="text" name="staffid[]" class="staffid" value="STAFF/2016/002" readonly="readonly"> 
 
     </td> 
 
     <td> 
 
      <input name="salary[]" class="salary" type="text" placeholder="salary" value="10000"> 
 
     </td> 
 
     <td> 
 
      <input type="text" placeholder="tax" name="tax[]" class="tax" value="1000"> 
 
     </td> 
 
     <td> 
 
      <input type="text" placeholder="total" class="total" name="total[]" readonly="readonly" value="9000"> 
 
     </td> 
 
     </tr> 
 

 
     <!--Staff 3--> 
 

 
     <tr data-id="STAFF/2016/003"> 
 
     <td> 
 
      <input type="text" name="staffid[]" class="staffid" value="STAFF/2016/003" readonly="readonly"> 
 
     </td> 
 
     <td> 
 
      <input name="salary[]" class="salary" type="text" placeholder="salary" value="8400"> 
 
     </td> 
 
     <td> 
 
      <input type="text" placeholder="tax" name="tax[]" class="tax" value="400"> 
 
     </td> 
 
     <td> 
 
      <input type="text" placeholder="total" class="total" name="total[]" readonly="readonly" value="800"> 
 
     </td> 
 
     </tr> 
 

 
     <tr> 
 
     <td width="300"> 
 

 
      <input type="button" name="update" value="Update Values" class="btn btn-danger"> 
 
     </td> 
 
     </tr> 
 
    </table> 
 
    </form> 
 
</body> 
 

 
</html>

Просьба помочь. Я хочу, чтобы запрос на обновление SQL, чтобы выглядеть

"Update payroll SET salary ='".$_POST['salary']."', tax='".$_POST['tax']."', total ='".$_POST['total']."' WHERE staffid= '".$_POST['staffid']."'" 
+0

«Я хочу обновление SQL запрос на lo хорошо, как «Надеюсь, ты не будешь. Поскольку вы вставляете входные переменные HTTP непосредственно в строку SQL, не избегая ничего. Пожалуйста, используйте подготовленный оператор для запроса базы данных с использованием пользовательских входов. – feeela

ответ

2

Я рекомендовал бы переименовать имена входных, чтобы создать единый массив со всей информацией, необходимой. Используйте идентификатор персонала в виде ключей массива.

<!--Staff 1--> 
<tr data-id="STAFF/2016/001"> 
    <td> 
     <input type="text" name="staff[STAFF/2016/001][id]" class="staffid" value="STAFF/2016/001" readonly="readonly"> 
    </td> 
    <td> 
     <input type="text" name="staff[STAFF/2016/001][salary]" class="salary" placeholder="salary" value="5000"> 
    </td> 
    <td> 
     <input type="text" name="staff[STAFF/2016/001][tax]" class="tax" placeholder="tax" value="500"> 
    </td> 
    <td> 
     <input type="text" name="staff[STAFF/2016/001][total]" class="total" placeholder="total" readonly="readonly" value="4500"> 
    </td> 
</tr> 

<!--Staff 2--> 

<tr data-id="STAFF/2016/002"> 
    <td> 
     <input type="text" name="staff[STAFF/2016/002][id]" class="staffid" value="STAFF/2016/002" readonly="readonly"> 
    </td> 
    <td> 
     <input type="text" name="staff[STAFF/2016/002][salary]" class="salary" placeholder="salary" value="10000"> 
    </td> 
    <td> 
     <input type="text" name="staff[STAFF/2016/002][tax]" placeholder="tax" class="tax" value="1000"> 
    </td> 
    <td> 
     <input type="text" name="staff[STAFF/2016/002][total]" placeholder="total" class="total" readonly="readonly" value="9000"> 
    </td> 
</tr> 

В PHP вы можете перебрать этот единственный массив:

<?php 

$db = new PDO('mysql:host=localhost;dbname=database;', 'root', ''); 

if (!empty($_POST['staff'])) { 
    $stmt = $db->prepare('UPDATE payroll SET salary = :salary, tax = :tax, total = :total WHERE staffid = :staffid'); 

    foreach ((array)$_POST['staff'] as $staffId => $staffInfo) { 

     $stmt->bindValue(':salary', $staffInfo['salary']); 
     $stmt->bindValue(':tax', $staffInfo['tax']); 
     $stmt->bindValue(':total', $staffInfo['total']); 
     $stmt->bindValue(':staffid', $staffId); // you can also use $staffInfo['id'] here instead of $staffId 

     $stmt->execute(); 
    } 
} 

Смотрите также:

+0

Спасибо большое Feela. я смог сделать это, исходя из вашей рекомендации выше. Это было действительно очень полезно –

+0

@ NelsonOko-oza Было бы неплохо, если бы вы приняли этот ответ тогда (нажмите на галочку) – feeela

Смежные вопросы