Tom: TEIL 2: gleichzeitig in die datenbank schreiben

Beitrag lesen

TEIL 2:

Die Forumssoftware wollte es nicht ein einem Teil annehmen.
Eine Fehlermeldung, warum das so ist, fehlt leider.

Das Problem für den Eintrag in eine Datenbank ist, dass man
(ohne hohen und meistens unsinnigen Zusatzaufwand) nur Spalten
beschreiben kann, die auch vorhanden sind.

Das kann man nun am besten hardcodieren, weil es sonst zu komplex wird.

Wir gehen also mal davon aus, dass Du die Funktion strip bereits am Anfang
des Sriptes eingebaut hast.Dann könnte man den Eintrag in eine Datenbanktabelle
(hier mit MySQL) einer Funktion übergeben,
die gleich vor oder nach dem Aufruf von "mail" aufgerufen wird.

dazu musst Du Dir in Deiner Datenbank eine Tabelle anlegen:

CREATE TABLE inmail
(
  id\_inmail bigint(11) NOT NULL auto_increment,
  updated timestamp NOT NULL default '0000-00-00 00:00:00' on update CURRENT_TIMESTAMP,
  inserted timestamp NOT NULL default '0000-00-00 00:00:00',
  mailto varchar(60) collate latin1_german1_ci default NULL COMMENT 'Mailempfänger',
  mailfrom varchar(60) collate latin1_german1_ci default NULL COMMENT 'Mail erhalten von',
  mailsubj varchar(60) collate latin1_german1_ci default NULL COMMENT 'Betreff',
  mailtext text collate latin1_german1_ci,
  mailstat tinyint(3) NOT NULL default '0' COMMENT 'Bearbeitungsstatus',
  PRIMARY KEY  (id\_inmail)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;

und dann diese Definitionen und Funktionen zusätzlich ins obige Script
in einen PHP-Bereich kopieren.

<?php

define('DB_HOST','Dein_Datenbank_Server_Name');             ## bitte ersetzen
define('DB_USER','Dein_Datenbank_Benutzer_Name');           ## bitte ersetzen
define('DB_PASSWORD','Dein_Datenbank_Benutzer_Passwort');   ## bitte ersetzen
define('DB_DATABASE','Dein_Datenbank_Name_auf_dem_Server'); ## bitte ersetzen

##-----------------------------------------------------------------------------

mysql real escape string with quotes

##-----------------------------------------------------------------------------
function mysql_resq($value, $connection, $quote="'")
{
  return $quote . mysql_real_escape_string($value, $connection) . $quote;
}

##----------------------------------------------------------------------------

combine the mysql insert string

##----------------------------------------------------------------------------
function mysql_make_insert_string($_values, $table,  $connection);
{
  $sql = false;

if(!is_array($_values)) return $_sql;

if (count($_values) > 0)
  {
    $sql = "insert into $table ".                    implode(",",array\_keys($\_values))."".
                   " values (".
                   implode($_values).")";
  }
  return $sql;
}

##-----------------------------------------------------------------------------

empfangene Mails in Datenbank eintragen.

##-----------------------------------------------------------------------------
function insert_got_mail($table, $to, $subject, $message, $from)
{
  $con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

if (!$con) { return 'MySQL-Fehler: keine Serververbindung möglich'; }

$db = mysql_select_db(DB_DATABASE, $con);

if (!$db)
  {
    mysql_close($con);
    $err_msg = 'MySQL-Fehler: Kann Datenbank nicht öffnen - '.mysql_error($con);
  }
  else
  {
    ## Datensatz zusammenbauen und Felder mit den escaped values belegen

$_values = array();
    $_values['inserted'] = 'NULL';
    $_values['mailto']   = mysql_resq($to, $con);
    $_values['mailfrom'] = mysql_resq($from, $con);
    $_values['mailsubj'] = mysql_resq($subject, $con);
    $_values['mailtext'] = mysql_resq($message, $con);

## Insert-Statement von eigener Funktion zusammenbauen lassen

$sql = mysql_make_insert_string($table, $_values)

## Insert durchführen lassen

$ok = mysql_query($sql, $con);
  }

if (mysql_errno($con) == 0)
  {
    $err_msg = 0;
  }
  else
  {
    $err_msg = 'MySQL-Fehler: '.mysql_error();
  }

mysql_close($con);

return $err_msg;
}

##=============================================================================

PHP Main Section

##=============================================================================

hier Deinen schon vorhandenen PHP-Teil nach erfolgter Korrektur (siehe oben)

ein fügen. HTML-Teil kommt dann unten dran...

?>

Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)