Удаление файлов из запроса к базе данных (Wordpress) - PullRequest
1 голос
/ 14 апреля 2020

У меня есть страница подписки. На этой странице пользователи могут видеть, на что они подписаны, а на что нет. Страница выглядит следующим образом:

enter image description here

То, на что подписался пользователь, видно выше. Нажав на красную кнопку; пользователь должен иметь возможность закончить свою подписку. Я не знаю, как это сделать.

Пользователь и то, на что он подписан, сохраняются в базе данных. Я знаю, что должен сделать запрос, который удаляет это поле c. Я знаю запрос. Но я просто не знаю, как это реализовать.

Код моей страницы подписки:

<?php

global $wpdb;

$table_name = $wpdb->prefix . 'usermeta';
$current_user_id = get_current_user_id();
//Programs are retrieved here. Only the programs the user has subscribed to.
$retrieve_data = $wpdb->get_results( "SELECT * FROM {$table_name} WHERE user_id={$current_user_id} AND meta_key='programma';");

?>
<!-- This piece of code shows the programs the user is already subscribed to. -->
<p>De programma's waar u op geabonneerd bent:</p>
<form action="#" enctype="multipart/form-data" method="post">
  <!--  <?php /*wp_nonce_field( 'set_programma_action', 'set_programma' );*/ ?> -->
    <table>
        <?php foreach ( $retrieve_data as $retrieved_data ) { ?>
            <tr>
                <th>Programma:</th>
                <td style="vertical-align: middle;"><?php echo esc_html( $retrieved_data->meta_value ); ?></td>
                <th>
                    <button name="programma" type="submit" id="button" value="<?php echo esc_attr( $retrieved_data->meta_value ); ?>">Abonnement opzeggen</button>
                </th>
            </tr>
        <?php } 
        $button = $_POST["button"];
        ?>
    </table>
</form>

<?php
//I still do not know if this query is right. It needs to delete the program the user has clicked on. I do not know what variables to use therefor.
if(isset($_POST["button"])) {
    $wpdb->query(
        'DELETE  FROM ... '.$wpdb->prefix.'tablename
         WHERE meta_key = "'.$myid.'AND $specificprogram = "22nl""'
);
}
?>
<?php
global $wpdb;

$table_name = $wpdb->prefix . 'programma';
// This retrieves the files from the database
$retrieve_data = $wpdb->get_results( "SELECT Anaam FROM {$table_name}" );

?>
<!--This code shows the data that is retrieved and it shows the programs the user can subscribe to-->
<p>Programma's waar u op kunt abonneren:</p>
<form action="#" enctype="multipart/form-data" method="post">
    <?php wp_nonce_field( 'set_programma_action', 'set_programma' ); ?>
    <table>
        <?php foreach ( $retrieve_data as $retrieved_data ) { ?>
            <tr>
                <th>Programma:</th>
                <td style="vertical-align: middle;"><?php echo esc_html( $retrieved_data->Anaam ); ?></td>
                <th>
                    <button name="programma" type="submit" value="<?php echo esc_attr( $retrieved_data->Anaam ); ?>">Abonneer</button>
                </th>
            </tr>
        <?php } ?>
    </table>
</form>

<?php
    // Verify nonce and save the data when the user is logged in.
    // Nonce docs: https://developer.wordpress.org/themes/theme-security/using-nonces/
    if (isset( $_POST['programma'] ) && isset( $_POST['set_programma'] ) && wp_verify_nonce( $_POST['set_programma'], 'set_programma_action' )) {

      $data = filter_input( INPUT_POST, 'programma', FILTER_SANITIZE_STRING );
      $current_user_id = get_current_user_id();

        if ( $current_user_id && ! empty( $data ) ) {
            add_user_meta( $current_user_id, 'programma', $data );
            echo "U bent geabonneerd op" . $data;
        }
    }
?>

Вопрос: Как я могу убедиться в этом, когда пользователь нажимает кнопку «Abonnement opzeggen» указанная c подписка, которую он хочет завершить, удалена из базы данных?

Моя структура базы данных:

enter image description here

Пользователь их подписки сохраняются в столбце meta_value. С meta_key называется programma

Привет,

Йохан

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...