Entwickler-Ecke

Internet / Netzwerk - PHP Array nach Delphi


josefkoller - So 08.04.12 20:17
Titel: PHP Array nach Delphi
Hallo,

ich habe eine php-Seite, auf der eine Sql-Abfrage Daten generiert und in ein Array (Array in Array) ablegt.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
.....
if(mysql_num_rows($result_liste_erst) > 0){
         while($row = mysql_fetch_assoc($result_liste_erst)){
          $result1 = array(); 
          $result1['ID'] = $row['ord_id']; 
          $result1['ANREDE'] = $row['ord_anrede']; 
          $result1['VORNAME'] = $row['ord_vorname']; 
          $result1['NACHNAME'] = $row['ord_nachname']; 
          ...

          $_SESSION['liste'][] = $result1;
         }
}

echo $_SESSION['liste'];


Mit


Delphi-Quelltext
1:
IdHTTP1.get('http://www.xxxxx.de/aus_delphi.php');                    


bekomme ich lediglich den String "Array". Naja, das stimmt ja auch.

Gibt es eine Möglichkeit, das Array "$_SESSION['liste']" nach Delphi zu holen, um den Inhalt dort weiter zu verwenden?

Danke.

Josef

Moderiert von user profile iconMartok: Code-Tags hinzugefügt


jaenicke - So 08.04.12 21:03

print_r [http://www.php.net/manual/de/function.print-r.php] / var_export [http://www.php.net/manual/de/function.var-export.php]? ;-)


Martok - So 08.04.12 21:09

Und wenn du was sinnvoll parsebares willst: serialize [http://www.php.net/manual/de/function.serialize.php] und json_encode [http://www.php.net/manual/de/function.json-encode.php].

Oder ein eigenes Format, eventuell sowas wie CSV. Das ist auf Delphi-Seite einfacher, aber das PHP dafür musst du dir selber bauen.


josefkoller - Mo 09.04.12 00:07

Hallo,

hab nach einigem Suchen Superobject gefunden.

Damit kann man ein JSON Array in Delphi "in seine Bestandteile" zerlegen.

Also bei mir auf der PHP-Seite am Ende


Quelltext
1:
2:
3:
...
echo json_encode($_SESSION['liste']);
?>


Dann dieses Array

mit


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button2Click(Sender: TObject);
var
  OB: ISuperObject;
  i:integer;
begin
  OB:=SO(IdHTTP1.get('http://adresse.entfernt/aus_delphi.php'));
  for i := 0 to OB.AsArray.Length - 1 do
    memo1.Lines.Add(ob.AsArray[i].S['VORNAME']);
end;


in ein SuperObject gepackt und das Feld "Vorname" als Test in ein Memo ausgelesen.

Soweit klappt alles.

SuperObject gibt es hier:

http://code.google.com/p/superobject/

Ciao

Josef

Moderiert von user profile iconMartok: Delphi-Tags hinzugefügt


jaenicke - Mo 09.04.12 03:53

Wobei aktuelle Delphiversionen (ab Delphi 2010 oder so) auch schon eine eigene JSON-Unterstützung haben (Units DBXJSON usw.).


josefkoller - Mo 09.04.12 10:53

Hallo,

oh, ich hatte vergessen, meine Version mitzuteilen. Delphi 7.

Ich hab dann aufgehört, upzudaten und wechselte zu Html, Javascript,Mysql und Php fürs Internet.

Es ist aber eine Menge Schreiberei, um damit eine stabile Applikation, ähnlich einer Delphi Anwendung, zustande zu bringen.

Deswegen der Import von Mysql-Daten zurück zu Delphi.

Schon alleine die Druckerei ist mit Delphi Druckkomponenten wesentlich einfacher, als eine einigermaßen passende Druckausgabe in Html zu erzeugen.

Ciao

Josef


jaenicke - Mo 09.04.12 11:39

user profile iconjosefkoller hat folgendes geschrieben Zum zitierten Posting springen:
Schon alleine die Druckerei ist mit Delphi Druckkomponenten wesentlich einfacher, als eine einigermaßen passende Druckausgabe in Html zu erzeugen.
Dafür eignet sich auch eine mit Delphi erstellte WebBroker-DLL, die in den Apache-Webserver eingeklinkt wird und dann aus den Daten eine PDF-Datei erzeugt. (Wenn man einen passenden Windows-Webserver hat.)
Dann kann man clientseitig alles im Browser ablaufen lassen, bekommt aber dennoch über die PDF-Datei ein schönes Druckergebnis.

Und man kann natürlich mit den passenden Bibliotheken auch aus PHP heraus PDFs erstellen.