Связь PHP с Objective C (iPhone App) - PullRequest
0 голосов
/ 08 июля 2011

У меня есть приложение для iPhone, которое отправляет данные в приложение php, которое, в свою очередь, сохраняет эти данные в удаленной базе данных mysql.

Я хотел, чтобы файл php сообщал приложению iphone, успешно ли хранилище успешно,Вот мой php-код:

<?php

//connect to database
function connect() {
  $dbh = mysql_connect ("localhost", "123", "456789") or die ('I cannot connect to the database because: ' . mysql_error());
  mysql_select_db("PDS", $dbh); 
  return $dbh;
}

//store posted data
if(isset($_POST['message'])){
  $message = $_POST['message'];
  $dbh = connect();
  $query = "INSERT INTO  messages (message) VALUES ('$message')";
  $result = mysql_query( $query ) or die ("didn't query");        
}
?>

1) Как изменить указанный выше php-файл для отображения чего-либо в зависимости от успеха / неудачи запрошенного SQL-запроса?

2) Какая частьAPI-интерфейса объекта C обрабатывает чтение в переменных php

Ответы [ 2 ]

1 голос
/ 08 июля 2011

Просто сделайте php эхо прямо на страницу, и приложение для iPhone получит содержимое страницы и проанализирует их.

например. Если php-страницы повторяют success, failure, success, вы можете использовать:

NSString *contents = readthepage (google how to do this)
NSArray *results = [contents componentsSeparatedByString:@", "];
for (int i = 0; i < [results count]; i++) {
    NSString *result = [results ObjectAtIndex:i];
    if ([result rangeOfString:@"failure"].length > 0) // this isn't the perfect test, it checks whether _result_ contains the string @"failure", not is equal to. If it matters to you, find a different method.
        NSLog(@"operation %i failed.", i + 1);
    }
}
1 голос
/ 08 июля 2011

Нет прямой связи между Objective-C и PHP.Вы запрашиваете веб-URL в Objective-C, используя NSURLConnection или еще лучше ASIHttp .Запрашиваемый ресурс затем что-то делает с параметрами, которые вы ему передаете (в вашем случае, публикуя его) и возвращает что-то.Как правило, вы соглашаетесь на стандарт (скажем, JSON) для связи заранее или просто используете HTTP-коды состояния для такого рода вещей.Чем вы можете ознакомиться с ответом, данным NSURLConnection (посмотрите документы), и выяснить, что происходит на сервере

Обновление: ASI-Http имеет преимущество в том, что его использование более простое, он инкапсулирует многовещи низкого уровня для вас.В противном случае, он делает то же самое, что NSURLConnection

Следующее обновление: Вот решение с ASIHTTP и правильным анализом строки.Это использует HTTP Get, поставить сообщение не будет намного сложнее

NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request startSynchronous];
NSError *error = [request error];
if (!error) {
  NSString *response = [request responseString];
  NSArray *results = [response componentsSeparatedByString:@", "]; 
  for (NSString* result in results) {
   NSString * trimmedResult = [result stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
   if ([trimmedResult isEqualToString:@"failure"]) 
    NSLog(@"operation %i failed.", i + 1);
   }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...