Reputation: 132
I am trying to build an iPhone app that uses data from an online mysql database. (note that programming is new to me)
I have this piece of code in my app, which is supposed to connect to my php file:
//loginAction
- (void) loginAction
{
if ([email.text isEqualToString:@""] || [password.text isEqualToString:@""]) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error!" message:@"please fill in everything":self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
return;
}
//database connection
NSString *strURL = [NSString stringWithFormat:@"http://db.imagine-app.nl/login.php?email=%@&password=%@", email.text, password.text];
//execute php
NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]];
//receive data
NSString *strResult = [[NSString alloc] initWithData:dataURL encoding:NSUTF8StringEncoding];
if ([strResult isEqualToString:@"1"])
{
action:@selector(sendLogin);
}else
{
//invalid information
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"E-mail or password wrong" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
return;
}
}
on my website (hosted by a web hosting company) I have a php file called "login.php" which contains next code:
<?php
if (isset($_GET["email"]) && isset($_GET["password"]) ){
$email = $_GET["email"];
$password = $_GET["password"];
$result = login( $email, $password);
echo $result;
}
function makeSqlConnection()
{
$DB_HostName = "db.imagine-app.nl";
$DB_Name = "*************";
$DB_User = "*************";
$DB_Pass = "*************";
$con = mysql_connect($DB_HostName,$DB_User,$DB_Pass) or die(mysql_error());
mysql_select_db($DB_Name,$con) or die(mysql_error());
return $con;
}
function disconnectSqlConnection($con)
{
mysql_close($con);
}
function login($email, $password)
{
$con = makeSqlConnection();
$sql = "SELECT * from user WHERE email = '$email' AND password = '$password';";
$res = mysql_query($sql,$con) or die(mysql_error());
$res1 = mysql_num_rows($res);
disconnectSqlConnection($con);
if ($res1 != 0) {
return 1;
}else{
return 0;
}// end else
}
?>
These two pieces of code should enable me to access my database, but when I test it ( put a email and password in the table and try to login from my app), the iphone simulator stucks for a while, and after that i tells me that my the entered values are wrong (which means the query returns no value.) In what way do I have to edit these two pieces of code to make it work? Thank you in advance.
Upvotes: 0
Views: 573
Reputation: 1807
This is just an issue of trial and error. I could put all your code into a project myself and test it, but that is not the purpose of Stack Overflow and I am too lazy.
Do what every other programmer does: set breakpoints everywhere and/or use NSLog("result: %@",result)
. Dump your URL with NSLog
and try it using your web browser. If there is an error, fix it and try your project again, if not, keep trying.
Also, I have never seen before this type of language action:@selector(sendLogin);
It looks like another copy/paste error.
Upvotes: 1
Reputation:
Let try this code NSURL *url = [NSURL URLWithString: [NSString stringWithFormat: @\"http://www.example.com/file.php?data=this\"]]; NSError *error; NSString *mydata = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:&error];
Upvotes: 1
Reputation: 6591
In this line:
NSString *strURL = [NSString stringWithFormat:@"http://db.imagine-app.nl/login.php?email=%@&password=%@, email.text, password.text];
You forgot to close the string using a double quotation mark. Should be:
NSString *strURL = [NSString stringWithFormat:@"http://db.imagine-app.nl/login.php?email=%@&password=%@", email.text, password.text];
Upvotes: 0