Historia usuniętych rekordów

0

Hej mam stworzoną stronę panelu administracyjnego dla głownej strony internetowej, w które zwykly użytkownik(administrator) nie bedący informatykiem może dodawać, usuwać i edytować rekordy. Panel jest w postaci tabeli, i potrzebuje dodać taką opcje to gdy administrator usunie rekord (czyli cały wiersz tabeli) to może wejść na strone historia rekordów i ten wiersz sie tam pojawi. Próbowałem coś takiego:

[HTML] pobierz, plaintext

    <html>
     <head>
      <meta charset="utf-8">
      <title>Historia usuwania</title>
     </head>
     <body>
      <center>
     <h1>Rekordy usunięte z bazy</h1>
      <table summary= TEST, id=tabela>
       <tr>
              <th>Id</th><th>Typ Osłonki</th><th>Dodatek Typu Osłonki</th><th>Kolor</th><th>Kaliber</th><th>Pakowanie</th><th>Dodatki</th><th>Ilość m.b (cm.b)</th><th>Gatunek</th><th>Edycja</th><th>Usuń</th>
       </tr>
    <?php
    include('polacz.php');
    if ($sql = $mysqli->prepare( "DELETE FROM oslonki WHERE id = ?;" ))

            {
                    echo "<tr>
                            <td>$id</td>
                            <td>$typ_oslonki$typ_oslonki_opis</td>
                            <td>$dod_typ_oslonki$dod_typ_oslonki_opis</td>
                            <td>$kolor$kolor_opis</td>
                            <td>$kaliber</td>
                            <td>$pakowanie$pakowanie_opis</td>
                            <td>$dodatki$dodatki_opis</td>
                            <td>$metry$metry_opis</td>
                            <td>$gatunek$gatunek_opis</td>
                            <td><a href=\"przywroc.php?id=$id\">Przywróć</a></td>
                     </tr>";
            }
            $sql->close();

    //else die( "Błąd w zapytaniu SQL! Sprawdź kod SQL w PhpMyAdmin." );

     $mysqli->close();
    ?>
      </table>

      <a href="index1.php">Powrót do panelu administratora</a>
      </center>
     </body>
    </html>
1

Jak zrobisz DELETE z bazy, to nie ma szans (na twoim poziomie zaawansowania), by pokazać to, co zostało usunięte...

0

No właśnie tylko czy ja to dobrze rozumuje bo skoro usunę rekord to jego już nie bedzie w bazie wiec musze zrrboić jakieś zapytanie do id usunietego rekord aby mi wyswietliło to co usunąłem w panelu administratora?

1

Jeśli chcesz zrobić sobie historię usuwanych rekordów to zastosuj soft delete, czyli zwyczajnie zrób dodatkową kolumnę o nazwie deleted typu bit, którą będziesz ustawiał na 1 jeśli będziesz chciał usunąć rekord. Możesz pokusić się o jeszcze jedną kolumnę, w której przechowałbyś datę ustawienia flagi na 1; i już masz historię. Ot ustawiasz datę na getdate() i flagę na 1 i masz.

Trzeba tylko pamiętać o tym, żeby pomijać rekordy z flagą 1 przy selectach czy joinach etc...

0

Wygląda to mniej wiecej tak:
https://images84.fotosik.pl/1097/a6937e4161fb5a60gen.jpg

a plik usun.php:

<?php
include('polacz.php');
$id = wczytaj("id");
if ($sql = $mysqli->prepare( "DELETE FROM oslonki WHERE id = ?;" ))
{
 $sql->bind_param( "i",  $id);
 $sql->execute();
 $sql->close();
}
$mysqli->close();
header ("Location: //localhost/test/index1.php" );
?>
0
grzesiek51114 napisał(a):

Jeśli chcesz zrobić sobie historię usuwanych rekordów to zastosuj soft delete, czyli zwyczajnie zrób dodatkową kolumnę o nazwie deleted typu bit, którą będziesz ustawiał na 1 jeśli będziesz chciał usunąć rekord. Możesz pokusić się o jeszcze jedną kolumnę, w której przechowałbyś datę ustawienia flagi na 1; i już masz historię. Ot ustawiasz datę na getdate() i flagę na 1 i masz.

Trzeba tylko pamiętać o tym, żeby pomijać rekordy z flagą 1 przy selectach czy joinach etc...

A co to znaczy "datę ustawienia flagi na 1"?

0

A co to znaczy "datę ustawienia flagi na 1"?

Np:

UPDATE Product 
SET Deleted = 1, DeletionDate = getdate() 
WHERE Id = 3
0

stworzyłem kolume deleted tak jak mówiłeś, ino ja chce aby każdy rekord był usuwalny to mam każdemu nadać 1 jako oznaczenie do usunięcia??

0

Tak, na tym polega soft delete. Jedynka to nie jest oznaczenie do usunięcia tylko usunięty rekord. Po prostu nie prezentujesz tych rekordów w aplikacji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0