• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Datenbank auf Server über iPhone-App ansprechen

bginner

Ingrid Marie
Registriert
13.12.09
Beiträge
266
Hallo zusammen,

ich habe eine iPhone-App mit der ich auf Daten in einer MySQL-Datenbank zugreifen will.
Meine Frage ist, wie ich das jetzt standesgemäß machen kann.
Ich bin für die iPhone-App zuständig und der Kollege für das entsprechende Webinterface und auch die Datenbank.
Jezt habe ich mir überlegt das wir eine php-Datei brauchen, die die Daten der Datenbank anspricht und zurückliefert.
Ich kenn das allerdings nur so, dass ich dann den Inhalt, der über ein echo-Befehl ausgegebn wird in der iPhoen App auffangen kann um diesen weiter zu verarbeiten. Nur mir kommt es so vor als wäre das eine Leienhafte Vorgehensweise, oder löst man das etwa standardmäßig so? Ich möchte gerne mal eure Meinung dazu hören, oder vielleicht könnt ihr mir auch eine einfache elegantere Lösung nennen.
 

GoodGuy

Granny Smith
Registriert
02.12.12
Beiträge
12
Nun, in der php Datei könntest du bzw. dein Kollege json_encode() benutzen. Die jeweiligenn Daten kannst du dann am iphone unter Verwendung von TouchJson (ist auf Git verfügbar) aufrufen/anzeigen lassen.
In xcode kannst du dann die URL zu php Datei mit 'NSURL URLWithString' angeben und mit 'NSString initWithContentOfURL' diese URL aufrufen.
Das Resultat ist dann ein String mit json Codierung. Die nötigen Daten kannst du dann mittels NSDictionary rausholen, dazu gibts Menge Tutorials. ;)
Ich hoffe das hat dich bisschen weitergebracht.
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Nun, standesmäßig löst man sowas über Webservices, zum Beispiel, wie GoodGuy schon schreibt, mit JSON.

Eine einfache Googlesuche gab mir dieses Seite: http://davidwalsh.name/web-service-php-mysql-xml-json]Create a Basic Web Service Using PHP, MySQL, XML, and JSON.

Habe die Seite nicht durchgelesen, klingt aber — für den Server — genau das, was Du suchst.

Für die Client Seite kannst Du ja mal nach iOS Web service JSON" suchen, da findet sich bestimmt etwas sehr ähnliches. Sonst frag noch mal nach.

Gruss

Alex
 

bginner

Ingrid Marie
Registriert
13.12.09
Beiträge
266
Hallo und danke für die hilfreichen Antworten. ich habe mir mal den Link angeschaut. Das mit dem json_encode() kannte ich noch nicht. Also wenn ich das richtig verstanden habe, ist es mit dieser Methode möglich die Results direkt in das JSON-Format zu packen oder eben in XML. Alles wird in einer Datei gespeichert die ich dann in XCode verarbeiten kann. ok, also ist es im Endeffekt einfach eine Datei die verarbeitet wird nur das diese schon ein geeignetes Format hat. danke, damit habt ihr mir sehr geholfen

EDIT: Ist die Funktion json_encode() mittlerweile Standard-Funktion in PHP oder muss ich da irgendwelche Module oder was spezielles nachinstallieren? Funktioniert das nur mit PHP 5 oder geht auch PHP 4?
 
Zuletzt bearbeitet:

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Alles wird in einer Datei gespeichert die ich dann in XCode verarbeiten kann. ok, also ist es im Endeffekt einfach eine Datei die verarbeitet wird nur das diese schon ein geeignetes Format hat.

Also, nur damit wir uns richtig verstehen: Wenn Du meinst, was Du schreibst, dann hast Du es nicht verstanden.

Wichtig ist erstmal, dass der Zugriff von SQL entkoppelt wird. Du greifst mit dem Client nicht auf die SQL Datenbank zu, sondern per HTTP(S) auf eine definierte Schnittstelle.

Diese Schnittstelle liefert Daten im JSON Format.

Xcode (und bitte: Grosses X, kleines c), ist eine IDE. Du meinst sicher, dass Du die Daten im JSON Format mit CocoaTouch, z.B. mit der Klasse NSJSONSerialization verarbeiten kannst.

Aber auf dem Client ist natürlich noch ein bischen zu tun, wie viel ist abhängig davon, was Du machen willst. Wenn es einfach um kleine Anfragen und die Darstellung des Ergebnis geht, bist Du schnell fertig. Wenn die Daten dann aber auch lokal in einer Datenbank gespeichert und synchron gehalten werden sollen ist mehr Arbeit gefragt.

Gruss

Alex

P.S.: Von PHP hab ich keine Ahnung
 

bginner

Ingrid Marie
Registriert
13.12.09
Beiträge
266
Hallo,

danke für die Richtigstellung und die ausführliche Beschreibung. Das mit der Speicherung in einer Datei war natürlich quatsch.

Nur noch mal zum Verständniss (wie ich es jetzt verstanden habe):
Nicht der Client sondern die Schnittstelle greift auf die Datenbank zu. Woher sollen die Daten sonst auch kommen?
Die Schnittstelle besteht in etwa aus dem PHP-Code der unter deinem Link zu sehen ist.
Als Ausgabe bekomme ich je nach Parameterangabe entweder ein JSON- oder XML-Format.

OK, ich denke ich weiß jetzt was ich zu tun habe, dank deines Links ;)

Gruß,
Chris
 
  • Like
Reaktionen: below

GoodGuy

Granny Smith
Registriert
02.12.12
Beiträge
12
Ist die Funktion json_encode() mittlerweile Standard-Funktion in PHP oder muss ich da irgendwelche Module oder was spezielles nachinstallieren?

Normal schon, also wenn du z.B. in deinem PHP-Code einen Array erzeugst und mit einer "while" Schleife jedes einzelne Objekt (in diesem Fall: Datensatz | Funktion: msql_fetch_object($deineSQLAbfrage) ) in diesem Array speicherst.
Nach der Schleife gibst du die Ergebnisse mit einem echo aus. Z.B. echo '["myData":'.json_encode($deinArray).']';

hoffe es hat dich weitergebracht;)

P.S. Ach ja, man kann natürlich auch xml_encode() benutzen. Dann solltest du aber in Xcode "XMLParser" benutzen.
 

bginner

Ingrid Marie
Registriert
13.12.09
Beiträge
266
Hat alles super funktioniert.

Danke an alle für die hilfreichen Tipps. Ich hab mir schnell 'ne DB mit Testdaten gemacht und die, wie beschrieben, ins JSON-Format umgewandelt und anzeigen lassen. In Xcode hab ich die auch problemlos entgegennehmen können. Jetzt muss ich dir Daten nur noch mit der Klasse NSJSONSerialization verarbeiten, das hab ich schonmal gemacht also dürfte das keine Schwierigkeiten bereiten.

Grüße und danke