Seite 1 von 1

variable in formular uebergeben

Verfasst: Mi 13. Okt 2004, 20:21
von m.hoffmann
Hallo, erst mal Gratulation zu die diesem grossartigen Formular-Modul. Ich haette als Ahnungsloser in Sachen PHP mal eine Frage: ich moechte dieses Formular mittels eines Links Zentral einbinden, d.h. auf allen moeglichen den Link plazieren und aber eine Variable mit dem Seiten-Titel auf welcher der Link plaziert war in das Formular übergeben, hat jemand ne Idee, wie ich dies realisiere?

MFG Markus

ups...

Verfasst: Mi 13. Okt 2004, 20:23
von m.hoffmann
gehoert eigentlich in diesen thread:

http://www.contenido.de/forum/viewtopic.php?t=5066

Verfasst: Fr 15. Okt 2004, 08:51
von kummer
ich werde mich darum kümmern. allerdings kann ich zeitlich nichts versprechen, da ich zurzeit ziemlich unter druck bin. sobald ich es habe, werde ich es hier publizieren.

gruss,
andreas

Verfasst: Fr 15. Okt 2004, 09:11
von kummer
ok, das sollte jetzt funktionieren. der input-code bleibt identisch. die übergabe der parameter kann über post oder get erfolgen. die übergabewerte müssen einfach gleich lauten, wie diejenigen im formular.

hier der code:

Code: Alles auswählen

<?php

/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     w3concepts.form.mod2.v1
* Author      :     Andreas Kummer
* Copyright   :     mumprecht & kummer w3concepts
* Created     :     15-10-2004
* Modified    :     15-10-2004
************************************************/

class w3form {

	var $email, $aufgedroeselt, $form, $formularFeld;

	function w3form() {
	}

	// PRIVATE
	function sendEmail() {
		$this->aufdroeseln($this->suppress('sent'));
		$this->generateEmailMessage();
		mail($this->email['adresses'],$this->email['subject'],$this->email['message'],"From: {$this->email['from']['name']} <{$this->email['from']['email']}>\nReply-To: {$this->email['from']['email']}\nX-Mailer: PHP/" . phpversion());
	}

	// PRIVATE
	function aufdroeseln($aufzudroeseln,$prefix = '') {
		foreach ($aufzudroeseln as $key => $value) {
			if (is_array($value)) {
				$this->aufdroeseln($value,$key." ");
			} else {
				$this->aufgedroeselt["{$prefix}{$key}"] = $value;
			}
		}
	}

	// PRIVATE
	function add2Message($key,$value) {
		if (strlen($key) > 25 OR strlen($value) > 54) {
			$this->email['message'] .= "$key\n$value\n";
		} else {
		$this->email['message'] .= $key;
		$this->email['message'] .= str_repeat(' ',25-strlen($key));
		$this->email['message'] .= "$value\n";
		}
	}

	// PRIVATE
	function generateEmailMessage() {
		if ($this->aufgedroeselt) foreach ($this->aufgedroeselt as $key => $value) {
			$this->add2Message($key,$value);
		}
	}

	// PRIVATE
	function suppress() {
		$suppress = func_get_args();
		foreach ($_POST as $key => $value) {
			if (array_search($key,$suppress) === false) $fields[$key] = $value;
		}
		return $fields;
	}



	// PUBLIC
	function addEmailAdress($email) {
		if (empty($this->emailAdresses)) {
			$this->email['adresses'] .= "$email";
		} else {
			$this->email['adresses'] .= ", $email";
		}
	}

	// PUBLIC
	function setEmailSubject($subject) {
		$this->email['subject'] = $subject;
	}

	// PUBLIC
	function setEmailFrom($email,$name) {
		$this->email['from']['email'] = $email;
		$this->email['from']['name'] = $name;
	}

	// PUBLIC
	function setForm($form) {
		$this->form['form'] = $form;
	}

	// PUBLIC
	function setAnswer($answer) {
		$this->form['answer'] = $answer;
	}

	// PUBLIC
	function setBackgroundError($color) {
		$this->form['colorError'] = $color;
	}

	// PRIVATE
	function formularInterpretation(&$formular) {
		$felder = split('###',$formular);
		for ($i=1;$i<count($felder);$i=$i+2) {
			$attributte = split(';',trim($felder[$i]));
			foreach ($attributte as $attribut) {
				$namewert = split(':',trim($attribut));
				if ($namewert[0] != 'option' && $namewert[0] != 'optionvalue') {
					$feld["{$felder[$i]}"]["{$namewert[0]}"] = $namewert[1];
				} else {
					$feld["{$felder[$i]}"]["{$namewert[0]}"][] = $namewert[1];
				}
			}
		}
		return $feld;
	}

