Apps für Android programmieren leicht gemacht!

Daten von PHP Server erhalten

Aufgrund einer Anfrage von Daniel werden wir uns heute mit dem Erhalten von Daten beschäftigen.
Es geht hierbei darum, wie wir von unserem eigenen Webserver, auf dem ein PHP-Skript ausgeführt wird, Informationen erhalten und verarbeiten können.

Konkret hat Daniel folgendes Problem:
Er hat auf einem Webserver eine SQL-Datenbank sitzen, wie die meisten Webserver heutzutage. In dieser SQL-Datenbank sind Daten gespeichert, die unsere Android App erhalten und verarbeiten soll. Wichtig ist dabei, dass von seinem Webserver nur die Einträge der letzten 12 Stunden ausgegeben werden. Weitere Datensätze der Datenbanktabelle sollen gelöscht werden.

Um die Anonymität zu wahren werden wir hier mit einer fiktiven Datenbankstruktur arbeiten.
Wir nehmen also an, wir hätten eine Datenbank „db_1“ mit einer Tabelle namens „Bestellungen“.
In dieser Tabelle sind 4 Informationen gespeichert. ID (Zahl), Name (String), Anzahl (Zahl) und Datum (Datetime).

Testdatenbank
Unsere Testdatenbank, mit der Tabelle Bestellungen und den 4 Spalten.
Einträge der Testdatenbank
Einträge der Testdatenbank

 

PHP-Skript:

Am Anfang steht in diesem Artikel nicht die Programmierung der App, sondern die Programmierung eines PHP-Skriptes.
Dieses soll auf den Webserver geladen werden, die Datensätze der letzten 12 Stunden auslesen und im JSON-Format ausgeben.
Weitere Datensätze dieser Tabelle werden gelöscht.

JSON wird uns hier sehr zugute kommen.
Natürlich wäre es auch möglich uns die Daten per XML oder ähnlichen Formatierungen ausgeben zu lassen, doch habe ich bereits in einem anderen Artikel beschrieben, wie man JSON in Java ausliest. Diesen Artikel können wir anschließend nutzen.

Als Erstes gilt es eine Datenbankverbindung in unserem PHP-Skript auszubauen.

<?php

  //Verbindungsinformationen
  $host = "localhost"; // Adresse der SQL-Datenbank.
  $nutzer = "user1";   // Nutzername des SQL-Accounts.
  $passwort = "****";  // Passwort des SQL-Accounts.
  $name = "db_1";      // Name der SQL-Datenbank.

  //Verbindung aufbauen
  $db = new mysqli($host, $nutzer, $passwort, $name);

  //Fehlerabfrage
  if ($db->connect_error) {
    	die($db->connect_error);
  }

?>

Nun da wir bereits eine Verbindung zu unserer Datenbank aufgebaut haben und auf einen Fehler im Verbindungsaufbau gefragt haben, können wir die ersten Daten auslesen.

Hierzu müssen wir der SQL-Datenbank eine Anleitung geben, welche Daten wie ausgelesen werden sollen. Die Query.

In unserem Fall wäre diese Query:
SELECT * FROM Bestellungen WHERE Datum >= NOW() – INTERVAL 12 HOUR

Übersetzt:
Wähle (select) alle Spalten der Einträge (*) von der Tabelle (from) Bestellungen, die zu folgender Vorschrift passen (where) Datum neuer oder gleich alt (>=) der Zeit jetzt (now()) minus dem Internvall (- interval) von 12 Stunden (12 hours).

In eine PHP Funktion verpackt sähe dies in etwa so aus:

$ergebnis = mysqli_query($db, "SELECT  * FROM Bestellungen  WHERE Datum >= NOW() - INTERVAL 12 HOUR");

Die Variable $ergebnis enthält nun alle, nach dieser Vorschrift, ausgelesenen Zeilen. Wir gehen nun mit einer Schleife alle Zeilen durch und schreiben sie jeweils in ein Array.
So erhalten wir ein Array von Array’s (2 Dimensional) und dieses 2 Dimensionale Array können wir ganz einfach in JSON umwandeln und ausgeben.

//Die letzten 12 Stunden auslesen
$ausgabe = array();
$ergebnis = mysqli_query($db, "SELECT  * FROM Bestellungen  WHERE Datum >= NOW() - INTERVAL 12 HOUR");
while ($zeile = $ergebnis->fetch_assoc()) {
  $ausgabe[] = $zeile;
}
print json_encode($ausgabe);
Ausgabe von unserem PHP-Skript
Das ist die Ausgabe von unserem PHP-Skript.

Um zusätzlich noch Einträge löschen zu können, die älter als 24 Stunden sind könnte man noch folgendes hinzufügen:

// Lösche alle Einträge, die älter als 24 Stunden sind.
if(mysqli_query($db, "DELETE FROM Bestellungen WHERE Datum <= NOW() - INTERVAL 24 HOUR")){
  // Das Löschen war erfolgreich
}

Marvin

Ich bin 23 Jahre jung und studiere zurzeit Wirtschaftsinformatik an der Georg-August-Universität in Göttingen. Ich bin ein Mensch, der sich neben der Programmierung noch für tausend andere Dinge interessiert, die mal mehr und mal weniger verrückt sind. Vor allem aber bin ich Feuer und Flamme mit der Programmierung von eigenen kleinen Apps und Programmen, die mein Leben bereichern.

Kommentar hinzufügen

*Pflichtfeld