Come eliminare una riga specifica in una tabella del database
Ho creato una pagina profilo personalizzata basata sull'utente attualmente loggato per visualizzare solo i suoi dati inseriti in un database personalizzato.
Come puoi vedere, in ogni riga ho aggiunto un pulsante "Elimina" ma manca il codice appropriato per la funzionalità.
Tutto funziona correttamente tranne quella parte in cui voglio aggiungere la funzione per eliminare il record. Forse $wpdb->delete() può risolvere il mio problema.
Questo è il mio codice:
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 delle prenotazioni</caption>";
echo "<thead>";
echo "<tr>";
echo "<th scope='col'>Nome</th>";
echo "<th scope='col'>ID</th>";
echo "<th scope='col'>Qualità</th>";
echo "<th scope='col'>Arrivo</th>";
echo "<th scope='col'>N° Vol</th>";
echo "<th scope='col'>Ora Arr</th>";
echo "<th scope='col'>Prov</th>";
echo "<th scope='col'>Partenza</th>";
echo "<th scope='col'>N° Vol</th>";
echo "<th scope='col'>Ora Part</th>";
echo "<th scope='col'>Dest</th>";
echo "<th scope='col'>Hotel</th>";
echo "<th scope='col'>Camera</th>";
echo "<th scope='col'>Totale</th>";
echo "<th scope='col'>Modifica</th>";
echo "<th scope='col'>Elimina</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='Qualità'>".$reservation->qualite."</td>";
echo "<td data-title='Arrivo'>".$reservation->datearrivee."</td>";
echo "<td data-title='N° Vol'>".$reservation->num_vol_arrivee."</td>";
echo "<td data-title='Atterraggio'>".$reservation->heure_atterrissage."
</td>";
echo "<td data-title='Provenienza'>".$reservation->provenance."</td>";
echo "<td data-title='Partenza'>".$reservation->datedepart."</td>";
echo "<td data-title='N° VOL'>".$reservation->num_vol_depart."</td>";
echo "<td data-title='Decollo'>".$reservation->heure_decollage."
</td>";
echo "<td data-title='Destinazione'>".$reservation->destination."
</td>";
echo "<td data-title='Scelta'>".$reservation->choix."</td>";
echo "<td data-title='Camera'>".$reservation->typech."</td>";
echo "<td data-title='Prezzo Totale' data-type='currency'>".$reservation-
>calculated_choix."</td>";
E qui la parte "Elimina":
echo "<td align='center'>
<a href='?delete_id=".$reservation->id."' onclick='return confirm(\"Sei sicuro di voler eliminare questa prenotazione?\")'>
<img class='icon' width='16' height='16' src='../remove-icon.png' alt='Elimina' title='Elimina'>
</a>
</td>";
echo "</tr>";
echo "</tbody>";
}
echo "</table>";
echo "</div>";
// Codice per gestire l'eliminazione
if(isset($_GET['delete_id'])) {
$wpdb->delete('SaveContactForm7_1', array('id' => $_GET['delete_id']));
wp_redirect($_SERVER['HTTP_REFERER']); // Ricarica la pagina dopo l'eliminazione
exit;
}
}
Sì, puoi utilizzare wpdb per eliminare il record nella tabella personalizzata. Ecco un esempio di come farlo in una funzione WordPress.
require_once ('../../../../wp-load.php');
if (!empty($_POST['id'])) {
global $wpdb;
$table='nome_tabella';
$id = $_POST['id'];
$wpdb->delete( $table, array( 'id' => $id ) );
}

lato client -> l'utente clicca sul pulsante/link di eliminazione
AJAX -> invia questa azione dal lato client al server per eseguire la funzione PHP che elimina la riga corrispondente dal database
lato server -> funzione per eliminare la riga dal database
$wpdb->delete()
successo AJAX -> nasconde questa riga dalla pagina client e aggiorna solo questa parte della pagina
controlla questo link
