Cum să ștergi un rând specific dintr-un tabel de bază de date
Aici am creat o pagină de profil personalizată bazată pe utilizatorul autentificat pentru a verifica doar datele introduse de acesta într-o bază de date personalizată.
Poți observa că pentru fiecare rând am adăugat un buton "Șterge" fără codul corespunzător.
Totul funcționează bine, cu excepția părții în care vreau să adaug o funcție pentru ștergerea înregistrării. Probabil $wpdb->delete() îmi va rezolva problema.
Acesta este codul meu:
if ( is_user_logged_in() ) {
global $wpdb;
$current_user = wp_get_current_user();
$username = $current_user->user_login;
$reservations = $wpdb->get_results($wpdb->prepare("SELECT * FROM
SaveContactForm7_1 WHERE user = %s", $username));
echo "<div align='center'>";
echo "<table class='responsive-table'>";
echo "<caption>Lista rezervărilor</caption>";
echo "<thead>";
echo "<tr>";
echo "<th scope='col'>Nume</th>";
echo "<th scope='col'>ID</th>";
echo "<th scope='col'>Calitate</th>";
echo "<th scope='col'>Sosire</th>";
echo "<th scope='col'>Nr Vol</th>";
echo "<th scope='col'>Ora Aterizare</th>";
echo "<th scope='col'>Proveniență</th>";
echo "<th scope='col'>Plecare</th>";
echo "<th scope='col'>Nr Vol</th>";
echo "<th scope='col'>Ora Decolare</th>";
echo "<th scope='col'>Destinație</th>";
echo "<th scope='col'>Hotel</th>";
echo "<th scope='col'>Cameră</th>";
echo "<th scope='col'>Total</th>";
echo "<th scope='col'>Modifică</th>";
echo "<th scope='col'>Șterge</th>";
echo "</tr>";
echo "</thead>";
foreach($reservations as $reservation){
echo "<tbody>";
echo "<tr>";
echo "<th scope='row'>".$reservation->nom."</th>";
echo "<td data-title='ID'>".$reservation->user."</td>";
echo "<td data-title='Calitate'>".$reservation->qualite."</td>";
echo "<td data-title='Sosire'>".$reservation->datearrivee."</td>";
echo "<td data-title='Nr Vol'>".$reservation->num_vol_arrivee."</td>";
echo "<td data-title='Aterizare'>".$reservation->heure_atterrissage."
</td>";
echo "<td data-title='Proveniență'>".$reservation->provenance."</td>";
echo "<td data-title='Plecare'>".$reservation->datedepart."</td>";
echo "<td data-title='Nr VOL'>".$reservation->num_vol_depart."</td>";
echo "<td data-title='Decolare'>".$reservation->heure_decollage."
</td>";
echo "<td data-title='Destinație'>".$reservation->destination."
</td>";
echo "<td data-title='Opțiune'>".$reservation->choix."</td>";
echo "<td data-title='Cameră'>".$reservation->typech."</td>";
echo "<td data-title='Preț Total' data-type='currency'>".$reservation-
>calculated_choix."</td>";
Și aici partea cu "Șterge":
echo "<td align='center'>
<a href='?delete_id=".$reservation->id."' onclick='return confirm(\"Sigur doriți să ștergeți această înregistrare?\")'>
<img class='icon' width='16' height='16' src='../remove-icon.png' alt='Șterge înregistrare' title='Șterge'></a>
</td>";
echo "</tr>";
echo "</tbody>";
}
echo "</table>";
echo "</div>";
// Adăugăm logica de ștergere
if(isset($_GET['delete_id'])) {
$wpdb->delete('SaveContactForm7_1', array('id' => $_GET['delete_id']));
echo "<script>window.location.href=window.location.pathname;</script>";
}
}

Da, poți folosi wpdb pentru a șterge înregistrarea din tabela personalizată. Iată un exemplu de funcție în WordPress:
require_once ('../../../../wp-load.php');
if (!empty($_POST['id'])) {
global $wpdb;
$table='nume_tabel';
$id = $_POST['id'];
$wpdb->delete( $table, array( 'id' => $id ) );
}

partea client -> utilizatorul apasă butonul/linkul de ștergere
AJAX -> trimite această acțiune de la partea client către partea server pentru a executa funcția PHP care șterge rândul corespunzător din baza de date
partea server -> funcție pentru ștergerea rândului din baza de date
$wpdb->delete()
succes AJAX -> ascunde acest rând din pagina client și actualizează doar această parte a paginii
verifică acest link
