Announcement

Collapse
No announcement yet.

Php Script im Speicher erzeugen und an TWebbrowser übergeben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Php Script im Speicher erzeugen und an TWebbrowser übergeben

    Hallo Herr Kosch,

    ich habe den Apache Webserver 3.1.6, PHP 4.0.6 und Mysql 3.23.41 installiert. Mein Wunsch ist es, ein Frontend für Mysql mit Delphi 5 Standard zu erstellen. Hierzu benutze ich die TWebbrowser Komponente.

    Beispiel: Neue Datenbank erzeugen

    procedure TForm1.Neu1Click(Sender: TObject);

    var TempList: TStrings;

    var verbindung : string;
    var verb1 : string;
    var verb2 : string;

    var sql : string;
    var sql1 : string;
    var sql2 : string;
    var sql3 : string;
    var sql4 : string;
    var sql5 : string;

    var neudb : string;

    begin

    neudb:= InputBox('Neue Datenbank erstellen', 'Datenbankname', '');

    TempList := TStringList.Create;

    try

    with TempList do begin

    verb1 := '$verbindung = @mysql_connect ($server,$benutzer,$passwort)';
    verb2 := 'or die ("Es konnte keine Verbindung hergestellt werden !");';

    verbindung := verb1 + #13 + verb2;

    add ('<?');
    add ('$server = "localhost";');
    add ('$benutzer = "ralph";');
    add ('$passwort = "rgadmin";');

    add (verbindung);

    sql1 := 'if (mysql_create_db (' + neudb + ')) {';
    sql2 := 'print ("Datenbank wurde erfolgreich erstellt !\n");';
    sql3 := '} else {';
    sql4 := 'printf ("%s\n", mysql_error ());';
    sql5 := '}';

    sql := sql1 + #13 + sql2 + #13 + sql3 + #13 + sql4 + #13 + sql5;

    add (sql);

    add ('?>');

    end;

    Memo.Clear;

    Memo.Lines.AddStrings(TempList);

    finally

    TempList.Free;

    end;

    Memo.Lines.SaveTofile('c:\apache\htdocs\db_neu.php ');

    Webbrowser.Navigate ('http://localhost/db_neu.php');

    end;

    Ich bin kein Profi und brauche deshalb Ihre Hilfe, denn ich möchte den Quellcode für das php Script direkt im Speicher erzeugen und dann an TWebbroser übergeben. Für reinen html Code gibt es hier im Forum ein Beispiel, das klappt auch. Aber wenn ich php Befehle mit benutze, wird in der Browser Komponente nichts mehr ausgeführt. Können Sie mir ein kleines Beispiel zeigen? Es reicht ja mit phpinfo(). Vielen Dank im voraus.

    Ralph

  • #2
    Hallo,

    ich kenne zwar PHP nur vom Namen her, aber ich gehe davon aus, dass diese Scripts auf der <b>Server-Seite</b> ausgeführt werden und der Web-Browser nur das Ergebnis dieser Scripts erhält. Somit kann Ihr Versuch, alles auf der Client-Seite im Arbeitsspeicher ablaufen lassen, nicht funktioneren

    Comment


    • #3
      Vielen Dank Andreas, für Deine schnelle Reaktion. Aber es gibt wohl gedanklich ein Mißverständnis. Bei mir zu Hause läuft auf einem lokalen PC, Apache, Mysql und PHP. Hier kann ich natürlich mit dem normalen Internet Browser PHP Scripte über http://localhost starten. Mein PC ist sozusagen Server und Client gleichzeitig. Wenn das aber partou nicht geht, gibt es eine Möglichkeit, mit Delphi den Cache der Komponente TWebbroser abzuschalten, denn wenn ich Webbrowser.Navigate('http://localhost/befehl.php') mehrere Male hintereinander benutze, obwohl in der Datei befehl.php jedesmal ein anderer Inhalt stehen kann, holt sich TWebbrowser beim zweiten oder dritten Mal die Datei aus dem Cache und nicht mehr aus dem Verzeichnis C:Apache\htdocs. PS, bei uns ist es üblich, das wir uns in Foren duzen, ist das anmaßend ? Ralp

      Comment


      • #4
        Hi!

        PHP gibt sein Ergebnis auf dem Standard-Out aus.
        Man kann z.B. einfach per WaitAndExec() php aufrufen und zwar so:

        "php.exe meinscript.php >ausgabe.htm"

        und dann ausgabe.htm beliebig laden/anzeigen etc.
        Dazu muss man dann auch keinen Apache etc. bemühen.

        Gruss
        Tim

        Comment

        Working...
        X