Hallo,
ich Speicher Formularinhalte in eine Datenbanktabelle und müsste beim Abschicken des Form zwei Werte in der DB überprüfen, nämlich ein E-Mail-Adresse und ein Datum (Ymd). Es soll so Läufern, daß man nur einmal am Tag mit dieser E-Mailadresse einen Eintrag machen kann.
Wie lässt sich sowas umsetzen? Ich schätze mal custom-function, allerdings hat sich mir das noch nicht erschlossen.
Danke für eure Hilfe.
Hallo,
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.
Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Re: XForm zwei Felder in DB überprüfen
Ne built-in Lösung würde mich auch interessieren.
Meine Lösung war damals: XForm per PHP bauen und nach submit die Prüfungen machen. Wenn ok dann von Hand in die DB damit. Wenn nicht dann Fehlermeldung raus und der User muss halt dann dern Zurück Button betätigen und seine Daten korrigieren.
http://www.redaxo.org/de/forum/addons-f ... ml#p108487
http://www.redaxo.org/de/download/module/?modul_id=647
Meine Lösung war damals: XForm per PHP bauen und nach submit die Prüfungen machen. Wenn ok dann von Hand in die DB damit. Wenn nicht dann Fehlermeldung raus und der User muss halt dann dern Zurück Button betätigen und seine Daten korrigieren.
http://www.redaxo.org/de/forum/addons-f ... ml#p108487
http://www.redaxo.org/de/download/module/?modul_id=647
Re: XForm zwei Felder in DB überprüfen
Hallo,
ich denke da gibt es zwei Lösungsansätze:
Gruß
Gunter
ich denke da gibt es zwei Lösungsansätze:
- 1. über eine Funktion die zum Extension Point "REX_XFORM_SAVED" aus "rex_xform_action_db" registriert wurde, oder
2. über eine eigene XForm-Action Class basierend auf der Klasse "rex_xform_action_email"
Gruß
Gunter
read the manual first
Re: XForm zwei Felder in DB überprüfen
hmm, ok.
Naja, nur der USer soll seine Daten nicht korrigieren, weil er nur einen Eintrag am Tag machen darf.
Es geht dabei um ein Gewinnspiel, bisher hatte ich geprüft ob die E-Mail-Adresse in der DB unique ist, aber das kann ich ja jetzt nicht mehr so machen.
Puuh, Extension-Point ist mal wieder etwas Neuland für mich.
Gibt's da irgendwo was zum Nachlesen für den Einstieg?
Naja, nur der USer soll seine Daten nicht korrigieren, weil er nur einen Eintrag am Tag machen darf.
Es geht dabei um ein Gewinnspiel, bisher hatte ich geprüft ob die E-Mail-Adresse in der DB unique ist, aber das kann ich ja jetzt nicht mehr so machen.
Puuh, Extension-Point ist mal wieder etwas Neuland für mich.
Gibt's da irgendwo was zum Nachlesen für den Einstieg?
Re: XForm zwei Felder in DB überprüfen
Ich hätte da einen rein theoretischen Ansatz, wie es funktionieren könnte, sofern du XForm per PHP baust, was übrigens sehr empfehlenswert ist, sobald es etwas komplexer wird!
-> zusätzliches Feld für Zeitstempel in DB-Tabelle anlegen
-> Zeitstempel per php (sql) immer auslesen und in ein value x-form-hidden-field packen
-> mit validate-field intfromto den Zeitstempel überprüfen (ob + 1 Tag)
-> wenn intfromto Validierung OK, neuen Zeitstempel setzen und auch neuen Eintrag machen (wenn nok kommt ja e nur die warning_message von intfromto)
LG
Robert
-> zusätzliches Feld für Zeitstempel in DB-Tabelle anlegen
-> Zeitstempel per php (sql) immer auslesen und in ein value x-form-hidden-field packen
-> mit validate-field intfromto den Zeitstempel überprüfen (ob + 1 Tag)
-> wenn intfromto Validierung OK, neuen Zeitstempel setzen und auch neuen Eintrag machen (wenn nok kommt ja e nur die warning_message von intfromto)
LG
Robert
Re: XForm zwei Felder in DB überprüfen
Das hier hilft möglicherweise: http://www.redaxo.org/de/doku/extension-points/nitzer hat geschrieben: Puuh, Extension-Point ist mal wieder etwas Neuland für mich.
Gibt's da irgendwo was zum Nachlesen für den Einstieg?
Das klingt übrigens sehr viel komplizierter als es tatsächlich ist:
Du benötigst eine Funktion die immer dann aktiv wird, wenn jemand das Formular ausgefüllt und abgeschickt hat.
Damit die Funktions ohne Eingriff in die X-Form Klassen aufgerufen wird, bedienst Du Dich eines bereits vorhandenen Extension Points, hier :REX_XFORM_SAVED
Beispiel für eine Funktion:
Code: Alles auswählen
<?php
function execute_ep($params) {
$subject = $params['subject'];
switch ($params['extension_point'])
{
case "REX_XFORM_SAVED":
echo "<pre>".print_r($params,TRUE)."</pre>";
break;
}
}
?>
Jetzt musst Du die Funktion beim Extension-Point registrieren:
Code: Alles auswählen
rex_register_extension('REX_XFORM_SAVED','execute_ep');
Code: Alles auswählen
<?php
$mypage = "tester"; // only for this file
if (!isset($_SESSION))
{
session_start();
}
// ---------- Allgemeine AddOn Config
include $REX["INCLUDE_PATH"] . "/addons/tester/functions/general_functions_inc.php";
$REX['ADDON']['name'][$mypage] = $mypage; // name
$REX['ADDON']['version'][$mypage] = '1.0';
$REX['ADDON']['author'][$mypage] = 'Gunter Pietzsch';
rex_register_extension('REX_XFORM_SAVED','execute_ep');
Code: Alles auswählen
include $REX["INCLUDE_PATH"] . "/addons/tester/functions/general_functions_inc.php";
Ich hoffe ich habe das nicht zu kompliziert ausgedrückt
Gunter
read the manual first
- Jan.Kristinus
- Admin
- Beiträge: 2166
- Registriert: 24. Aug 2004, 22:11
- Wohnort: Frankfurt
- Kontaktdaten: ICQ Website
Re: XForm zwei Felder in DB überprüfen
verstehe ich das falsch ? Müsste doch einfach so gehen:
datestamp Feld anlegen, welches nur das Datum beinhaltet was bei der Erstellung des Datensatzes gespeichert wird. Und dann nach unique prüfen. (emailfeld,datefeld).. siehe Beschreibung.
datestamp // datestamp|datefeld|Ymd|db|0
unique // validate|unique|emailfeld,datefeld|Sie haben heute bereits einen Eintrag gemacht|[table]
passt das ?
lg
jan
datestamp Feld anlegen, welches nur das Datum beinhaltet was bei der Erstellung des Datensatzes gespeichert wird. Und dann nach unique prüfen. (emailfeld,datefeld).. siehe Beschreibung.
datestamp // datestamp|datefeld|Ymd|db|0
unique // validate|unique|emailfeld,datefeld|Sie haben heute bereits einen Eintrag gemacht|[table]
passt das ?
lg
jan
Yakamara Media GmbH & Co. KG | Kaiserstrasse 69 | 60329 Frankfurt
Tel.: 069-900.20.60.30
http://www.yakamara.de/
Tel.: 069-900.20.60.30
http://www.yakamara.de/
Re: XForm zwei Felder in DB überprüfen
ist das wirklich so?
Die Unique Prüfung stellt doch sicher dass ein Feld innerhalb der ganzen Tabelle einmalig ist. Das ist doch aber, durchaus gewollt, nicht der Fall wenn ein anderer User an diesem Tag aktiv geworden ist.
Dieser Weg geht nur wenn ich datum und z.B. die User-Id kombiniere, nur das Datum reicht hier meise Erachten nicht.
LG
Gunter
Die Unique Prüfung stellt doch sicher dass ein Feld innerhalb der ganzen Tabelle einmalig ist. Das ist doch aber, durchaus gewollt, nicht der Fall wenn ein anderer User an diesem Tag aktiv geworden ist.
Dieser Weg geht nur wenn ich datum und z.B. die User-Id kombiniere, nur das Datum reicht hier meise Erachten nicht.
LG
Gunter
read the manual first
Re: XForm zwei Felder in DB überprüfen
ich schätz mal dass die kombination beider felder überprüft wird...Jan.Kristinus hat geschrieben: datestamp // datestamp|datefeld|Ymd|db|0
unique // validate|unique|emailfeld,datefeld|Sie haben heute bereits einen Eintrag gemacht|[table]
- Jan.Kristinus
- Admin
- Beiträge: 2166
- Registriert: 24. Aug 2004, 22:11
- Wohnort: Frankfurt
- Kontaktdaten: ICQ Website
Re: XForm zwei Felder in DB überprüfen
genau Ingo,
das ist die Kombination die wichtig ist.. "emailfeld,datefeld"
lg
das ist die Kombination die wichtig ist.. "emailfeld,datefeld"
lg
Yakamara Media GmbH & Co. KG | Kaiserstrasse 69 | 60329 Frankfurt
Tel.: 069-900.20.60.30
http://www.yakamara.de/
Tel.: 069-900.20.60.30
http://www.yakamara.de/
Re: XForm zwei Felder in DB überprüfen
Das stimmt natürlich. Ich habe total übersehen das hier eine Felderkombi geprüft wird.
LG
Gunter
LG
Gunter
read the manual first
Re: XForm zwei Felder in DB überprüfen
Code: Alles auswählen
validate|unique|email,date|Sie haben heute bereits einen Eintrag gemacht|rex_gewinnspiel_weihnachten
Wenn ich nur auf ein Feld prüfe geht es natürlich.
Redaxo-Version ist 4.4.1 und Form 2.9.3.
Ginge das überhaupt schon in der Kombination?
Zuletzt geändert von nitzer am 12. Nov 2014, 13:07, insgesamt 1-mal geändert.
- Jan.Kristinus
- Admin
- Beiträge: 2166
- Registriert: 24. Aug 2004, 22:11
- Wohnort: Frankfurt
- Kontaktdaten: ICQ Website
Re: XForm zwei Felder in DB überprüfen
[table] beachtet ?unique // validate|unique|emailfeld,datefeld|Sie haben heute bereits einen Eintrag gemacht|[table]
lg
jan
Yakamara Media GmbH & Co. KG | Kaiserstrasse 69 | 60329 Frankfurt
Tel.: 069-900.20.60.30
http://www.yakamara.de/
Tel.: 069-900.20.60.30
http://www.yakamara.de/
Re: XForm zwei Felder in DB überprüfen
Ist doch drin!
- Jan.Kristinus
- Admin
- Beiträge: 2166
- Registriert: 24. Aug 2004, 22:11
- Wohnort: Frankfurt
- Kontaktdaten: ICQ Website
Re: XForm zwei Felder in DB überprüfen
ach stimmt.. sah für mich wie eine 2. Zeile aus.. "eigentlich" sollte das gehen.. ich hoffe das ist kein bug..
PM mit ZUgang für mich zum nachsehen ?
lg
jan
PM mit ZUgang für mich zum nachsehen ?
lg
jan
Yakamara Media GmbH & Co. KG | Kaiserstrasse 69 | 60329 Frankfurt
Tel.: 069-900.20.60.30
http://www.yakamara.de/
Tel.: 069-900.20.60.30
http://www.yakamara.de/
- Jan.Kristinus
- Admin
- Beiträge: 2166
- Registriert: 24. Aug 2004, 22:11
- Wohnort: Frankfurt
- Kontaktdaten: ICQ Website
Re: XForm zwei Felder in DB überprüfen
Vielen Dank f+r den Zugang..
Leider ist das nicht die aktuelle XForm Version .. deswegen geht das so nicht ..
Auch die REDAXO Version ist etwas älter, deswegen lässt sich die neue XFORM
nicht installieren.
D.h. entweder selbst direkt in der XForm das unique validate anpassen.
neue Variante ist hier: https://github.com/yakamara/redaxo_xfor ... ue.inc.php
oder halt redaxo updaten etc ..
lg
Leider ist das nicht die aktuelle XForm Version .. deswegen geht das so nicht ..
Auch die REDAXO Version ist etwas älter, deswegen lässt sich die neue XFORM
nicht installieren.
D.h. entweder selbst direkt in der XForm das unique validate anpassen.
neue Variante ist hier: https://github.com/yakamara/redaxo_xfor ... ue.inc.php
oder halt redaxo updaten etc ..
lg
Yakamara Media GmbH & Co. KG | Kaiserstrasse 69 | 60329 Frankfurt
Tel.: 069-900.20.60.30
http://www.yakamara.de/
Tel.: 069-900.20.60.30
http://www.yakamara.de/
Re: XForm zwei Felder in DB überprüfen
OK, danke. Ich werde mir das mal reinziehen.
Vielleicht ist der Aufwand aber auch zu groß.
Grüße
Andreas
Vielleicht ist der Aufwand aber auch zu groß.
Grüße
Andreas
- Jan.Kristinus
- Admin
- Beiträge: 2166
- Registriert: 24. Aug 2004, 22:11
- Wohnort: Frankfurt
- Kontaktdaten: ICQ Website
Re: XForm zwei Felder in DB überprüfen
einfach die Klassen vergleichen und anpassen.. ich denke das ist überschaubar .. 30min für einen PHP Kenner .. für alle anderen halt etwas länger..
lg
Jan
lg
Jan
Yakamara Media GmbH & Co. KG | Kaiserstrasse 69 | 60329 Frankfurt
Tel.: 069-900.20.60.30
http://www.yakamara.de/
Tel.: 069-900.20.60.30
http://www.yakamara.de/
Re: XForm zwei Felder in DB überprüfen
boah, ich glaub ich checke nicht