	// PRIVATE
	function formularAusgabe($sent = false) {
		echo '<form action="" method="POST">';
		echo '<input type="hidden" name="sent" value="true" />';
		$formular = $this->form['form'];
		$formulardaten = $this->formularInterpretation(&$formular);
		$formular = split('###',$formular);
		foreach ($formular as $formularteil) {
			if (!empty($formulardaten["{$formularteil}"])) {
				$this->formularFeld($formulardaten["{$formularteil}"],$sent);
			} else {
				echo $formularteil;
			}
		}
		echo '</form>';
	}

	// PRIVATE
	function formularFeld($attribute,$sent) {
		$parameter = "name=\"{$attribute['name']}\"";
		if ($sent && !$this->formularFeldKorrekt(&$attribute)) $style ="style=\"background-color:{$this->form['colorError']};\"";
		switch ($attribute['type']) {
			case 'select':
			case 'password':
			case 'text':
				if (!empty($attribute['size'])) $parameter .= " size=\"{$attribute['size']}\"";
				break;
		}
		switch ($attribute['type']) {
			case 'textarea':
			case 'text':
				if (!empty($attribute['size'])) $parameter .= " size=\"{$attribute['size']}\"";
				if (!empty($attribute['value'])) $value = $attribute['value'];
				if (!empty($_REQUEST["{$attribute['name']}"])) $value = $_REQUEST["{$attribute['name']}"];
				break;
		}
		switch ($attribute['type']) {
			case 'text':
				echo "<input type=\"text\" $parameter value=\"$value\" $style />";
				break;
			case 'password':
				echo "<input type=\"password\" $parameter value=\"$value\" $style />";
				break;
			case 'textarea':
				echo "<textarea name=\"{$attribute['name']}\" cols=\"";
				echo (empty($attribute['cols']))?('20'):($attribute['cols']);
				echo "\" rows=\"";
				echo (empty($attribute['rows']))?('2'):($attribute['rows']);
				echo "\" wrap=\"virtual\" $style>$value</textarea>";
				break;
			case 'select':
				echo "<select $parameter $style>";
				for ($i=0;$i<count($attribute['option']);$i++) {
					if (!empty($attribute['optionvalue'][$i])) {
						if (!empty($_REQUEST["{$attribute['name']}"]) && $_REQUEST["{$attribute['name']}"] == $attribute['optionvalue'][$i]) {
							echo "<option value=\"{$attribute['optionvalue'][$i]}\" selected=\"selected\">{$attribute['option'][$i]}</option>\n";
						} else {
							if (empty($_REQUEST["{$attribute['name']}"]) && !empty($attribute['optionvalue'][$i]) && $attribute['optionvalue'][$i] == $attribute['value']) {
								echo "<option value=\"{$attribute['optionvalue'][$i]}\" selected=\"selected\">{$attribute['option'][$i]}</option>\n";
							} else {
								echo "<option value=\"{$attribute['optionvalue'][$i]}\">{$attribute['option'][$i]}</option>\n";
							}
						}
					} else {
						if (!empty($_REQUEST["{$attribute['name']}"]) && $_REQUEST["{$attribute['name']}"] == $attribute['option'][$i]) {
							echo "<option selected=\"selected\">{$attribute['option'][$i]}</option>\n";
						} else {
							if (empty($_REQUEST["{$attribute['name']}"]) && $attribute['option'][$i] == $attribute['value']) {
								echo "<option selected=\"selected\">{$attribute['option'][$i]}</option>\n";
							} else {
								echo "<option>{$attribute['option'][$i]}</option>\n";
							}
						}
					}
				}
				echo "</select>";
				break;
			case 'checkbox':
				$formularbezeichner = preg_split('[\[|\]]',$attribute['name']);
				if ($sent) {
					if ($_REQUEST["{$formularbezeichner[0]}"]["{$formularbezeichner[1]}"] == $attribute['value']) {
						echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
					} else {
						echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\"/>";
					}
				} else {
					if (!empty($attribute['selected']) && $attribute['selected'] == 'true') {
						echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
					} else {
						echo "<input type=\"checkbox\" $parameter value=\"{$attribute['value']}\"/>";
					}
				}
				break;
			case 'radio':
				if (!empty($_REQUEST["{$attribute['name']}"])) {
					if ($_REQUEST["{$attribute['name']}"] == $attribute['value']) {
						echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
					} else {
						echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\" />";
					}
				} else {
					if (!empty($attribute['selected']) && $attribute['selected'] == 'true') {
						echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\" checked=\"checked\"/>";
					} else {
						echo "<input type=\"radio\" $parameter value=\"{$attribute['value']}\"/>";
					}
				}
				break;
		}
	}

