i had web app , want make ios app, don't want use http request, website has own database (which mysql database). googled lot, can't find solution work me. had of guys done before?
connecting swift mysql , php easy. first need rest api. can create rest api using framework available. can code web service using php only. here show use of php framework.
so first create file store database constants.
<?php /** * created phpstorm. * user: belal * date: 12/08/16 * time: 7:58 pm */ define('db_username', 'root'); define('db_password', ''); define('db_host', 'localhost'); define('db_name', 'iphone'); then create php file create database connection.
<?php class dbconnect { private $conn; function __construct() { } /** * establishing database connection * @return database connection handler */ function connect() { require_once 'config.php'; // connecting mysql database $this->conn = new mysqli(db_host, db_username, db_password, db_name); // check database connection error if (mysqli_connect_errno()) { echo "failed connect mysql: " . mysqli_connect_error(); } // returing connection resource return $this->conn; } } now need 1 more file handle database operations.
<?php class dboperation { private $conn; //constructor function __construct() { require_once dirname(__file__) . '/config.php'; require_once dirname(__file__) . '/dbconnect.php'; // opening db connection $db = new dbconnect(); $this->conn = $db->connect(); } //function create new user public function createteam($name, $membercount) { $stmt = $this->conn->prepare("insert team(name, member) values(?, ?)"); $stmt->bind_param("si", $name, $membercount); $result = $stmt->execute(); $stmt->close(); if ($result) { return true; } else { return false; } } } lastly need create php file handle http request.
<?php //creating response array $response = array(); if($_server['request_method']=='post'){ //getting values $teamname = $_post['name']; $membercount = $_post['member']; //including db operation file require_once '../includes/dboperation.php'; $db = new dboperation(); //inserting values if($db->createteam($teamname,$membercount)){ $response['error']=false; $response['message']='team added successfully'; }else{ $response['error']=true; $response['message']='could not add team'; } }else{ $response['error']=true; $response['message']='you not authorized'; } echo json_encode($response); now create views on ios application , on buttonclick send request php file. code follows.
// // viewcontroller.swift // swiftphpmysql // // created belal khan on 12/08/16. // copyright © 2016 belal khan. rights reserved. // import uikit class viewcontroller: uiviewcontroller { //url our web service let url_save_team = "http://192.168.1.103/mywebservice/api/createteam.php" //textfields declarations @iboutlet weak var textfieldname: uitextfield! @iboutlet weak var textfieldmember: uitextfield! //button action method @ibaction func buttonsave(sender: uibutton) { //created nsurl let requesturl = nsurl(string: url_save_team) //creating nsmutableurlrequest let request = nsmutableurlrequest(url: requesturl!) //setting method post request.httpmethod = "post" //getting values text fields let teamname=textfieldname.text let membercount = textfieldmember.text //creating post parameter concatenating keys , values text field let postparameters = "name="+teamname!+"&member="+membercount!; //adding parameters request body request.httpbody = postparameters.datausingencoding(nsutf8stringencoding) //creating task send post request let task = nsurlsession.sharedsession().datataskwithrequest(request){ data, response, error in if error != nil{ print("error \(error)") return; } //parsing response { //converting resonse nsdictionary let myjson = try nsjsonserialization.jsonobjectwithdata(data!, options: .mutablecontainers) as? nsdictionary //parsing json if let parsejson = myjson { //creating string var msg : string! //getting json response msg = parsejson["message"] as! string? //printing response print(msg) } } catch { print(error) } } //executing task task.resume() } override func viewdidload() { super.viewdidload() // additional setup after loading view, typically nib. } override func didreceivememorywarning() { super.didreceivememorywarning() // dispose of resources can recreated. } } one more thing need add following lines inside info.plist file, because default cannot send request not secured urls because have http have last thing.
<!-- add here --> <key>nsapptransportsecurity</key> <dict> <key>nsallowsarbitraryloads</key> <true/> <key>nsexceptiondomains</key> <dict> <key>yourdomain.com</key> <dict> <key>nsincludessubdomains</key> <true/> <key>nsthirdpartyexceptionrequiresforwardsecrecy</key> <false/> </dict> </dict> </dict> <!-- end of code --> source: ios mysql database tutorial
Comments
Post a Comment