Вы можете использовать NSMutableURLRequest для доступа к странице php, которая считывает рейтинг (ы) из базы данных mySQL.Имейте выход php xml и анализируйте результат.Следующий код отправляет запрос на страницу php, а затем анализирует xml, возвращаемый этой страницей.(Вы также можете публиковать данные на другой php-странице для обновления записей в БД и т. Д.).
//IN THE .h class (of a viewController)
... : UIViewController {
//I use a label to display the data
IBOutlet UILabel *label1;
//Create global variable
NSString *tempString;
//Dataset for response from HTTP Request
NSMutableData *receivedData;
NSXMLParser *xmlParser;
}
-(void) initiateAPIConnection;
@property (nonatomic, retain) NSString *tempString;
@property (nonatomic, retain) UILabel *label1;
@end
//IN THE .h class
//IN THE .m class
//...
@synthesize label1, tempString;
//...
-(void)initiateAPIConnection{
NSString *post = [NSString stringWithFormat:@"user=Chris"];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:@"http://www.yourDomain.com/yourPhpPage.php"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setTimeoutInterval:10.0]; //fail after 10 seconds with no response
[request setHTTPBody:postData];
NSURLConnection *conn=[[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease];
if (conn){
NSLog(@"In if conn");
receivedData = [[NSMutableData data] retain];
NSLog(@"End of if conn");
}
else{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Conn error" message:@"No Server" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];
[alert show];
[alert release];
}
}//initiateAPIConnection
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Connection error" message:[error localizedDescription] delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil];
[alert show];
[alert release];
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
NSHTTPURLResponse *urlResponse = (NSHTTPURLResponse *)response;
NSLog(@"%i",[urlResponse statusCode]);
[receivedData setLength:0];
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[receivedData appendData:data];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
xmlParser = [[NSXMLParser alloc]initWithData:receivedData];
[xmlParser setDelegate:self];
//you may want to enable these features of NSXMLParser.
[xmlParser setShouldProcessNamespaces:NO];
[xmlParser setShouldReportNamespacePrefixes:NO];
[xmlParser setShouldResolveExternalEntities:NO];
[xmlParser parse];
}
//XMLdeligate methods
-(void)parserDidStartDocument:(NSXMLParser *)parser{
NSLog(@"Started Parsing");
}
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict{
NSLog(@"Started Element name: %@", elementName);
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
NSLog(@"Found characters: %@", string);
tempString = string;
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
NSLog(@"Finished Element name: %@", elementName);
//my outputted xml would have <ranking>...ValueFromDb...</ranking> in it's response
if([elementName isEqualToString:@"ranking"]){
//display result in a label (you could save it to a local variable instead)
label1.text = tempString;
}
}
-(void)parserDidEndDocument:(NSXMLParser *)parser{
NSLog(@"Finished Parsing");
}
//...
//Don't forget to dealloc
-(void)dealloc {
//...
[label1 release];
[tempString release];
[xmlParser release];
[receivedData release];
//...
[super dealloc];
}
//IN THE .m class
Вам придется выработать логику, необходимую для поиска пользователя в базе данных в вопросах, ранжирующих себя,Вы можете передать информацию для входа, добавив (например)? User = USERNAME & pass = PASSWORD в конец файла .php ... т.е. ...
[request setURL:[NSURL URLWithString:@"http://www.yourDomain.com/yourPhpPage.php?user=USERNAME&pass=PASSWORD"]];
USERNAME и PASSWORD будут значениями, считанными из песочницыи т.д. ... вам нужно отформатировать URLWithString (как вы делаете с stringWithFormat)
-Chris Allinson