Anmeldungen direkt in SQL-DB aktualisieren
Wenn der Vorname nicht im Formular eingegeben wird, dann ist die Variable $vorname natürlich undefiniert, also nicht vergessen vor # Alle uebergebenen Werte in die Nachricht uebernehmen $vorname=\"\"; anzugeben.
Ansonsten ist das alles richtig. Du kannst zu Kontrollzwecken das Versenden der E-Mail drinlassen oder rausnehmen, wenn es deiner Meinung nach korrekt funktioniert.
Ansonsten ist das alles richtig. Du kannst zu Kontrollzwecken das Versenden der E-Mail drinlassen oder rausnehmen, wenn es deiner Meinung nach korrekt funktioniert.
- powdermaniac.de
- Beiträge: 46
- Registriert: 06.05.2008, 15:59
- Kontaktdaten:
@MirkoJa mit entsprechendem Zeitaufwand schon.Zu den angesprochenen nicht vorhanden scripten:
theoretisch ist es aber möglich das ich mir sowas selber baue?
Ich habe das newsletter-script jetzt angepasst.
Und zwar wird nun im Abschnitt
# Versenden der Mail
$Aktion = \"subscribe\"
ein INSERT INTO table (vorname,email,..) VALUES ($vorname,$email,..) ON DUPLICATE KEY UPDATE vorname=VALUES($vorname))
ausgeführt.
Den Vornamen, den ich ja auch speichern möchte, \'merke\' ich mir voher im Abschnitt
# Alle uebergebenen Werte in die Nachricht uebernehmen
mit
if ( $key == \"Vorname\"){
$vorname = $crypt->phpDecrypt(rawurldecode($val));
}
bei POST und GET.
Im else (unsubscribe) mach ich ein einfaches DELETE WHERE email=email.
Siehst du in dieser Vorgehensweise Probleme?
Reicht es aus, um die Anmelde/Abmelde Mails zu unterbinden folgende Zeile auszukommentieren?
# Versenden der Mail
@mail($Recipient, $Action, $message, $headers);
Nein so funktioniert es eben nicht, weil das Feld nicht existiert. Ich muss halt alle übrigen Angaben [feld] durch nichts ersetzen.Original von powdermaniac.de:Du ersetzt ja bestimmt die [Feldname] durch den Inhalt der Feldname: aus der AnmeldeEmail. Wenns so ist müsste da dann \'einfach\' leer eingefügt werden. Ich weiss natürlich nicht, wie genau das bei dir funktioniert...Gut darüber könnte ich nochmals nachdenken, also die überflüssigen Felder alle rauslöschen.
Ja mit entsprechendem Zeitaufwand schon.Zu den angesprochenen nicht vorhanden scripten:
theoretisch ist es aber möglich das ich mir sowas selber baue?
- powdermaniac.de
- Beiträge: 46
- Registriert: 06.05.2008, 15:59
- Kontaktdaten:
Du ersetzt ja bestimmt die [Feldname] durch den Inhalt der Feldname: aus der AnmeldeEmail. Wenns so ist müsste da dann \'einfach\' leer eingefügt werden. Ich weiss natürlich nicht, wie genau das bei dir funktioniert...Gut darüber könnte ich nochmals nachdenken, also die überflüssigen Felder alle rauslöschen.
Zu den angesprochenen nicht vorhanden scripten:
theoretisch ist es aber möglich das ich mir sowas selber baue?
Zuletzt geändert von powdermaniac.de am 11.06.2008, 20:27, insgesamt 1-mal geändert.
Gar nicht außer du setzt eine Wert für Vorname ein. Z.B. könntest wenn Vorname leer ist # als Wert für Vorname im Script ausgeben lassen. Musst natürlich dann später den Wert noch ersetzen.okay. habs jetzt vor der IP eingebaut. aber einen unterschied macht das nicht. im body steht immer noch Vorname: und nichts dahinter.
selbst wenn Vorname: nicht im Body vorkommt, ändert das nichts daran, das [Vorname] in die DB geschrieben wird.
Wie kann ich das nun ändern?
\"nur\" klingt immer gut, leider ist der Aufwand höher als man denkt.Ich glaube auch, das ich jetzt die mySQL-DB nutze und nicht mehr lokal Access bleibt der Aufwand der Gleiche.
Ich kann die Anmeldungen direkt in die DB nicht nutzen (wegen der Platzhalter wenn ein Feld nicht gefüllt). Daher muss ich weiterhin die An-/Abmeldungen in der Empfängerliste verwalten. Dann die mySQL-DB von Hand leeren. Und dann die Empfängerliste exportieren.
Ich weiss, das ist bestimmt sehr viel verlangt, aber ist es nicht möglich, über diesen workflow nachzudenken. Es sind ja, wenn ich\'s jetzt richtig überblicke, \'nur\' 2 Sachen, an denen geschraubt werden müsste:
Gut darüber könnte ich nochmals nachdenken, also die überflüssigen Felder alle rauslöschen.2.
Felder die nicht gefüllt sind, dürfen nicht einfach mit dem Platzhalter in die DB geschrieben werden (direkte Anmeldung in SQL-DB)
Nein solche Scripte gibt es nicht. www.supermailinglist.de wird es geben, das basiert aber dann auf einer vordefinierten Tabellenstruktur, eigene Tabellen kann man nicht verwenden.Gibt es evtl. schon Scripte von dir, die die An-/Abmeldungen direkt in die DB schreiben, ohne SM? Da wären ja dann ganz andere SQL-Möglichkeiten vorhanden.
Das macht keiner so wie du. Die meisten halten die Daten komplett im SuperMailer und nicht in externen Datenquellen. Sind die Daten extern z.B. im Outlook oder Datenbanken, dann werden diese jedesmal neu importiert. Abgemeldete Adressen werden in die Blockliste geschrieben, damit bekommen diejenigen keine Mails mehr.Hoffe ich nerv dich mit dem ganzen Kram nicht. Mich wundert nur, das noch niemand so arbeiten möchte wie ich. Oder die waren einfach cleverer das umzusetzen. :d_gutefrage:
- powdermaniac.de
- Beiträge: 46
- Registriert: 06.05.2008, 15:59
- Kontaktdaten:
okay. habs jetzt vor der IP eingebaut. aber einen unterschied macht das nicht. im body steht immer noch Vorname: und nichts dahinter.
selbst wenn Vorname: nicht im Body vorkommt, ändert das nichts daran, das [Vorname] in die DB geschrieben wird.
Wie kann ich das nun ändern?
Ich glaube auch, das ich jetzt die mySQL-DB nutze und nicht mehr lokal Access bleibt der Aufwand der Gleiche.
Ich kann die Anmeldungen direkt in die DB nicht nutzen (wegen der Platzhalter wenn ein Feld nicht gefüllt). Daher muss ich weiterhin die An-/Abmeldungen in der Empfängerliste verwalten. Dann die mySQL-DB von Hand leeren. Und dann die Empfängerliste exportieren.
Ich weiss, das ist bestimmt sehr viel verlangt, aber ist es nicht möglich, über diesen workflow nachzudenken. Es sind ja, wenn ich\'s jetzt richtig überblicke, \'nur\' 2 Sachen, an denen geschraubt werden müsste:
1.
Für den Export würde ja schon sehr hilfreich sein, ein SQL-Statement VOR dem eigentlichen Export absetzen zu können. Indem könnte man dann die Tabelle leeren.
2.
Felder die nicht gefüllt sind, dürfen nicht einfach mit dem Platzhalter in die DB geschrieben werden (direkte Anmeldung in SQL-DB)
Mein Problem ist folgendes:
Ich habe Gewinnspielteilnehmer die mit in den Verteiler kommen. Diese werden von extern zugespielt (in die Empfängerliste). Dabei sind natürlich auch Leute, die schon im Verteiler sind, aber evtl. mit anderer Anschrift etc. Die müssten ein UPDATE erfahren. Das funktioniert also, wenn Punkt 1 erfüllt wäre. Der gesamte Verteiler wird in die DB ausgelagert.
Nun könnte ich ja die Gewinnspieler auch per angepasstem Newsletter-Script erfassen. Da ist aber wieder das Problem unter 2. Und in diesem Fall noch mit viel mehr Feldern. Auch das über ODBC nur ein SQL-Statement möglich ist, verhindert hier zu sagen: EMail schon vorhanden -> andere Felder UPDATE
Gibt es evtl. schon Scripte von dir, die die An-/Abmeldungen direkt in die DB schreiben, ohne SM? Da wären ja dann ganz andere SQL-Möglichkeiten vorhanden.
Hoffe ich nerv dich mit dem ganzen Kram nicht. Mich wundert nur, das noch niemand so arbeiten möchte wie ich. Oder die waren einfach cleverer das umzusetzen. :d_gutefrage:
selbst wenn Vorname: nicht im Body vorkommt, ändert das nichts daran, das [Vorname] in die DB geschrieben wird.
Wie kann ich das nun ändern?
Ich glaube auch, das ich jetzt die mySQL-DB nutze und nicht mehr lokal Access bleibt der Aufwand der Gleiche.
Ich kann die Anmeldungen direkt in die DB nicht nutzen (wegen der Platzhalter wenn ein Feld nicht gefüllt). Daher muss ich weiterhin die An-/Abmeldungen in der Empfängerliste verwalten. Dann die mySQL-DB von Hand leeren. Und dann die Empfängerliste exportieren.
Ich weiss, das ist bestimmt sehr viel verlangt, aber ist es nicht möglich, über diesen workflow nachzudenken. Es sind ja, wenn ich\'s jetzt richtig überblicke, \'nur\' 2 Sachen, an denen geschraubt werden müsste:
1.
Für den Export würde ja schon sehr hilfreich sein, ein SQL-Statement VOR dem eigentlichen Export absetzen zu können. Indem könnte man dann die Tabelle leeren.
2.
Felder die nicht gefüllt sind, dürfen nicht einfach mit dem Platzhalter in die DB geschrieben werden (direkte Anmeldung in SQL-DB)
Mein Problem ist folgendes:
Ich habe Gewinnspielteilnehmer die mit in den Verteiler kommen. Diese werden von extern zugespielt (in die Empfängerliste). Dabei sind natürlich auch Leute, die schon im Verteiler sind, aber evtl. mit anderer Anschrift etc. Die müssten ein UPDATE erfahren. Das funktioniert also, wenn Punkt 1 erfüllt wäre. Der gesamte Verteiler wird in die DB ausgelagert.
Nun könnte ich ja die Gewinnspieler auch per angepasstem Newsletter-Script erfassen. Da ist aber wieder das Problem unter 2. Und in diesem Fall noch mit viel mehr Feldern. Auch das über ODBC nur ein SQL-Statement möglich ist, verhindert hier zu sagen: EMail schon vorhanden -> andere Felder UPDATE
Gibt es evtl. schon Scripte von dir, die die An-/Abmeldungen direkt in die DB schreiben, ohne SM? Da wären ja dann ganz andere SQL-Möglichkeiten vorhanden.
Hoffe ich nerv dich mit dem ganzen Kram nicht. Mich wundert nur, das noch niemand so arbeiten möchte wie ich. Oder die waren einfach cleverer das umzusetzen. :d_gutefrage:
Zuletzt geändert von powdermaniac.de am 11.06.2008, 16:03, insgesamt 1-mal geändert.
Nein, die Reihenfolge spielt absolut keine Rolle. Für die Zuordnung durchsucht er alle Werte vor dem : und nimmt den Inhalt nach dem : .muss das mit dem vorname wirklich hinter die IP?
weil in den mails steht
EMail:
Vorname:
IP:
ist das an der stelle dann nicht zu spät?
Wieso hängst du das an Link dran? Meine Variante mit dem Wert vor der IP ist doch viel einfacher.
habe jetzt mit:
if( ($s != \"\") and ( trim($s) != \"Vorname=\") )
$Link .= \"&\".$s;
den vornamen im bestätigungslink weggelassen. war aber blöd, weil das ja nichts daran ändert, das der sql-befehl für die anmeldund dann den platzhalter schreibt.
ich verzweifle bald. ist das denn so ungewöhnlich, wie ich meine empfänger verwalten möchte?
Da wird das mit ; auch nicht funktionieren, die Schnittstelle unterstützt damit SQL-Scripte mit mehreren Anweisungen auch nicht.ODBC: das scheint dann wohl nicht zu gehen. es kommt immer ein sql syntax error. das liegt also am ODBC. aha.
- powdermaniac.de
- Beiträge: 46
- Registriert: 06.05.2008, 15:59
- Kontaktdaten:
muss das mit dem vorname wirklich hinter die IP?
weil in den mails steht
EMail:
Vorname:
IP:
ist das an der stelle dann nicht zu spät?
habe jetzt mit:
if( ($s != \"\") and ( trim($s) != \"Vorname=\") )
$Link .= \"&\".$s;
den vornamen im bestätigungslink weggelassen. war aber blöd, weil das ja nichts daran ändert, das der sql-befehl für die anmeldund dann den platzhalter schreibt.
ich verzweifle bald. ist das denn so ungewöhnlich, wie ich meine empfänger verwalten möchte?
ODBC: das scheint dann wohl nicht zu gehen. es kommt immer ein sql syntax error. das liegt also am ODBC. aha.
weil in den mails steht
EMail:
Vorname:
IP:
ist das an der stelle dann nicht zu spät?
habe jetzt mit:
if( ($s != \"\") and ( trim($s) != \"Vorname=\") )
$Link .= \"&\".$s;
den vornamen im bestätigungslink weggelassen. war aber blöd, weil das ja nichts daran ändert, das der sql-befehl für die anmeldund dann den platzhalter schreibt.
ich verzweifle bald. ist das denn so ungewöhnlich, wie ich meine empfänger verwalten möchte?
ODBC: das scheint dann wohl nicht zu gehen. es kommt immer ein sql syntax error. das liegt also am ODBC. aha.
Zuletzt geändert von powdermaniac.de am 11.06.2008, 14:45, insgesamt 2-mal geändert.
Müsstest das Script am besten anpassen. Im Script nachokay. hab ich. funktioniert aber nur, wenn der vorname auch gefüllt ist. da es den newsletter-anmeldern freisteht diesen anzugeben, ist er aber auch eben manchmal nicht gefüllt.
kann man das umgehen, indem man am anmelde-email-body ändert (vorname:) weglassen, wenn vorname nicht gefüllt?
$message .= \"IP: \".$REMOTE_ADDR.\"n\";
suchen.
Und einfach mit einer IF-Anweisung prüfen
Code: Alles auswählen
if( !isset($_GET["Vorname]) && !isset($_POST["Vorname]) )
$message .= "Vorname: "."n";
Ähmm das habe ich selbst noch nicht probiert, musst testen ob das per ODBC funktioniert. Hinter der SQL-Anweisung ein ; setzen und die nächste Anweisung angeben. Per PHP funktioniert es mit ; nicht, man muss mehrere mysql_query() Anweisungen verwenden.kann man bei den sql befehlen auch mehrere angeben oder immer nur einen? ich frage, weil ich beim export der empfänger in richtig mysql wieder probleme sehen, wenn ich \'vonHand\'-Änderungen vorgenommen habe.
Nein muss man immer importieren lassen. Ein View wären ganz andere Anweisungen im Hintergrund für das Löschen, Ändern, Sortieren usw.. und nicht jeder hat eine Datenbank auf dem eigenen PC installiert. Für diejenigen ohne Datenbank wäre die Installation damit viel zu schwierig.könnten die Empfänger in SM nicht auch als VIEW auf die DB \'angezeigt\' werden?
- powdermaniac.de
- Beiträge: 46
- Registriert: 06.05.2008, 15:59
- Kontaktdaten:
okay. hab ich. funktioniert aber nur, wenn der vorname auch gefüllt ist. da es den newsletter-anmeldern freisteht diesen anzugeben, ist er aber auch eben manchmal nicht gefüllt.
kann man das umgehen, indem man am anmelde-email-body ändert (vorname:) weglassen, wenn vorname nicht gefüllt?
kann man bei den sql befehlen auch mehrere angeben oder immer nur einen? ich frage, weil ich beim export der empfänger in richtig mysql wieder probleme sehen, wenn ich \'vonHand\'-Änderungen vorgenommen habe.
könnten die Empfänger in SM nicht auch als VIEW auf die DB \'angezeigt\' werden?
sorry mirko, ich kann mir vorstellen, das ich mit meinen fragen nerve.
kann man das umgehen, indem man am anmelde-email-body ändert (vorname:) weglassen, wenn vorname nicht gefüllt?
kann man bei den sql befehlen auch mehrere angeben oder immer nur einen? ich frage, weil ich beim export der empfänger in richtig mysql wieder probleme sehen, wenn ich \'vonHand\'-Änderungen vorgenommen habe.
könnten die Empfänger in SM nicht auch als VIEW auf die DB \'angezeigt\' werden?
sorry mirko, ich kann mir vorstellen, das ich mit meinen fragen nerve.
Beim Export werden alle Feldnamen der Empfängerliste genommen und in der SQL-Anweisung ersetzt.
Bei den Anmeldungen werden aber nur die Werte genommen, die in der Anmeld-E-Mail stehen. Das können auch Feldwerte sein, die niemals in der SuperMailer-Empfängerliste auftauchen aber in die SQL-DB sollen. Du musst also die SQL-Anweisung so anpassen, das nur die Werte aus der E-Mail in der Anweisung auftauchen.
Bei den Anmeldungen werden aber nur die Werte genommen, die in der Anmeld-E-Mail stehen. Das können auch Feldwerte sein, die niemals in der SuperMailer-Empfängerliste auftauchen aber in die SQL-DB sollen. Du musst also die SQL-Anweisung so anpassen, das nur die Werte aus der E-Mail in der Anweisung auftauchen.
- powdermaniac.de
- Beiträge: 46
- Registriert: 06.05.2008, 15:59
- Kontaktdaten:
ich verwende folgende syntax für die eintragung der anmeldungen direkt in der sql-db:
INSERT INTO test (anrede,vorname,nachname,strasse,plz,ort,EMail,land,telefon,aktionen) VALUES ([anrede],\'[vorname]\',\'[nachname]\',\'[strasse]\',\'[plz]\',\'[ort]\',\'[EMail]\',\'[land]\',\'[telefon]\',\'[aktionen]\' )
bei leeren feldern wir allerdings der platzhalter (z.b. [anrede]) in die DB geschrieben.
beim export mit:
INSERT [c=red]IGNORE[/color] INTO test (anrede,vorname,nachname,strasse,plz,ort,EMail,land,telefon,aktionen) VALUES (\'[anrede]\',\'[vorname]\',\'[nachname]\',\'[strasse]\',\'[plz]\',\'[ort]\',\'[EMail]\',\'[land]\',\'[telefon]\',\'[aktionen]\' )
passiert dies aber nicht.
woran liegt das?
INSERT INTO test (anrede,vorname,nachname,strasse,plz,ort,EMail,land,telefon,aktionen) VALUES ([anrede],\'[vorname]\',\'[nachname]\',\'[strasse]\',\'[plz]\',\'[ort]\',\'[EMail]\',\'[land]\',\'[telefon]\',\'[aktionen]\' )
bei leeren feldern wir allerdings der platzhalter (z.b. [anrede]) in die DB geschrieben.
beim export mit:
INSERT [c=red]IGNORE[/color] INTO test (anrede,vorname,nachname,strasse,plz,ort,EMail,land,telefon,aktionen) VALUES (\'[anrede]\',\'[vorname]\',\'[nachname]\',\'[strasse]\',\'[plz]\',\'[ort]\',\'[EMail]\',\'[land]\',\'[telefon]\',\'[aktionen]\' )
passiert dies aber nicht.
woran liegt das?