Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:

THEMA: Hash erzeugen + Checkbox triggert Eintrag in DB

Hash erzeugen + Checkbox triggert Eintrag in DB 29 Feb 2016 16:07 #3511

  • myscy
  • myscys Avatar
  • OFFLINE
  • Beiträge: 13
  • Dank erhalten: 3
Hallo Leute,

ich bastele gerade an dem folgenden Szenario und komme blöderweise nicht weiter. Hat jemand von euch eine Idee, wie ich das lösen könnte?
Bin für jeden Tipp dankbar.


Szenario:

Teil 1
  • Benutzer (public) trägt seine Kontaktdaten in ein Kontaktformular (Formular 1) ein und schickt dieses ab.
  • Kontaktanfrage wird in der DB gespeichert.
  • Benutzer bekommt eine E-Mail mit einem (individuellen) Link zu Formular 2.

Teil 2
Formular 2 (1x Text, 1x Checkbox, ggf Submit-Button, wenn nötig)

Wenn die Checkbox aktiviert, dann
  1. wird dem Benutzer ein Schlüssel angezeigt. Dieser ist bereits in der DB gespeichert.
  2. wird ein Eintrag in der DB angelegt/geloggt, dass dieser bestimmte Benutzer zu der aktuellen Uhrzeit die Checkbox aktiviert hat bzw. den Schlüssel bekommen hat.


Teil 1 habe ich (bis auf die Sache mit dem Hash, s.u.) erfolgreich umgesetzt. Nun 2 Fragen bzgl. der eindeutigen Zuordnung der Benutzer und ihrer Kontaktanfragen:

1) Formular 1: Hash-String
Ist es möglich, beim Speichern der Kontaktanfrage einen individuellen Wert zu erzeugen (am besten einen Hashwert, alternativ die ID der Kontaktanfrage aus der DB) und diesen sowohl in der DB zu speichern, als auch zugleich für den Inhalt der verschickten E-Mail zu verwenden (Link zu Formular 2, www.webseite.de/index.php?option=com_cck...dit&type=schluessel&hash=abcdeFgH13 )?

2) Formular 2: Speichern und anschließend Schlüssel anzeigen
Wie bekommt man es in SEBLOD® hin, dass bereits durch das Aktivieren der Checkbox (und nicht durch den Submimt-Button) ein Eintrag in die DB gespeichert wird? Anschließend würde ich durch die "Conditional States" den versteckten Schlüssel einblenden lassen.
Oder geht das NUR durch das Abschicken des Bubmit-Buttons?
In dem Fall weiß ich allerdings nicht, wie man anschließend einen Text/Nachricht ausgibt, in dem/der der Schlüssel aus der DB angezeigt wird.


Wie gesagt, ich bin für jeden Tipp dankbar :)


Viele Grüße
myscy
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Hash erzeugen + Checkbox triggert Eintrag in DB 29 Feb 2016 19:04 #3513

  • time4mambo
  • time4mambos Avatar
  • OFFLINE
  • Mal gucken ob was passiert...
  • Beiträge: 903
  • Dank erhalten: 176
Hi myscy,

meine Antwort fällt etwas theoretisvch aus, da ich keine Zeit momentan habe, sowas "mal eben" nachzubauen.

Du kannst per Javascript einen Zufallsstring erzeugen:
forum.jswelt.de/javascript/43935-zufalls...zeichen-ziffern.html
Javascript kannst du ja unter dem Speicherbereich nach anklicken der Pfeile nach unten einfügen. Und du kannst in jedem Textfeld sowas erzeugen, in den Value schreiben und somit wird es gespeichert, bzw. auch einfach nur erzeugt und angezeigt. Du kannst ein Feld in Abhängigkeit zu einem anderen Feld auch dergestallt setzen, dass du auf das setzen des Fokus oder verlassen des Feldes reagierst. Das müsste eigentlich funktionieren, wenn deine Checkbox aus nur einem einzigen Wert besteht und es damit egal wäre, was er ankreuzt, solange er überhaupt die Maus dort hineinbewegt hat. Du kannst dann auch abprüfen, ob die Checkbox gesetzt ist.
Hier etwas Javascript, das dir vielleicht weiterhilft:
seblod.time4mambo.de/forum/inhaltstypen-...ml?limitstart=0#1764


