Мне нужно удалить выбранные строки из MySql База данных при нажатии кнопки «Удалить» в моем shinyapp. Он должен работать для многократного выделения так же, как и для одиночного выбора.
Я использую input $ table_rows_selected, но он возвращает идентификатор строки в кадре данных в Shiny, а не в MySQL. Вот почему это не работает.
Мой код:
library(shiny)
library(DBI)
con <- dbConnect(RMySQL::MySQL(), dbname = "test", username = "root", password = "password", host = "host", port = 3306)
onStop(function() {
dbDisconnect(con)
})
ui <- fluidPage(
DT::dataTableOutput("tbl"),
actionButton("del", "Delete user"),
)
server <- function(input, output, session) {
sqlOutput <- reactive({
sqlInput <- "select * from test"
dbGetQuery(con, sqlInput)
})
output$tbl <- DT::renderDataTable(sqlOutput(),
server = TRUE, rownames = FALSE
)
observeEvent(input$del, {
delFunction(input$tbl_rows_selected)
})
delFunction <- function(id) {
query <- sprintf("DELETE FROM test WHERE (`idtest` = '%d');", id)
dbSendQuery(con, query)
}
}
shinyApp(ui, server)