AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen in SQL Datenbank von extern schreiben mittels PHP

in SQL Datenbank von extern schreiben mittels PHP

Ein Thema von SimStar001 · begonnen am 15. Jun 2009 · letzter Beitrag vom 22. Feb 2010
Antwort Antwort
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#1

in SQL Datenbank von extern schreiben mittels PHP

  Alt 15. Jun 2009, 12:08
Da ich nur Webspace besitzte, der auch über eine SQL Datenbank verfügt, ich aber in diese nicht von Extern Datensätze schreiben oder lesen kann, dies aber für Statistikführung meiner Programme muss, habe ich eine Klasse entworfen, mit welcher man trotzdem mit Hilfe von einem PHP Script in die Datenbank schreiben kann.

Hier erst einmal die Unit / Klasse:

Delphi-Quellcode:
unit MYSQLPHPTunnel;

interface

uses IdMultipartFormData, IDHTTP;

type THTTP_POST_VARS = record
      Variable : string;
      Inhalt : string;
      end;

type TmysqlphpTunnel = class
      private
      FTunnelScript : string;
      FHTTP_POST_VARS : TIdMultiPartFormDataStream;
      procedure SetHTTP_POST_VARS (AData : array of THTTP_POST_VARS);

      public
      constructor create;
      destructor destroy; override;
      procedure AccessDataBase (AData : array of THTTP_POST_VARS);

      property phpscript : string read fTunnelscript write ftunnelscript;
      end;

implementation


constructor TmysqlphpTunnel.create ;
begin
  inherited create;

  self.FTunnelScript := '';
end;

destructor TmysqlphpTunnel.destroy;
begin
  
  inherited destroy;
end;

procedure TmysqlphpTunnel.SetHTTP_POST_VARS(AData : array of THTTP_POST_VARS);
var i : integer;
    HTTP : TIDHTTP;
begin
  self.FHTTP_POST_VARS := TIdMultiPartFormDataStream.Create;

  if high(AData) >= 0 then
    for i := 0 to high(AData) do
      self.FHTTP_POST_VARS.AddFormField(Adata[i].variable,AData[i].Inhalt);

  HTTP := TIDHTTP.create(nil);
  HTTP.Post(self.FTunnelScript,self.FHTTP_POST_VARS);

  self.FHTTP_POST_VARS.free;
  HTTP.Free;
end;

procedure TmysqlphpTunnel.AccessDataBase (AData : array of THTTP_POST_VARS);
begin
  SetHTTP_POST_VARS(AData);
end;

end.
Wie verwendet man diese nun?

Zunächst braucht man ein PHP Srcipt auf dem eigenen Webspace welches die eigentliche Arbeit (Schreiben von Datensätzen in die DB) übernimmt.


Dies könnte z.B. so aussehen:

Code:
<?php
// HTTP_POST_VARS auslesen
$name = $HTTP_POST_VARS['Name'];
$VID = $HTTP_POST_VARS['VID'];
$TimeStamp = $HTTP_POST_VARS['TimeStamp'];
$ATC = $HTTP_POST_VARS['ATC'];
$allow_realname = $HTTP_POST_VARS['Allow_RealName'];

// define variables
$db_host = 'host';
$db_user = 'user';
$db_pass = 'password';
$db_name = 'dbname';

$db_add_value = 'INSERT INTO table VALUES ';

// db connection
$db = mysql_connect($db_host, $db_user, $db_pass);
if (!$db)
{
    die('Could not connect: ' . mysql_error());
}
else
{
   mysql_select_db($db_name);
   $anfrage = "INSERT INTO Livetrack VALUES ('".$Name."','".$VID."','".$TimeStamp."','".$allow_realname."','".$ATC."')";
   mysql_query($anfrage);
}

mysql_close($db);

?>

Die Klasse TmysqlphpTunnel übernimmt nun jediglich das Senden der HTTP_POST_VARS an das PHP Script auf dem Webspace.

Eine Anwendung könnte so aussehen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Postvars : array of THTTP_POST_VARS;
    Tunnel : TmysqlphpTunnel;
begin
  // Setzen der HTTP_POST_VARS Variablen und Inhalte
  setlength(Postvars,5);
  PostVars[0].Variable := 'Name';
  PostVars[0].Inhalt := 'Marco test';
  PostVars[1].Variable := 'VID';
  PostVars[1].Inhalt := '224003';
  PostVars[2].Variable := 'TimeStamp';
  PostVars[2].Inhalt := '123456';
  PostVars[3].Variable := 'Allow_RealName';
  PostVars[3].Inhalt := 'true';
  PostVars[4].Variable := 'ATC';
  PostVars[4].Inhalt := 'Observer';

  // TmysqlphpTunnel Object erzeugen
  Tunnel := TmysqlphpTunnel.create;

  // Vollständigen Pfad des PHP Scriptes setzen, welches das Schreiben in die DB übernimmt
  Tunnel.phpscript := 'Pfad zum PHP Script + PHP Script Angabe'; // 'www.mein-web-sapce.de/dbaccess.php'
  
  // Datensatz in DB Schreiben
  Tunnel.AccessDataBase(PostVars);
  Tunnel.Free;
end;

Zugrunde lag dieser Beitrag
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: in SQL Datenbank von extern schreiben mittels PHP

  Alt 22. Feb 2010, 03:26
Siehe auch klick.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf