Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Update записей по id
Форумы портала PHP.SU » » Работа с СУБД » Update записей по id

Страниц (1): [1]
 

1. alex221 - 26 Августа, 2016 - 01:22:37 - перейти к сообщению
Всем привет, прошу помощи, задача: редактировать записи.

PHP:
скопировать код в буфер обмена
  1.  
  2. $fields_change = "";
  3. $field_status_stmt = DBC::db()->query($req_read);
  4. while ($field = $field_status_stmt->fetch()) {
  5. $fields_change .= "
  6. <input type='hidden' value='{$field['id']}' name='log_id'><input type='text' id='status_c' name='status_c' value='{$field['cargo_status']}'><br>";
  7. }
  8. if (isset($_POST['status_edit'])) {
  9. $sql = "UPDATE logs SET cargo_status='{$_POST['status_c']}' WHERE id='{$_POST['log_id']}'";
  10. $stmt = DBC::db()->prepare($sql);
  11. $stmt->execute();
  12. $info_message .= "<div class=\"alert alert-success\" role=\"alert\">Статус груза успешно обновлен!</div>";
  13. }
  14. return array(
  15. 'status_fields' => $fields_change
  16. );
  17.  

Все выводится сюда
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <tr>
  3. <td>Статус</td>
  4. <td>
  5. <form method="post">
  6. <?php echo $data['status_fields']; ?>
  7. <input type="submit" name="status_edit" value="Изменить">
  8. </form>
  9. </td>
  10. </tr>
  11.  

Изменяется только самый последний сгенерированный input(ближе всего к submit)...
Можно конечно засунуть в генератор и form и submit, тогда все работает но у каждого поля свой сабмит, который соответственно перезапишет только его, тупо... )
Помогите пожалуйста Улыбка
2. Faraon-san - 26 Августа, 2016 - 10:55:53 - перейти к сообщению
Тут правда транзакцию использовал, если тип базы поддерживает, то все ок.
PHP:
скопировать код в буфер обмена
  1. $fields_change = array();
  2. $info_message = '';
  3. $field_status_stmt = DBC::db()->query($req_read);
  4. while($field = $field_status_stmt->fetch())
  5. {
  6.         $fields_change[] = '<div><input type="hidden" value="'.$field['id'].'" name="log_id[]"><input type="text" name="status_c[]" value="'.$field['cargo_status'].'"></div>';
  7. }
  8. if(isset($_POST['status_edit']))
  9. {
  10.         try{
  11.                 DBC::db()->beginTransaction();
  12.                 foreach($_POST['status_c'] as $index => $status)
  13.                 {
  14.                         $status = DBC::db()->quote($status);
  15.                         $id = DBC::db()->quote($_POST['log_id'][$index]);
  16.                         $sql = "UPDATE `logs` SET `cargo_status` = {$status} WHERE `id` = {$id}";
  17.                         DBC::db()->exec($sql);
  18.                 }
  19.                 DBC::db()->commit();
  20.                 $info_message = '<div class="alert alert-success" role="alert">Статус груза успешно обновлен!</div>';
  21.         }catch(PDOException $e){
  22.                 DBC::db()->rollback();
  23.                 $info_message = '<div class="alert alert-success" role="alert">Неудача!</div>';
  24.         }
  25. }
  26. return array( 'status_fields' => join(PHP_EOL, $fields_change), 'info_message' => $info_message );
3. alex221 - 27 Августа, 2016 - 18:03:06 - перейти к сообщению
Спасибо большое!!! Чутка поправил и вообще огонь Улыбка Жаль спасибки не могу дать, мало сообщений)

 

Powered by ExBB FM 1.0 RC1