前提・実現したいこと
php経由でデータベースから取得したデータをswiftを使ってtableviewに一覧表示させたいです。
以下に記載されてるMySQLのデータ内のlidの列に保存されてるデータをswiftのテーブルビューに表示させたいです。
下に画像を載せましたが、プログラムを実行するとテーブルビューの部分が真っ白になって何も出てきません。
テーブルビューのコードの辺りがおかしいのか、JSONデータを解析する所あたりで間違っているのか、よくわからなくて困っております。
解決方法をご教示頂ければ幸いです。
エラーメッセージはありません。
該当のソースコード
swift
1import UIKit 2 3class CourseViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 4 5 let URL_COURSE_DATA = "https://hogehoge/dbApi.php" 6 7 var courses: [String] = [] 8 9 var sid:String! = "000" 10 11 override func viewDidLoad() { 12 super.viewDidLoad() 13 let requestURL = NSURL(string: URL_COURSE_DATA) 14 let request = NSMutableURLRequest(url: requestURL! as URL) 15 request.httpMethod = "POST" 16 let postParameters = "sid="+sid!; 17 request.httpBody = postParameters.data(using: String.Encoding.utf8) 18 let task = URLSession.shared.dataTask(with: request as URLRequest){ 19 data, response, error in 20 if error != nil { 21 print("error is (error!)") 22 return; 23 } 24 do { 25 let myJSON = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? [String:[String:String]] 26 if let parseJSON = myJSON { 27 28 for (key, value) in parseJSON { 29 print(key) 30 31 for (key2, value2) in value{ 32 print(key2) 33 self.courses.append(value2) 34 35 36 } 37 38 } 39 40 41 42 } 43 44 }catch{ 45 print(error) 46 } 47 } 48 49 task.resume() 50 51 52 53 // Do any additional setup after loading the view. 54 } 55 56 func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 57 return courses.count 58 } 59 60 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 61 // セルを取得する 62 let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "coursecell", for: indexPath) 63 // セルに表示する値を設定する 64 cell.textLabel!.text = courses[indexPath.row] 65 return cell 66 }
PHP
1<?php 2//dbApi.php 3//dbOperation.phpは下に記載してあります。 4 $response = array(); 5 6 if($_SERVER['REQUEST_METHOD']=='POST'){ 7 8 $sid = $_POST['sid']; 9 10 require_once 'dbOperation.php'; 11 $db = new dbOperation(); 12 13 if($db->selectSQL($sid)){ 14 15 $response = $db->selectSQL($sid)->fetchAll(); 16 }else{ 17 18 $response['error'] = true; 19 } 20 21 }else{ 22 23 $response['error'] = true; 24 } 25 26 echo json_encode($response); 27?>
PHP
1<?php 2//dbOperation.php 3//config.phpにはデータベース名やデータベースhostの設定を記述 4//dbConnect.phpにはPDOでの接続処理を記述 5 class dbOperation{ 6 7 private $conn; 8 9 function __construct(){ 10 11 require_once 'config.php'; 12 require_once 'dbConnect.php'; 13 14 $db = new dbConnect(); 15 $this->conn = $db->connect(); 16 } 17 18 public function selectSQL($sid){ 19 20 $sql = "select lid from course where sid = ?"; 21 $result = $this->conn->prepare($sql); 22 $result->execute(array($sid)); 23 return $result; 24 } 25 } 26?>
MySQL
1sid | lid 2000 | hogehoge 3000 | hagehage 4000 | hugehuge
試したこと
テーブルビューのデリゲートやデータソースのアウトレットは紐付けました。
補足情報(FW/ツールのバージョンなど)
最終的にMySQLのlidに格納されてるhogehogeとかの一覧をテーブルビューで表示したいです。
実行したらテーブルビューの部分が真っ白くなって何も出てきません。
回答1件
あなたの回答
tips
プレビュー