	// PRIVATE
	function formularVollstaendig() {

		$formular = $this->form['form'];

		$felder = $this->formularInterpretation(&$formular);

		foreach ($felder as $feld) {
			if (!$this->formularFeldKorrekt(&$feld)) return false;
		}

		return true;
	}

	// PRIVATE
	function success() {
		$this->sendEmail();
		echo $this->form['answer'];
	}

	// PRIVATE
	function formularFeldKorrekt(&$feld) {

		// prüfung, ob pflichtfeld vorhanden
		if (!empty($feld['mandatory']) && $feld['mandatory'] == 'true' && empty($_POST["{$feld['name']}"])) return false;

		// wenn das formularfeld kein pflichtfeld und nicht vorhanden ist, true zurück geben
		if (empty($_POST["{$feld['name']}"])) return true;

		// regular expression prüfungen
		if (!empty($feld['valid']) && $feld['valid'] == 'simpletext' && !eregi("^[ öäüéàèâêîça-z0-9-]*$",$_POST["{$feld['name']}"])) return false;
		if (!empty($feld['valid']) && $feld['valid'] == 'text' && !eregi("^[ .,;!?()öäüéàèâêîça-z0-9-]*$",$_POST["{$feld['name']}"])) return false;
		if (!empty($feld['valid']) && $feld['valid'] == 'textmitumbruch' && !eregi("^[ \n\r.,;!?()öäüéàèâêîça-z0-9-]*$",$_POST["{$feld['name']}"])) return false;
		if (!empty($feld['valid']) && $feld['valid'] == 'integer' && !eregi("^[0-9]*$",$_POST["{$feld['name']}"])) return false;
		if (!empty($feld['valid']) && $feld['valid'] == 'float' && !eregi("^[0-9]*[.]{0,1}[0-9]*$",$_POST["{$feld['name']}"])) return false;
		if (!empty($feld['valid']) && $feld['valid'] == 'date' && !eregi("^[0-9]{1,2}.[0-9]{1,2}.[0-9]{2}$",$_POST["{$feld['name']}"])) return false;
		if (!empty($feld['valid']) && $feld['valid'] == 'email' && !eregi("^[öäüéàèâêîç_a-z0-9-]+(\.[öäüéàèâêîç_a-z0-9-]+)*@[öäüéàèâêîça-z0-9-]+(\.[öäüéàèâêîça-z0-9-]+)*$",$_POST["{$feld['name']}"])) return false;

		// grössenbereich bei integer und float prüfen
		if (!empty($feld['minvalue']) && $_POST["{$feld['name']}"] < $feld['minvalue']) return false;
		if (!empty($feld['maxvalue']) && $_POST["{$feld['name']}"] > $feld['maxvalue']) return false;

		// längenbereich bei allen typen prüfen
		if (!empty($feld['minlength']) && strlen($_POST["{$feld['name']}"]) < $feld['minlength']) return false;
		if (!empty($feld['maxlength']) && strlen($_POST["{$feld['name']}"]) > $feld['maxlength']) return false;

		return true;
	}

	//PUBLIC
	function process() {
		if (!isset($_POST['sent'])) {
			$this->formularAusgabe();
		} elseif ($this->formularVollstaendig()) {
			$this->success();
		} else {
			$this->formularAusgabe(true);
		}
	}

}

if ($edit) {
	echo "<h1>Formularkonfiguration</h1>";
	echo "<p>Hier ist das Formular sowie der Text einzugeben, der zusammen mit dem Formular ausgegeben werden soll:</p>";
	echo "CMS_HTML[0]";
	echo "<p>Hier ist die Ausgabe einzugeben, die erscheint, wenn das Formular erfolgreich prozessiert worden ist:</p>";
	echo "CMS_HTML[1]";
} else {
	$formular = new w3form();
	$formular->addEmailAdress("CMS_VALUE[0]");
	$formular->setEmailSubject("CMS_VALUE[1]");
	$formular->setEmailFrom("CMS_VALUE[2]","CMS_VALUE[3]");
	$formular->setBackgroundError("CMS_VALUE[4]");
	$formular->setForm("CMS_HTML[0]");
	$formular->setAnswer("CMS_HTML[1]");
	$formular->process();
}

?>
gruss,
andreas

ps: feedback wie immer gefragt! :lol:

Verfasst: Fr 18. Feb 2005, 15:18
von elcono
Wie heißen die PArameter ?

Wie kann ich diese per Post / Get übergeben ?