[GastForen Programmierung/Entwicklung PHP und MySQL Email-Nachricht bei Neueintrag in mySQL-Tabelle

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Email-Nachricht bei Neueintrag in mySQL-Tabelle

loethelm
Beiträge gesamt: 6029

31. Mai 2006, 12:33
Beitrag # 1 von 7
Bewertung:
(1694 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

gibt es eine einfache Möglichkeit folgendes zu realisieren?

Formular. Absenden bewirkt Eintrag der Daten in eine mySQL-Tabelle. Um die Daten abzurufen habe ich eine passwort-geschützte Seite erstellt, damit ich nicht immer phpMyAdmin bemühen muss.

Nun möchte ich gern per Email benachrichtigt werden, wenn ein Eintrag in die Tabelle erfolgt ist, damit ich nicht ständig nachschauen muss. Per Google findet man nur Gästebücher wenn man nach Emailbenachrichtigung in Verbindung mit mySQL sucht.
X

Email-Nachricht bei Neueintrag in mySQL-Tabelle

jrandi
Beiträge gesamt: 794

31. Mai 2006, 13:23
Beitrag # 2 von 7
Beitrag ID: #232129
Bewertung:
(1681 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

das kannst du relatif einfach manuel coden.

das formular wird ja mittels php verarbeitet. Nachdem also der Eintrag in die DB geschrieben worden ist. hängst du folgende zeile an

mail("$email", "$sujet", "$texte", "From: $site_email");
oder
mail("meine@mail.ch", "eintrag in db", "bla bla bla", "From: mein@server.ch");

kanst auch gleich per mail schicken lassen welche daten. die variablen hast du ja.
und du kannst auch überprüfen, ob die query ausgeführt wurde

if ($query) {
mail(. . . . )
}

gruss
jurg


als Antwort auf: [#232099]

Email-Nachricht bei Neueintrag in mySQL-Tabelle

loethelm
Beiträge gesamt: 6029

1. Jun 2006, 10:01
Beitrag # 3 von 7
Beitrag ID: #232312
Bewertung:
(1671 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Jurg,

danke dir aber: ich habe jetzt die Mailfunktion hinter die Funktion zum Tabelleneintrag gesetzt.

Das ganze doppelt, weil 2 Leute eine Benachrichtigung benötigen.

Jetzt wird natürlich auch eine Mail versandt, wenn nichts eingetragen wurde, weil ein Feld leer blieb. Wie funktioniert das mit der if ($query) geschichte? Ich weiß nicht, welches query ich da abfragen soll.

Ich häng mal den Code an

Code
 
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}

$editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];
if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
$editFormAction .= "?" . $HTTP_SERVER_VARS['QUERY_STRING'];
}

if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO turnieranmeldungen (name, vorname, strasse, plz, ort, telefon, handynr, mail, verein, verband, rlplatz, idnr, sex, ak, kto, blz, bank, inh) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($HTTP_POST_VARS['name'], "text"),
GetSQLValueString($HTTP_POST_VARS['vorname'], "text"),
GetSQLValueString($HTTP_POST_VARS['strasse'], "text"),
GetSQLValueString($HTTP_POST_VARS['plz'], "text"),
GetSQLValueString($HTTP_POST_VARS['ort'], "text"),
GetSQLValueString($HTTP_POST_VARS['telefon'], "text"),
GetSQLValueString($HTTP_POST_VARS['handynr'], "text"),
GetSQLValueString($HTTP_POST_VARS['mail'], "text"),
GetSQLValueString($HTTP_POST_VARS['verein'], "text"),
GetSQLValueString($HTTP_POST_VARS['verband'], "text"),
GetSQLValueString($HTTP_POST_VARS['rlplatz'], "text"),
GetSQLValueString($HTTP_POST_VARS['idnr'], "text"),
GetSQLValueString($HTTP_POST_VARS['sex'], "text"),
GetSQLValueString($HTTP_POST_VARS['ak'], "text"),
GetSQLValueString($HTTP_POST_VARS['kto'], "text"),
GetSQLValueString($HTTP_POST_VARS['blz'], "text"),
GetSQLValueString($HTTP_POST_VARS['bank'], "text"),
GetSQLValueString($HTTP_POST_VARS['inh'], "text"));

mysql_select_db($database_xx, $dbxx;
$Result1 = mysql_query($insertSQL, $dbxx) or die(mysql_error());
}
{
mail("mail@provider.de", "Meldung", "Eine Meldung ist eingegangen", "From: mail@provider.de") ;
}
{
mail("mail@provider.de", "Meldung", "Eine Meldung ist eingegangen", "From: mail@provider.de") ;
}
?>



als Antwort auf: [#232129]

Email-Nachricht bei Neueintrag in mySQL-Tabelle

jrandi
Beiträge gesamt: 794

1. Jun 2006, 11:44
Beitrag # 4 von 7
Beitrag ID: #232356
Bewertung:
(1668 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo Loethelm

in deinem falle wäre das

if ($result1) {
mail ("1email-adresse,2email-adresse", "meldung" etc
}

allerdings ohne gewähr, ob da keine mails abgeschickt werden, wenn formular nicht richtig ausgefüllt ist. da muss ich passen, verstehe deine überprüfung nicht ganz (auch wenn sicher richtig). ich mache dies jeweils so :

$name = $_POST["name"]; // etc alle var zurückholen

if ($name=="" || $email=="" || $vorname=="" || $plz=="") {
header ("location: fehler.php");
exit;
}
und noch ein paar weitere überprüfungen, Oesi hat das ja bereits umfassend festgehalten
http://www.hilfdirselbst.ch/foren/Wie_kann_ich_effektiv_Formularspam_verhindern_P215882.html?sb=post_latest_reply;so=ASC;forum_view=forum_view_collapsed;;page=unread#unread

somit wird weder in die DB geschrieben, noch ein mail versandt. der User wird auf eine "fehlerseite geleitet und aufgefordert, alle pflichtfelder auszufüllen.

gruss
jurg


als Antwort auf: [#232312]

Email-Nachricht bei Neueintrag in mySQL-Tabelle

loethelm
Beiträge gesamt: 6029

1. Jun 2006, 12:32
Beitrag # 5 von 7
Beitrag ID: #232373
Bewertung:
(1664 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Jurg,

funktioniert perfekt. Vielen Dank.
Was jetzt noch nicht geht ist eine Weiterleitung auf eine Danke-Seite. Wenn ich die per Javascript auf den Formular-Button lege, wird wieder nichts in die DB eingetragen.

Per PHP geht das wie? Ich les da immer was über header-Probleme, die es bei mir sicherlich geben wird, da ich ja vorab schon Sachen sende. Hast du da auch noch ne schlaue Idee zu? ;-)

Oder könnte das gehen mit sowas wie

Code
if ($result1) {  
mail ("1email-adresse,2email-adresse", "meldung" etc ;
echo "<meta http-equiv="refresh" content="0;url=http://meinedomain.de/dankeseite.html">
}



als Antwort auf: [#232356]

Email-Nachricht bei Neueintrag in mySQL-Tabelle

jrandi
Beiträge gesamt: 794

1. Jun 2006, 12:53
Beitrag # 6 von 7
Beitrag ID: #232384
Bewertung:
(1658 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hallo,

müsste man ausprobieren, sieht nicht schlecht aus.

was sicher geht :

if ($result1) {
mail ("1email-adresse,2email-adresse", "meldung" etc
header ("location: danke.html");
exit;
}

gruss
jurg


als Antwort auf: [#232373]

Email-Nachricht bei Neueintrag in mySQL-Tabelle

loethelm
Beiträge gesamt: 6029

1. Jun 2006, 13:00
Beitrag # 7 von 7
Beitrag ID: #232386
Bewertung:
(1655 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

deine Variante funktioniert perfekt. Meine nicht, warum auch immer. Aber jetzt hab ich alles, was ich brauche. Vielen Dank.


als Antwort auf: [#232384]
X