Axel
Das SEBLOD®-Handbuch auf Amazon
Tutorials zu Joomla und MS-Office: www.time4joomla.de
Letzte Änderung: 29 Feb 2016 19:06 von time4mambo.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Folgende Benutzer bedankten sich: myscy

Hash erzeugen + Checkbox triggert Eintrag in DB 02 Mär 2016 01:19 #3533

  • myscy
  • myscys Avatar
  • OFFLINE
  • Beiträge: 13
  • Dank erhalten: 3
Hallo Axel,

danke für deine schnelle Antwort und die Links. Die Idee, den Hash-Wert per JavaScript zu erzeugen, finde ich super.
Die feldgebundene Einbindung von JS-Code kannte ich noch gar nicht. Vielen Dank für den Tipp!

In Formular 1 habe ich nun einen (rein numerischen) Hash eingebunden:
  1. Neues Textfeld "hash" erzeugt
  2. hash ist im Template auf Position "Hidden" versteckt
  3. hash-Wert wird in der DB gespeichert (Storage: Format/Object: Standard/Article)
  4. hash wird für den Link in den E-mail an den User verwendet (Email-Feld -> Message -> Editor: ... <a href="website.de/index.php?option=com_cck&view=form&layout=edit&type=formular2&hash=#hash#">Link zum Schlüssel</a>)
  5. hash hat folgendes JS implementiert:
String.prototype.hashCode = function(){
	var hash = 0;
	if (this.length == 0) return hash;
	for (i = 0; i < this.length; i++) {
		char = this.charCodeAt(i);
		hash = ((hash<<5)-hash)+char;
		hash = hash & hash; // Convert to 32bit integer
	}
	return hash;
}
if (!Date.now) {Date.now = function(){
	return new Date().getTime();}
}
var a = Date.now().toString();
document.getElementById("hash").value = Math.abs(a.hashCode());
Anhang:
Letzte Änderung: 02 Mär 2016 01:20 von myscy.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Hash erzeugen + Checkbox triggert Eintrag in DB 02 Mär 2016 01:36 #3534

  • myscy
  • myscys Avatar
  • OFFLINE
  • Beiträge: 13
  • Dank erhalten: 3
Formular 2 ist nun wie folgt aufgebaut:
  1. Hash-Catch Feld
    • hash wird aus der URL gefiltert:
      (2) Live + Live Value:
      Variable -> Configure -> Variable: hash

  2. Checkbox: Wert: "Ich werde den Schlüssel nicht weitergeben=1"
  3. Core 42-Feld "Schlüssel"
    • Schlüssel wird eingeblendet, wenn die Checkbox aktiviert wurde:
      (5) Conditional States: Add -> Is visible WHEN CHECKBOX is Equal 1
    • Die Implementierung des Core 42-Felds Schlüssel ist als Screenshot angefügt


Nun fehlt mir nur noch die Speicherung / das Loggen der Herausgabe des Schlüssels in die DB.
Normalerweise wird das Speichern der Daten in die DB ja mit dem Absenden des Formulars mittels Submit-Button realisiert.

Hier habe ich folgende Fragen:
  1. Gibt es einen Weg, das Speichern bereits durch die Aktivierung der Checkbox auszulösen? (Weg 1)
  2. Oder wie kann man (nach dem Speichern durch den Submit-Button) den Schlüssel anschließend einblenden? (Weg 2)
    Normalerweise kommt dann ja nur noch die "Formular erfolgreich verschickt"-Meldung.

So kurz vor dem Ziel :)

Viele Grüße
myscy
Anhang:
Letzte Änderung: 02 Mär 2016 01:36 von myscy.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Hash erzeugen + Checkbox triggert Eintrag in DB 02 Mär 2016 06:30 #3535

  • time4mambo
  • time4mambos Avatar
  • OFFLINE
  • Mal gucken ob was passiert...
  • Beiträge: 903
  • Dank erhalten: 176
