2015-08-30 4 views
1

Выглядит просто, но может быть, я что-то пропускаю.
Форма не соответствует правильному значению из datatable

(document).ready(function(){ 
 
      $('#data').dataTable(); 
 
    }

if (isset ($_POST ['deleteUser'])) 
{ 
    echo "<p>Received the form data</p>"; 
    echo $_POST['hidden']; 
} 

<form action="" method="post"> 
<table id="data"> 
    <thead> 
    <tr> 
     <td>First Name</td> 
     <td>Delete Name</td> 
     <td>Email</td> 
     <td></td> 
    </tr> 
    </thead> 
    <tbody> 
     <?php 
     $cursor=$collection->find(); 
     foreach ($cursor as $document) { 
     ?> 
     <tr> 
     <td class='First_Name'> 
      <?php echo $document [ "First_Name"]; ?> 
     </td> 
     <td class='Last_Name'> 
      <?php echo $document [ "Last_Name"]; ?> 
     </td> 
     <td class='Email'> 
      <?php echo $document [ "Email"]; ?> 
     </td> 
     <td> 
      <input type="hidden" name=hidden value='<?php echo $document ["First_Name"]; ?>'> 
      <input type="submit" value="Delete" name="deleteUser"> 
     </td> 
     </tr> 
     <?php }?> 
    </tbody> 
</table> 
</form> 

Здесь я пытаюсь отправить значение из таблицы в код PHP на той же странице. Когда я нажимаю кнопку «Удалить», он всегда отправляет первое имя последней строки.

Что заставляет форму отправлять только последнюю строку при нажатии кнопки? Как передать значение скрытого тега для строки, в которую нажата кнопка удаления?

FYI: Я включил DataTable для таблицы.

+0

У вас есть имя = скрытый вместо имени = "скрытый" в вашей форме? Если ваш ответ «да», то смените имя = hidden на name = «hidden» – Rehmat

+0

Вопросы или проблемы с ответом? – chris85

+0

Пробовал сменить имя = скрытый на name = "hidden". не повезло :( –

ответ

1

Ваша форма не в том месте и у вас есть только одна форма у всех пользователей сайта. Попробуйте это, что даст вам форму для каждого пользователя.

<table id="data"> 
    <thead> 
    <tr> 
     <td>First Name</td> 
     <td>Delete Name</td> 
     <td>Email</td> 
     <td></td> 
    </tr> 
    </thead> 
    <tbody> 
     <?php 
     $cursor=$collection->find(); 
     foreach ($cursor as $document) { 
     ?> 
<form action="" method="post"> 
     <tr> 
     <td class='First_Name'> 
      <?php echo $document [ "First_Name"]; ?> 
     </td> 
     <td class='Last_Name'> 
      <?php echo $document [ "Last_Name"]; ?> 
     </td> 
     <td class='Email'> 
      <?php echo $document [ "Email"]; ?> 
     </td> 
     <td> 
      <input type="hidden" name=hidden value='<?php echo $document ["First_Name"]; ?>'> 
      <input type="submit" value="Delete" name="deleteUser"> 
     </td> 
     </tr> 
</form> 
     <?php }?> 
    </tbody> 
</table> 

Также обратите внимание, что удаление пользователей (пользователей) по имени звучит опасно для меня. Я удалю по id или email.

Пример функции вашего текущего сценария, поэтому у вас есть abc123.php и отправьте ему GET с ?a=1&a=2&a=3&a=4&a=5. Вы не получите 1, 2, 3, 4 и 5, потому что все они имеют одинаковое имя. Каждая итерация перезаписывает предыдущее, поэтому, если были выполнены print_r($_GET);, будет выведено Array ([a] => 5).

+0

Спасибо @ Chris85 для предложений. Я попытался это раньше, форма не получает подается, если я поместить теги формы между тегами. Есть мысли? Кроме того, я не удалив пользователя на основе имени, это был всего лишь пример. –

+0

Если это решило вашу проблему, обязательно подтвердите это, http://meta.stackexchange.com/questions/5234/how-does-accepting-an- ответить на-работу. – chris85