2015-09-02 3 views
0

Я хотел бы иметь возможность удалить строку, используя кнопку delete, которая отображается в конце каждой строки. Мне нужно два запроса, чтобы удалить человека из моей базы данных, так как у меня есть связь n-m между Лицами и функциями. Запросов следующим образом:Как удалить запись из mysql с помощью кнопки?

delete from `Persons` where `Person ID` = '1'; 

Я хотел бы реализовать эти запросы с помощью удаления кнопки, содержащейся в настоящем коде, как я могу это сделать?

UPDATE: Я вносил изменения в соответствии с тем, что написал Kristian Hareland, и он перезагружается, но человек не удаляется, что нужно изменить, чтобы заставить его работать?

showall.php:

<table> 
<thead> 
    <tr> 
     <?php 
// Variables 
    $dbhost = "localhost"; 
    $dbuser = "root"; 
    $dbpass = "root"; 
    $dbname = "CISV"; 
    $dberror1 = "Could not connect to database: "; 
    $dberror2 = "Could not select database: "; 
    $dberror3 = "Could not execute query: "; 

    $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ($dberror1 . mysql_error()); 

    $select_db = mysql_select_db('CISV') or die ($dberror2 . mysql_error()); 

     $query = "SELECT p.`Person ID`, p.`First Name`, p.`Last Name`, p.Gender, p.`Date Of Birth`, p.Email, p.`Phone Number`, c.Region, c.Country, p.`Delegation ID` 
     FROM Persons as p, Chapters as c 
     WHERE c.`Chapter ID`=p.`Chapter ID` 
     ORDER BY p.`Delegation ID"; 

     $result = mysql_query($query) or die($dberror3 . mysql_error()); 
     $row = mysql_fetch_assoc($result); 
     foreach ($row as $col => $value) { 
      echo "<th>"; 
      echo $col; 
      echo "</th>"; 
     } 
     ?> 
    </tr> 
</thead> 
<tbody> 
<?php 

mysql_data_seek($result, 0); 
while ($row = mysql_fetch_assoc($result)) { 
    ?> 
    <tr> 
     <?php   
     foreach($row as $key => $value){ 
     echo "<td>"; 
     echo $value; 
     echo "</td>"; 
    } 
    ?> 
    <td><a href="/DeletePerson.php?id=<?php echo $result['Person ID']; ?>" class="btn btn-danger">Delete</a></td> 
</tr> 
<?php } ?> 

DeletePerson.php:

<?php 
$dbhost = "localhost"; 
$dbuser = "root"; 
$dbpass = "root"; 
$dbname = "CISV"; 
$dberror1 = "Could not connect to database: "; 
$dberror2 = "Could not select database: "; 
$dberror3 = "Could not execute query: "; 

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ($dberror1 .  mysql_error()); 

$select_db = mysql_select_db('CISV') or die ($dberror2 . mysql_error()); 

$UserId = mysql_real_escape_string($_GET['id']); 

if(isset($UserId)){ 
//DELETE QUERY 
$Del = mysql_query("DELETE FROM `Persons` WHERE `Person ID` = '$UserId'"); 

if($Del){ 
    $Flag = TRUE; 
} 
else{ 
    $Flag = FALSE; 
} 

header("Location: /showall.php?delete=$Flag"); 


} 
else{ 
die("Error"); 
} 
+0

где javascript –

+0

«Мне нужно два запроса, чтобы удалить человека из моей базы данных полностью, так как у меня есть связь n-m между людьми и функциями». А где ваш внешний ключ, который делает это автоматически для вас? –

+0

Я забыл добавить 'delete on cascade'. Спасибо, я сделал это сейчас. – Tom

ответ

0

Я хотел бы использовать JavaScript и Ajax здесь.

  1. Сделайте Html-кнопку с функцией onclick как delete_user();
  2. delete_user() вызывает файл .php для проверки прав и выполнения некоторых mysql-delete promts.
  3. Файл .php возвращает логическое значение для JavaScript.
  4. Вы можете поймать этот булев и сообщить пользователю о результате.
+0

К сожалению, я еще не знаю, как писать Javascript. Является ли то, что я пытаюсь делать, используя только PHP и MySQL? – Tom

+0

Вы можете «использовать» Javascript для выполнения PHP-контента без перезагрузки веб-страницы. Если это не то, что вы хотите, вы можете получить доступ к странице .php через ссылку или форму: Сделать кнопку со ссылкой «delete_user.php? Userid = ..», создать файл delete_user.php и посмотреть на $ _GET ['userid'] ... –

0

ИМХО лучший способ это создать отдельный файл functions.php

<?php 
//functions.php 
$id = filter_this($_POST[id]); 
mysql_query("delete from Persons_Functions where `Person ID` = '$id'); 
?> 

и отправить туда через JQuery:

function deleteuser(id){ 
    $.post("admin_action.php", {action:'delete_user',id:id}, function(data){ 
    if(data.trim()=="done"){ 
     console.log("OK!"); 
    }); 
}} 

Без JS Вы можете использовать HTML (просто изменить кнопки к):

<a href='script.php?action=delete&id=12'>DELETE</a> 

и PHP:

$id = $_GET[id];//filter this value 
mysqli_query($link, "DELETE FROM users WHERE ID='$id'"); //use mysqli 
0

Я хотел бы использовать метод GET для этого

<?php foreach ($results as $result): ?> 
    <a href="/index.php?action=delete&id=<?= $result['id']; ?>">Delete</a> 
<?php endforeach; ?> 

В верхней части index.php

if (isset($_GET['action']) && $_GET['action'] == 'delete') { 
    if (isset($_GET['id']) && intval($_GET['id']) != 0) { 
     $id = intval($_GET['id']); 
     $stmt = "delete from table where id='{$id}'"; 
    } 
} 
0

Просто используйте ссылку:

<tbody> 
<?php 

mysql_data_seek($result, 0); 
while ($row = mysql_fetch_assoc($result)) { 
    ?> 
    <tr> 
     <?php   
     foreach($row as $key => $value){ 
      echo "<td>"; 
      echo $value; 
      echo "</td>"; 
     } 
     ?> 
     <td><a href="/DeletePerson.php?id=<?php echo $result['Person ID']; ?>" class="btn btn-danger">Delete</a></td> 
    </tr> 
    <?php } ?> 
</tbody> 

DeletePerson.php :

+0

Код, над которым я работаю, находится в файле 'showall.php', а ID-столбец называется 'Person ID'. Поэтому я попытался адаптировать свой код для работы в моей ситуации, к сожалению, он перезагружается с человеком, который не удаляется. – Tom

+0

Tom i отредактировал его, чтобы он соответствовал вашей информации, это сработало для вас? –

+0

Только что увидел ваш ответ, я собираюсь попробовать его прямо сейчас, спасибо. – Tom