Autor Beitrag
chrisdrury Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184

WinXP
D5 Prof
BeitragVerfasst: Di 26.02.08 15:36 
Edit: Hier in diesem Thread möchte ich mich doch mehr auf die Probleme mit PHP und/oder CGI konzentrieren, daher:

Zu meiner Frage zu dem das Tutorial von user profile iconLuckie bezüglich MySQL und Delphi(www.delphipraxis.net...ysql+mit+delphi.html)
geht es hier:
www.delphi-forum.de/....php?p=489761#489761.
chrisdrury Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184

WinXP
D5 Prof
BeitragVerfasst: Mi 27.02.08 15:50 
Also, dies wäre dann das PHP-Script zum Löschen des Servers aus der Datenbank:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<?php
include("../cgi-bin/einlog.php");
include("funk.php");
$IP=$_GET['IP'];
$connect=@mysql_connect($dbHost, $dbUser, $dbPass) or die("F");
$sql= sprintf("DELETE FROM Chat
        WHERE Ip=$IP",
  mysql_real_escape_string($IP));
If ($res=send_sql($db,$sql))  {echo "OK";}
?>

Ist das soweit richtig?
:?:
Xong
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 113

WIN 2000
Borland Developer Studio 2006
BeitragVerfasst: Mi 27.02.08 16:11 
user profile iconchrisdrury hat folgendes geschrieben:
Ist das soweit richtig? :?:

Nein. =)
ausblenden Quelltext
1:
2:
3:
$sql= sprintf("DELETE FROM Chat
        WHERE Ip=%s",
  mysql_real_escape_string($IP));

Das hat dir user profile iconjaenicke aber schon geschrieben.

sprintf nimmt als erstes Argument einen Formatstring entgegen. Danach kommen so viele Argumente, wie du benötigst.
ausblenden Quelltext
1:
string = sprintf('Ich kann zählen: %d, %d und %d!', 1, 2, 3);					

Das ergibt: "Ich kann zählen: 1, 2 und 3!"

Desweiteren ist es immer von Vorteil bei PHP die Singlequotes (') zu verwenden. Enthaltene Variablen werden dann nämlich nicht ersetzt.

Beispiel:
ausblenden Quelltext
1:
2:
3:
$bar = 'Text';
$foo = 'Ich bin ein $bar.';    // Ergibt: "Ich bin ein $bar."
$foo = "Ich bin ein $bar."; // Ergibt: "Ich bin ein Text."

Warum?
So schließt du bestimmte Fehlerquellen aus (die im Manual erläutert werden: http://de.php.net/manual/de/language.types.string.php).
Solltest du Variablen in einen String einfügen wollen, dann machst du das über sprintf oder - ganz simpel - mit dem Verkettungsoperator (+).

(Zu CGI kann ich dir heute abend etwas schreiben. Diesmal aber wirklich. Da bin ich nämlich endlich mal wieder zu Hause! =) )
chrisdrury Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184

WinXP
D5 Prof
BeitragVerfasst: Mi 27.02.08 16:26 
@ Xong: Danke schön, manchmal dauert es eben etwas länger, bis man's geschnallt hat...
:autsch: :rofl:
chrisdrury Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 184

WinXP
D5 Prof
BeitragVerfasst: Mi 27.02.08 22:12 
So, jetzt habe ich es endlich geschafft, den aktuellen Server aus der Datenbank zu löschen. :dance2:
Hier der Code des Server-Programms:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
      try
        Strings := TStringList.Create;
        Strings.Add('IP='+IntP);
        try
          IdHTTP2.Post('http://www.joerglipinski.de/chat/loeschen1.php', Strings);
          ShowMessage('Server is offline');
          Memo1.Lines.Add('Server is offline since ' + TimeToStr(Time) + ' on ' +    
DateToStr(Date));
        except
          on E: Exception do
          begin
            showmessage(E.Message);
            Memo1.Lines.Add(E.Message);
          end;
        end;
      finally
        Strings.Free;
      end;


Und hier die dazu gehörende php-Datei:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<?php
include("../cgi-bin/einlog.php");
include("funk.php");
$IP=$_POST['IP'];
$connect=@mysql_connect($dbHost, $dbUser, $dbPass) or die("F");
$sql= sprintf("DELETE FROM Chat
        WHERE Ip='%s'",
  mysql_real_escape_string($IP));
If ($res=send_sql($db,$sql))  {echo "OK";}
?>

Damit läuft es soweit, gibt es noch Verbesserungsvorschläge, Bedenken, Anregungen?
:lupe: :les: :zwinker: