Come eliminare una riga specifica in una tabella del database

26 set 2017, 14:37:16
Visualizzazioni: 15.1K
Voti: 0

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;
}
}
2
Commenti

Stai chiedendo come eliminare una riga usando MySQL?

kero kero
26 set 2017 15:13:33

La parte di eliminazione non è la fine del lavoro necessario per farlo funzionare. Puoi scegliere di renderlo una richiesta Ajax per notificare il server di un'azione ed eseguire qualsiasi operazione tu voglia fare. Un altro approccio sarà inviare una richiesta di submit per effettuare l'eliminazione e ricaricare il form. Entrambi i metodi hanno pro e contro.

Drupalizeme Drupalizeme
26 set 2017 15:43:47
Tutte le risposte alla domanda 2
1

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 ) );

}
26 set 2017 19:42:45
Commenti

Funziona con alcune modifiche

Ramy Mâaouia Ramy Mâaouia
3 ott 2017 23:03:21
0
  • 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

26 set 2017 19:07:56