Formularergebnis gestalten

Hier bekommst Du deutschsprachigen Support. Keine Fehlermeldungen oder Erweiterungswünsche bitte!
Post Reply
harald
Posts: 246
Joined: Wed 2. Mar 2005, 16:01

Formularergebnis gestalten

Post by harald »

Hallo zusammen,
ich habe mehrere Checkboxen in einem Kontakt-Formular. Ich hätte aber als Antwort gerne nur die, die angeklickt wurde.
Z.Zeit bekomme ich auch den Text der Checkbox, der nicht angeklickt wurde. So sieht momentan die HTML-Empfängervorlage aus:

Rückruf: Bitte rufen Sie mich unter der Rufnummer:{rufnummer} zurück. (Checkbox)
Terminvorschlag: Können wir einen Termin am {termindatum} vereinbaren? (Checkbox)
Vorname: {vorname}
Nachname: {nachname}
usw...

Also nehmen wir an, der Benutzer hat nur die Terminvorschlag-Checkbox angeklickt, wird trotzdem auch der text mit dem Rückruf angeklickt.
Wie könnte ich das verhindern?
Gruss Harald
User avatar
update
Moderator
Posts: 6455
Joined: Mon 10. Jan 2005, 17:29
Location: germany / outdoor

Re: Formularergebnis gestalten

Post by update »

Mit einem radio-button? Der zumindest kann entweder/oder...
It's mostly all about maintaining two or three customer's sites Still supporter for the band Mykket Morton. Visit Mykket Morton on FB. Listen Mykket Morton and live videos on youtube.
Now building a venue for young artists to get wet on stage, rehearsal rooms, a studio, a guitar shop - yes I'm going to build some guitars.
harald
Posts: 246
Joined: Wed 2. Mar 2005, 16:01

Re: Formularergebnis gestalten

Post by harald »

Man sollte die Wahlfreiheit haben auch mehrere anklicken zu können. Es kommen noch weitere mit nur Text dazu.
Gruss Harald
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Re: Formularergebnis gestalten

Post by flip-flop »

Das geht m.W. nur mit einem zusätzlichen Script, das die eingegebenen Werte im Nachhinein einsetzt.

Die Grundanlage:

Typ:Text spezial
[rufnummer] [Meine Rufnummer:]

Code: Select all

type=PHONE
Typ:Text spezial
[termindatum] [Termindatum:]

Code: Select all

type=DATE
Typ: Checkbox
[checkbox] []

Code: Select all

Bitte rufen Sie mich unter oben genannter Rufnummer zurück -|- Rückruf: Bitte rufen Sie mich unter der Rufnummer: [%rufnummer%] zurück. checked
Können wir einen Termin an oben genanntem Datum vereinbaren? -|- Terminvorschlag: Können wir einen Termin am [%termindatum%] vereinbaren?
Vorlage:

Code: Select all

.....
{checkbox}
.....
wiki: PHP-Funktion einbinden

PHP-Funktion:

Code: Select all

my_form_on_success_to
Nun das Script in frontend_init: template/inc_script/frontend_init/cp_form_on_success.php

Code: Select all

<?php
// -------------------------------------------------------------------------------------------
// obligate check for phpwcms constants
  if (!defined('PHPWCMS_ROOT')) {die("You Cannot Access This Script Directly, Have a Nice Day."); }
// -------------------------------------------------------------------------------------------

function my_form_on_success_to( &$postvar, &$form, &$mail ) {

	// Ersetze Platzhalter mit Eingabewerten
	// ---------------------------------------------------------------
		$form['template'] = str_replace('[%rufnummer%]',   $postvar['rufnummer'],   $form['template']);
		$form['template'] = str_replace('[%termindatum%]', $postvar['termindatum'], $form['template']);

}  // ==== End function

?>
So kannst du dir alles Mögliche zusammen zaubern.

Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
harald
Posts: 246
Joined: Wed 2. Mar 2005, 16:01

Re: Formularergebnis gestalten

Post by harald »

Das ist ja toll! Ich wusste gar nicht, dass es das gibt. Muss mich mal wieder ein bisschen mehr damit beschäftigen.
Vielen Dank! Ich werde es ausprobieren.
Gruss Harald
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Re: Formularergebnis gestalten

