2015-04-26 5 views
2

Я показываю информацию о пользователе в форме, использующей для каждого цикла. В каждом цикле я добавляю кнопку под информацией пользователя для удаления информации для каждого пользователя.PHP-кнопка в a для каждого цикла

<?php 
foreach($Names as $Name) 
    { 

     $dbQuery = $db->prepare("select * from user WHERE Name = ?"); 
     $dbQuery->execute(array($Name)); 
     while ($dbRow = $dbQuery->fetch(PDO::FETCH_ASSOC)) 
     { 
      $ID = $dbRow['ID']; 
      $Email = $dbRow ['Email']; 
     } 
     ?> 


    <div class="form-group"> 
    <label for="hotel_id" class=" col-sm-4 control-label">ID:</label> 
    <div class="col-sm-8 input"> 
    <input type="text" class="form-control" id="ID" name="ID[]" placeholder="Enter City Name" value="<?php echo $ID?>"> 
    </div> 
    </div> 

    <div class="form-group"> 
    <label for="Name" class="col-sm-4 control-label">Name:</label> 
    <div class="col-sm-8 input"> 
    <input type="text" class="form-control" id="Name" name="Name[]" value="<?php echo $Name?>"> 
    </div> 
    </div> 

    <div class="form-group"> 
    <label for="Email" class="col-sm-4 control-label">Email:</label> 
    <div class="col-sm-8 input"> 
    <input type="text" class="form-control" id="Email" name="Email[]" value="<?php echo $Email ?>"> 
    </div> 
    </div> 

     <div class ="form-group"> 
<label for="removeUser" class="col-sm-4 control-label"></label> 
<div class="col-sm-8"> 
<input id="removeUser" name="removeUser" type="submit" value="Remove this user" class="btn btn-danger" onclick="return confirm('Are you sure you want to completely remove this user?');"> 
</div> 
</div> 
<?php 
    } 

?> 

Я знаю, как удалить пользователей, но проблема я имею что я не могу показаться, чтобы получить идентификатор для конкретного пользователя при нажатии на кнопку. Пока мне удалось получить только последний отображаемый идентификатор или весь отображаемый идентификатор.

Любая помощь будет оценена по достоинству. Благодарю.

+0

Это происходит потому, что значения '$ ID' и' $ Email' будут меняться для каждого цикла. Поэтому значения, используемые в HTML, будут основаны на значениях, полученных в последнем запросе db. Кроме того, неэффективно, чтобы запрос выполнялся внутри цикла foreach. Попробуйте 'WHERE IN'. – kidA

ответ

3

Сначала вам нужно будет переместить скобу закрывающего контура в конец html каждой строки. Тогда я рекомендую вам сделать отделенный URL для удаления записи и изменения кнопку отправки в теге привязки (по правилам CSS вы можете сделать его похожим на кнопку), так что якорь будет:

<a href="delete.php?id=<?php echo $ID?>" class="button" onclick="return confirm('Are you sure you want to completely remove this user?');">Delete</a> 

так в бэкэнде delete.php вы будете иметь что-то вроде:

if(isset($_GET['id'])){ 
    $dbQuery = $db->prepare(sprintf("DELETE FROM user WHERE ID = %s", $_GET['id'])); 
    $dbQuery->execute(array($Name)); 
} 

Вам нужно улучшить это удалить запрос таким образом, это будет безопасно, потому что люди могут посылать вам SQL коды корыта $_GET['id']

1

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

0

Пожалуйста, добавьте идентификатор в скрытой форме в форме. Таким образом, вы можете получить идентификатор каждой формы, как обычное значение поля формы. Добавьте идентификатор к скрытому значению поля.

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