Ich denke, hier müsstest du dir ein Modul basteln, welches abfragt, ob der Benutzer den richtigen Haken gesetzt hat und dann den gespeicherten Hash ausgeben. Oder ein Plugin. Eine andere Idee hätte ich derzeit nicht. Also eine Joomla-Lösung.


Axel
Das SEBLOD®-Handbuch auf Amazon
Tutorials zu Joomla und MS-Office: www.time4joomla.de
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Hash erzeugen + Checkbox triggert Eintrag in DB 02 Mär 2016 18:35 #3537

  • FINWICK
  • FINWICKs Avatar
  • OFFLINE
  • Beiträge: 199
  • Dank erhalten: 40
Mit jquery und dann das Feld einblenden
api.jquery.com/prop/
api.jquery.com/hide/
api.jquery.com/show/
Gruß Norbert / FINWICK Kein Support via PN | JPlugger das Joomla -Plugin
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Hash erzeugen + Checkbox triggert Eintrag in DB 03 Mär 2016 00:51 #3543

  • myscy
  • myscys Avatar
  • OFFLINE
  • Beiträge: 13
  • Dank erhalten: 3
Der Hash wird ja (dank deines tollen Tipps) korrekt erzeugt und gespeichert.
Im 2. Formular wird der Hash auch korrekt aus der URL ausgelesen. Darüber wird dann auch der zur Kontaktanfrage (Formular 1) passende Schlüssel geholt.
Soweit funktioniert alles bestens.

Jetzt geht es mir um das Speichern/Loggen der Schlüsselausgabe. Sprich, ich habe ein Textfeld (value = Schlüssel) und eine Checkbox. Wenn die Checkbox aktiviert wird, wird des Textfeld eingeblendet (mittels Conditional States). Soweit funktioniert das bestens.

Jetzt möchte ich in der Datenbank speichern, dass zu diesem Hash-Wert der passende Schlüssel herausgegeben wurde.
Ich muss quasi dokumentieren, dass die Checkbox aktiviert wurde.

Das Problem ist nur, dass (meines Wissens nach) der Eintrag in die Datenbank nur über das Absenden des Formulars ausgelöst wird (onsubmit).
Blöderweise wird man dann anschließend auf eine neue Seite weitergeleitet und bekommt die "Formular erfolgreich abgeschickt"-Meldung angezeigt. An dieser Stelle kann ich scglecht wieder einen Schritt zurückschauen und mir den Schlüssel wiederholen :(

Ich bräuchte sowas wie ein mehrseitiges Formular mit einem Checkpoint zum Speichern.
Oder eine Speicherfunktion mittels AJAX.
Wenn das so nicht funktioniert, muss ich dem User den Schlüssel wohl (nach Aktivierung der Checkbox und Betätigung des Submit-Buttons->Speicherung in DB) per E-Mail schicken.


@Axel: was genau meinst du mit dem Modul (SEBLOD® Formular als Modul implementieren?) und Plugin (welches?).
Kannst du bitte ein Paar Stichwörter zum recherchieren nennen? :)
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Hash erzeugen + Checkbox triggert Eintrag in DB 03 Mär 2016 16:15 #3545

  • time4mambo
  • time4mambos Avatar
  • OFFLINE
  • Mal gucken ob was passiert...
  • Beiträge: 903
  • Dank erhalten: 176
time4mambo schrieb:
Also eine Joomla-Lösung.

Na, halt in Joomla programmieren. Nicht in SEBLOD®. Was brauchst du jetzt noch an Informationen?
Mit einem Modul oder Plugin kannst du auf die Datenbank zugreifen - und das ist es doch, was du jetzt tun willst/musst. Mit dem Absendebutton hat sich SEBLOD® erledigt. Du befindest dich nun wieder in Joomla ;)

Axel
Das SEBLOD®-Handbuch auf Amazon
Tutorials zu Joomla und MS-Office: www.time4joomla.de
Der Administrator hat öffentliche Schreibrechte deaktiviert.
nach oben