У меня есть этот файл PHP для извлечения данных из базы данных на основе условия «dept» .
getDeptList.php
<?php if (isset($_POST['dept'])){ $dept = $_POST['dept']; $sql = "SELECT * FROM users WHERE dept ='$dept'"; $result = mysqli_query($connect, $sql); if ($result && mysqli_num_rows($result) > 0){ while ($row = mysqli_fetch_array($result)) { $login_db = $row['login']; $real_namedb = $row['real_name']; $output[]= array('login' => $login_db, 'real_name' => $real_namedb); } echo json_encode($output); mysqli_free_result($result); } else { $output = array('login' => 'wrong credentials from PHP code!'); echo json_encode($output); echo mysqli_error($connect); } } ?>
В x-коде у меня есть значение UILabel, которое было настроено на «ITD», и это значение должно быть опубликовано в PHP для получения вывода массива в UIPickerView.
Вот мой код.
ОБНОВИТЬ
getDeptList.swift
import UIKit class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate { @IBOutlet var deptLbl: UILabel! @IBOutlet var loginLbl: UILabel! @IBOutlet var real_nameLbl: UILabel! @IBOutlet var dropdownTxt: UITextField! @IBOutlet var dropdown: UIPickerView! var persons = [Person]() struct Person { var login: String var real_name: String init?(dict: [String:Any]) { guard let login = dict["login"] as? String, let real_name = dict["real_name"] as? String else { return nil } self.login = login self.real_name = real_name } } func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return self.persons.count } func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return persons[row].real_name } func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { if row >= self.persons.count { return } self.loginLbl.text = self.persons[row].login self.real_nameLbl.text = self.persons[row].real_name self.dropdown.isHidden = true self.dropdownTxt.resignFirstResponder() } func textFieldDidBeginEditing(_ textField: UITextField) { if textField == self.dropdownTxt { self.dropdown.isHidden = false } } func getDropdownJSON(){ deptLbl.text = "ITD" var request = URLRequest(url: URL(string: "http://localhost/getDeptList.php")!) request.httpMethod = "POST" let postString = "dept=\(deptLbl.text!)" request.httpBody = postString.data(using: .utf8) let task = URLSession.shared.dataTask(with: request) { (data, response, error) in guard let data = data, error == nil else { print("error=\(error)") return } if let result = try? JSONSerialization.jsonObject(with: data, options: []) { print(result) } } task.resume() } override func viewDidLoad() { super.viewDidLoad() getDropdownJSON() } }
Консоль did'nt выводит значение результата
Проблема в том, что UIPickerView не может получить вывод массива. Я не знаю, почему. может быть, кто-то может помочь решить эту проблему.
Благодарю.