2014-02-10 3 views
0

Надеюсь, сегодня у вас все хорошо. ;)PHP - Реакция на динамически созданный «Удалить-кнопку»

Прежде всего, здесь моя проблема:

Im загрузки данных из моей таблицы базы данных динамического в HTML-таблице. Все идет нормально. Динамическая загрузка данных в моей таблице HTML работает очень хорошо ...

Теперь, я хочу проверить, нажата ли кнопка удаления, а также хотите, чтобы ID из записи, где была нажата кнопка удаления.

Таблица HTML имеет следующие значения: идентификатор, FirstName, LastName, радио-кнопки (для выбора записи, который должен быть удален позже), Delete - Кнопка (Для удаления выбранной записи)

Здесь является моим источником Код:

<?php 

$query = $con->prepare("SELECT id, vorname, nachname, herkunftsland FROM schauspieler;"); 
$query->bind_result($id, $firstname, $lastname, $city); 
$query->execute(); 

while($query->fetch()) { 

    $actor_information[$id]['id'] = $id; 
    $actor_information[$id]['firstname'] = $firstname; 
    $actor_information[$id]['lastname'] = $lastname; 
    $actor_information[$id]['city'] = $city; 
} 

?> 

<html> 
<head> 
    <title></title> 
</head> 
<body> 

<p></p> 
<h4>Actors:</h4> 
<hr /><br /> 

<!-- 
<table border="3"> 
<tr> 
    <td><input type="radio" name="1"></input></td> 
    <td><input type="radio" name="1"></input></td> 
    <td><input type="radio" name="1"></input></td> 
    <td><input type="radio" name="1"></input></td> 
</tr> 
</table> 
--> 

<form action="" method="post"> 
<table border="3"> 
    <th>id</th> 
    <th>FirstName</th> 
    <th>LastName</th> 
    <th>City</th> 
    <?php 

    foreach($actor_information as $key => $value) { 

     echo "<tr>"; 
     printf("<td>%s</td><td>%s</td><td>%s</td><td>%s</td><td><input type='radio' name='dvd_id' value='%s'></input></td><td><input type='button' name='delete_actor' value='delete'></input></td>", $value['id'], $value['firstname'], $value['lastname'], $value['city'], $value['id']); 
     echo "<tr>"; 
    } 

    ?> 
</table> 
</form> 

Может ли кто-нибудь помочь мне получить ID из выбранной записи ...? Мне просто нужно удалить запись, в которой установлен переключатель.

Надеюсь, я могу получить некоторую помощь от вас, ребята ...

С наилучшими пожеланиями & имеют хороший день, Питер

+0

Для этого вам необходимо использовать ajax и jquery – krishna

ответ

0

Что идея иметь эти 4 кнопки радио в первом ряду?

Способ, которым я реализовал это в своих приложениях, - это добавить X-образ в первый столбец каждой строки, который открывает новое всплывающее окно (возможно, после подтверждения и с неэкранированными координатами, поэтому пользователь этого не видит) который вызывает delete_record.php?id=$id -URL.

+0

Не рекомендуется использовать параметры URL при удалении данных , Google сканирует чернила и даст вам бесконечные головные боли ... –

+0

Спасибо - вы правы. Я разговаривал с интрасети, а также надеюсь, и сканеры не будут следовать ссылкам, встроенным в JS. – MBaas

0

Вы можете использовать ссылку для удаления и пометить ее как кнопку (see). Место ссылки - текущий url + параметр 'delete_resource', с номером ID строки.

В верхней части страницы проверьте, установлен ли параметр 'delete_resource' iset, и удалите строку на основе этого идентификатора.

0

Если вы дадите своей кнопке удаления атрибут «имя», он будет включен в данные сообщения. Таким образом, вы можете проверить его присутствие в должности и действовать на нем.

Следующий PHP предоставляет ввод текста и две разные кнопки отправки, каждая из которых имеет разные имена. Он также печатает содержимое $_POST, поэтому вы можете видеть, как он изменяется в зависимости от того, какую кнопку вы нажимаете.

<!DOCTYPE html> 
<html> 
<head><title>Test post!</title></head> 
<body> 

<?php var_dump($_POST); ?> 

<form method="post"> 
    <input name="test" type="text" value="Test" /> 
    <input type="submit" name="delete" value="Delete!" /> 
    <input type="submit" name="submit" value="Submit!" /> 
</form> 
</body> 
</html> 

В вашем конкретном случае, это должно быть достаточно, чтобы использовать другое имя атрибута для каждого актера, например, использовать name='delete_".$value["id"]."'" или аналогичный.

Я, кажется, неправильно понял вопрос. Если вы используете только одну кнопку удаления, введите пулю для каждой записи, а значение маркера - идентификатор удаляемой записи, вам нужно только проверить, существует ли имя кнопки удаления в $_POST, а затем использовать любой код базы данных вы используете для удаления записи, которая соответствует $_POST["dvd_id"].

0

Я бы использовал jquery ajax для этого, радио предназначено только для того, чтобы иметь один вариант с возможностью выбора, флажок - это то, что вам нужно сделать так, как вы планируете.однако, если вы считаете, что вам все равно придется щелкнуть каждую строку, было бы проще покончить с формой и добавить кнопку в каждой строке с идентификатором данных = «% s» для переноса идентификатора и пропустить через jquery. ,

<?php 
$query = $con->prepare("SELECT id, vorname, nachname, herkunftsland FROM schauspieler;"); 
$query->bind_result($id, $firstname, $lastname, $city); 
$query->execute(); 

while($query->fetch()) { 
    $actor_information[$id]['id'] = $id; 
    $actor_information[$id]['firstname'] = $firstname; 
    $actor_information[$id]['lastname'] = $lastname; 
    $actor_information[$id]['city'] = $city; 
} 

?> 


<!DOCTYPE html> 
<html> 
<head> 
    <title>Some Page Title</title> 
    <script src="//code.jquery.com/jquery-1.10.2.js"></script> 
</head> 
<body> 

<table border="3"> 
    <th>id</th><th>FirstName</th><th>LastName</th><th>City</th><th>Option</th> 
<?php 
foreach($actor_information as $key => $value) { 
    echo '<tr class="user-row">'; 
    printf('<td>%s</td><td>%s</td><td>%s</td><td>%s</td><td><button class="delete-user" data-id="%s">Delete </button></td>', $value['id'], $value['firstname'], $value['lastname'], $value['city'], $value['id']); 
    echo '<tr>'; 
} 

?> 
</table> 

<script type="text/javascript"> 
    jQuery(document).ready(function($){ 
     $('.user-row').each(function() { 
      $(this).find('.delete-user').click(function(e){ 
       var user_id = $(this).data('id'); 
       var callback = function (response) { 
         alert(response); 
         $(this).parent('.user-row').remove(); 
       } 
       delete_user(user_id,callback); 
      }); 
     }); 
    }); 

function delete_user(user_id,callback){ 
var ajax_url = "/path/to.php"; 
    $.ajax({ 
    type: "POST", 
    url: ajax_url, 
    data: { user_id:user_id }, 
    context:this, 
    success: function(response) { 
       callback(response); 
      } 
    });    
}; 
</script> 

</body> 
</html> 

Значение может быть восстановлено php с помощью $ _POST ['user_id']; и передается в mysql для удаления, но будьте осторожны с mysql-инъекцией, как метод, подобный этому, без некоторой санитарии можете открыть вашу базу данных до хакеров

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