2015-09-12 3 views
0

У меня есть содержимое, сгенерированное с помощью базы данных в таблице с кнопками редактирования и удаления в форме в конце строки.Зачем удалять пустые кнопки редактирования кнопки редактирования

<td> 
    <form action="?" method="post"> 
     <div class=""> 
      <input type="hidden" name="id" value="<?php htmlspecialchars($item['id']); ?>"> 

      <input type="hidden" name="action" value="edit_daily_shift_report"> 
      <input type="submit" value="Edit" onclick="return confirm('Edit this report?');"> 

      <input type="hidden" name="action" value="delete_daily_shift_report"> 
      <input type="submit" value="Delete" onclick="return confirm('Delete this report?');"> 
     </div> 
    </form> 
</td> 

Если я удаляю кнопку удаления, код редактирования работает нормально. Но при наличии обеих кнопок кнопка редактирования выходит из строя, и элемент в строке удаляется. Я в тупике. Мало того, что значение действия кнопки редактирования игнорируется, выполняется действие значения кнопки удаления. Любая помощь приветствуется!

Вот контроллер редактировать и удалять код:

/*********************** Edit Daily Shift Report ************************/ 
if (isset($_POST['action']) && $_POST['action'] === 'edit_daily_shift_report') 
{ 
    include '../includes/dbconnect-local.php'; 

    try 
    { 
     $sql = 'SELECT * FROM daily_shift_report WHERE id = :id'; 
     $s = $db->prepare($sql); 
     $s->bindValue(':id', $_POST['id']); 
     $s->execute(); 
    } 
    catch (PDOException $e) 
    { 
     $error = 'Error deleting data.' . $e->getMessage(); 
     include 'error.html.php'; 
     exit(); 
    } 

    // Assign page title value 
    $pageTitle = 'Edit Daily Shift Report'; 

    // Store single row resut in $item associative array 
    $item = $s->fetch(PDO::FETCH_ASSOC); 

    // Display report content in form 
    include 'edit_daily_shift_report.html.php'; 
    exit(); 
} 

/********************* Delete from Daily Shift Report *******************/ 
if (isset($_POST['action']) && $_POST['action'] === 'delete_daily_shift_report') 
{ 
    include '../includes/dbconnect-local.php'; 

    try 
    { 
     $sql = 'DELETE FROM daily_shift_report WHERE id = :id'; 
     $s = $db->prepare($sql); 
     $s->bindValue(':id', $_POST['id']); 
     $s->execute(); 
    } 
    catch (PDOException $e) 
    { 
     $error = 'Error deleting data.' . $e->getMessage(); 
     include 'error.html.php'; 
     exit(); 
    } 

    echo '<span style="color:#ff0000;">Daily Shift Report DELETED successfully!</span>'; 
} 

Спасибо.

ответ

0

Вам нужно понять, как работает почтовый запрос. Как вы знаете, у вас есть два поля action, один для удаления и один для редактирования. Ваша проблема заключается в том, что не существует никаких специальных полей ввода Connecticut для разных кнопок.

Я бы предпочел, чтобы вы задали имя кнопок action и значение в качестве значения, которое вы уже используете для скрытых полей. С этим вы также должны внести незначительные изменения в свой html. Вместо того, чтобы:

<input type="submit" value="something" onclick="something"> 

Используйте это:

<button name="action" value="edit" onclick="something">Edit</button> 

И то же самое для удаления кнопки

При использовании button тег вместо input, вы можете установить значение для кнопки, которая отличается от дисплея, что делает его более чистым PHP-кодом при проверке значения $_POST['action'] после этого

+0

Одна вещь, о которой я забыл упомянуть. Когда у вас есть поля с тем же именем, значение будет перезаписано следующим одноименным именем. Единственное исключение - если вы используете [] в имени. Php видит, что ås массив и сделает это поле и массив для вас – Morten

+0

Спасибо @Morten! Извините за мою задержку в ответе. Спасибо, что нашли время, чтобы взглянуть на это. Я решил его до вашего решения, создав две формы и поместив каждый в свой собственный . Это не казалось лучшим решением, но это сработало. Однако ваше решение лучше, и я использовал его здесь и в других местах. Использование

+0

Без проблем, просто рад помочь :) @ JimB814 – Morten

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