Использовать данные MYSQL через PHP в cocoa-touch?

#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 также поможет вам найти их.