swift 通过UIButton将选定的UITableView行发布到MySQL数据库表

q8l4jmvw  于 2022-12-10  发布在  Swift
关注(0)|答案(1)|浏览(115)

This is how my storyboard looks like
基本上,我有两个UITableView,它们连接到MySQL数据库中的表。(或者如果可能的话,用accessory type .checkmark标记的行)作为POST到我的数据库中的表。我已经准备好PHP代码,我能够在MySQL中发出POST请求并更新表,这不是这里的问题。我希望在按下按钮时,UITableView中的选定行被发送到特定的PHP代码。

@IBAction func selected(_ sender: UIButton) {
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

        let currentCell = tableView.cellForRow(at: indexPath)! as UITableViewCell
            
            let currentItem = currentCell.textLabel!.text
            
            let alertController = UIAlertController(title: "", message: "You Selected " + currentItem! , preferredStyle: .alert)
            let defaultAction = UIAlertAction(title: "Close", style: .default, handler: nil)
            
            alertController.addAction(defaultAction)
            
            present(alertController, animated: true, completion: nil)
            
            let url = NSURL(string: "url")
            // locahost MAMP - change to point to your database server
            
            var request = URLRequest(url: url! as URL)
            request.httpMethod = "POST"
            
            var dataString = "secretWord=---" // starting POST string with a secretWord
            
            // the POST string has entries separated by &
            
            dataString = dataString + "&currentitem=\(currentItem!)"
            
            // add items as name and value
            // convert the post string to utf8 format
            
            let dataD = dataString.data(using: .utf8) // convert to utf8 string
            
            do
            {
                
                // the upload task, uploadJob, is defined here
                
                let uploadJob = URLSession.shared.uploadTask(with: request, from: dataD)
                {
                    data, response, error in
                    
                    if error != nil {
                        
                    }
                }
                uploadJob.resume()
            }
        }
    }

我试过这样做,我猜这只是一个混乱的代码,因为我仍然是一个初学者,但是的,我希望这种发送一个一般的信息,我的问题给你
我知道你可以使用IBAction来调用一个函数,然后将它发送到php代码中,但是我不知道如何准确地编写它。我试着在IBAction中使用if语句和tableView以及didSelectRowAt函数,但是似乎什么都不起作用。当我试图搜索它时,我没有在网上找到任何关于它的来源。

63lcw9qa

63lcw9qa1#

如果问题是如何允许在表中选择多行,我们使用allowsMultipleSelection,您可以通过编程或在Interface Builder中设置它。
然后在didSelectRowAt(和didDeselectRowAt)中,不是只使用传递给委托方法的indexPath,而是使用indexPathsForSelectedRows
如果您不想在每次选择和取消选择行时都向服务器发送更新,而是在与按钮关联的@IBAction方法中发送更新,则从didSelectRowAt(和didDeselectRowAt)中删除网络请求,并将其放在按钮的@IBAction中,再次使用indexPathsForSelectedRows
请注意,您可能希望将其作为数组(例如currentitems[0]=13currentitems[1]=42等)发送,而不是作为currentitem=...发送,并以&分隔。

相关问题