Post by flip-flop »

Das Problem sehe ich speziell bei deiner Aufgabenstellung darin, dass bei z.B. "Rückruf" auch eine Rufnummer oder bei "Termin:" ein Datum eingegeben werden muss.
Das kann php zur Laufzeit nicht wissen. Bei den beiden Feldern "Rufnummer" und "Datum" eine zwingende Eingabe zu fordern wäre nicht richtig.
Also muss die Plausibilität browserseits mit JS überprüft werden oder es wird serverseits ein weiteres/anderes php-Script eingesetzt.
Die JS-Lösung könnte die Datum- oder Rufnummern-Eingabe einblenden wenn die jeweiligen Checkboxen angeklickt werden und dazu sofort prüfen ob die Werte i.o. sind.
In dieser speziellen PHP-Funktion für Formulare können wir wohl prüfen ob die Plausibilität gegeben ist, jedoch keinen Rücksprung zur Formulareingabe produzieren.

Daher müsste dann in diese Richtung gearbeitet werden, denn hier kann ich einen Rücksprung zur Formulareingabe erzwingen. U.a. wie in diesem Beispiel gezeigt: "E-Mail an" und "Kopie an"

Etwas komplexere Formulare sind nie so ganz einfach zu bauen, sondern erfordern immer etwas Überlegung im Vorfeld vor allem was die Datensicherheit angeht.

Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
harald
Posts: 246
Joined: Wed 2. Mar 2005, 16:01

Re: Formularergebnis gestalten

Post by harald »

Hallo Knut,
nicht, dass wir uns missverstehen. Im Formular gibt es das:

Bitte rufen Sie mich unter der Rufnummer: <input type="text" name="rufnummer" id="rufnummer" value="" size="10" /> an.
<input type="radio" name="rueckruf" id="rueckruf" value="rueckruf" /><label for="rueckruf"></label>

Streng genommen könnte man natürlich auf die Raiobuttons verzichten.
Und dann gilt es ja eigentlich nur abzufragen, ob die Felder oder Radiobuttons ausgefüllt sind oder nicht.
Falls nicht, soll der ganze Text mit Feld nicht ausgegeben (im Antwort-Mail) werden. Falls ja, der Text und das rufnummer-Feld.
Gruss Harald
User avatar
flip-flop
Moderator
Posts: 8178
Joined: Sat 21. May 2005, 21:25
Location: HAMM (Germany)
Contact:

Re: Formularergebnis gestalten

Post by flip-flop »

Also ohne eine klare Markierung würde ich das nicht machen. Kaum ein User wird das begreifen dass nur die Rufnummer bzw. das Datum eingegeben werden muss, zumindest schwingt Unsicherheit mit, ob das nun auch funktioniert hat.
Genau an diesem Punkt kommt die Abhängigkeit von zwei zueinander gehörenden Eingaben hoch.

Das kann natürlich im php Formular-Script abgefragt werden ob eine Checkbox oder Radiobutton aktiviert wurde.
Die Formularausgabe kann daraufhin vor dem Absenden entsprechend geändert werden.
Das ist ein simpler Ersetzer, wenn z.B in der Vorlage steht:

Code: Select all

[%RUFNR%]Rückruf: Bitte rufen Sie mich unter der Rufnummer:{rufnummer} zurück. [%/RUFNR%]
[%TERMIN%]Terminvorschlag: Können wir einen Termin am {termindatum} vereinbaren? [%/TERMIN%]
Im Script dann:

Code: Select all

if ($postvar['rufnummer'] AND $postvar['rufnr_check']) {
   $form['template'] = preg_replace('/\/[%RUFNR%\](.*?)/[%\/RUFNR%\]/i','$1',$form['template']);
} else // Zeile loeschen
   $form['template'] = preg_replace('/\/[%RUFNR%\](.*?)/[%\/RUFNR%\]/i','',$form['template']);
Das Gleiche mit TERMIN.
Allerdings ist das Problem bei Nichteingabe eines Wertes immer noch vorhanden, eine Prüfung mit Fehlerrückfall fehlt.

Knut
>> HowTo | DOCU | FAQ | TEMPLATES/DOCS << ( SITE )
Post Reply