#php #iphone #mysql #objective-c #cocoa-touch
#php #iPhone #mysql #objective-c #cocoa-touch
Вопрос:
Я создал рабочее приложение для iPhone, которое извлекает данные из базы данных MYSQL через страницу PHP, затем печатает данные в UIWebView.
Но проблема здесь в том, что я больше не хочу печатать данные в UIWebView, я хочу извлечь данные и вернуть их обратно в приложение, чтобы изменить UILabel.text на данные MYSQL.
В настоящее время у меня есть следующее (которое печатает данные в UIWebView (исключая большую часть кода из-за паролей подключения к БД и т.д.)):
PHP-ФАЙЛ:
// Localize the GET variables
$name = isset($_GET['name']) ? $_GET['name'] : "";
// Protect against sql injections
$name = mysql_real_escape_string($name);
$cash = "SELECT cash FROM t_users WHERE username='$name' LIMIT 1";
$result = mysql_query($cash,$conn);
if(!$result) {
die("Error retrieving scores " . mysql_error());
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
</head>
<body>
<?php
// Display the table
while ($row = mysql_fetch_object($result)) {
echo ''.$row->cash.'';
}
mysql_free_result($result);
mysql_close($conn);
?>
</body>
</html>
PlayerInfo.m
-(IBAction)refreshData:(id)sender {
test1AppDelegate *mainDelegate = (test1AppDelegate *)[[UIApplication sharedApplication] delegate];
NSString * login_key = @"REMOVED FOR STACKOVERFLOW";
NSString * username = [mainDelegate.currentUser stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *urlString = [NSString stringWithFormat:@"REMOVED FOR STACKOVERFLOW/put_score.php?login_key=%@amp;name=%@",
login_key,username];
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[self.webview loadRequest:requestObj];
}
Эти изменения показывают ДЕНЕЖНЫЕ средства игроков в webview, но я хочу изменить UILabel для отображения суммы денежных средств.
Пожалуйста, помогите?
Спасибо!
Комментарии:
1. Это возможно … ознакомьтесь с моим комментарием ниже.
Ответ №1:
вы можете установить текст метки в значение row->cash:
label.text = [NSString stringWithUTF8String:row-cas];
или вам может понадобиться stringWithCString:encoding:
метод class в классе NSString.
Комментарии:
1. Это даже не работает как псевдокод: P Нет, но серьезно, вам нужно взглянуть на json или xml. Другого хорошего способа передачи данных между приложением<-> серверной частью нет.
2. вы не можете получить доступ к значению row-> cash? это не c-строка. извините… Я задумал это скорее как вопрос.. действительно, стоило оставить комментарий
3. да, вы можете это сделать… вы используете NSMutableURLRequest с адресом вашего PHP-файла — как вы уже делали. затем создайте NSURLConnection с этим запросом и назовите делегата для NSURLConnection. делегат будет получать сообщения по мере выполнения соединения, такие как connection:didReceiveData: . затем вы можете использовать приведенный выше код для отображения строкового текста на метке.
Ответ №2:
У вас должен быть PHP-скрипт, возвращающий JSON или просто возвращающий строку, которая вас интересует. Предпочтительно JSON. Загуглите «REST API», потому что это то, чего вы действительно хотите.
Можно порекомендовать несколько хороших библиотек:
- JSONKit
- ASIHTTPRequest
Google также поможет вам найти их.