Hallo an euch alle hier im Forum.
Ich habe ein, vermutlich triviales, Anfängerproblem, bei dem ich einfach nicht weiter komme. Geholfen wäre mir sicherlich auch schon, wenn ihr mir nach Schildderung meines Problems helfen könntet, indem ihr mir sagt, nach welchen Stichworten ich suchen kann.
Die Ausgangsstellung ist folgende:
Eine Seite (html) lädt einen Platzhalter. In diese wird das Layout geladen. PHP ist komplett ausgelagert.
zur Verdeutlichung einige Auszüge:
html-Seite:
das Layout:
php:
So, ich hoffe, dass ich alle wichtigen Infos gegeben habe.
Nun zu meinem Problem:
Wie stelle ich es an, dass
sich auf die im Layout erstellte Selectbox bezieht und bei einem Reload der Seite der selektierte Wert erhalten bleibt?
Danke
Klaus
Ich habe ein, vermutlich triviales, Anfängerproblem, bei dem ich einfach nicht weiter komme. Geholfen wäre mir sicherlich auch schon, wenn ihr mir nach Schildderung meines Problems helfen könntet, indem ihr mir sagt, nach welchen Stichworten ich suchen kann.
Die Ausgangsstellung ist folgende:
Eine Seite (html) lädt einen Platzhalter. In diese wird das Layout geladen. PHP ist komplett ausgelagert.
zur Verdeutlichung einige Auszüge:
html-Seite:
PHP:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de-DE" lang="de-DE">
<head>
...
</head>
<body>
<div id="wrapper">
[%content%]
</div>
</body>
</html>
das Layout:
PHP:
<form action="" method="post">
<fieldset>
...
<table class="form">
<tr>
<td>Empfänger:</td>
<td>*</td>
<td>
<select name="receiver" id="receiver" size="1">
</select>
</td>
</tr>
...
</table>
<p><input type="submit" name="kontakt" class="send [%case%]" value="[%kontakt%]" /></p>
<p>[%receiver%]</p>
</fieldset>
</form>
php:
PHP:
<?PHP
#######################################################################
# um-Formmailer Skript V1.00 #
# zur freien Verwendung, d. h. keinerlei Lizenzen oder Copyright #
# ein backlink wäre aber nett! #
# Auf jeden Fall aber bitte diesen Tag im XHTML Template einbinden: #
# <meta name="Generator" content="script by http://um-fritz.de" /> #
# Danke und viel Spaß! #
# http://um-fritz.de #
#######################################################################
#
# Dieses Skript liest eine XHTML-Template Datei ein und generiert den Inhalt aus
# dem Formulartemplate. Je nach Benutzereingaben werden verschiedenen Fälle unter-
# schieden, denen dann entsprechende Ausgaben zugeordnet werden. Bis alle Angaben
# gemacht wurden, und wenigstens eine Vorschau erfolgte, wird das Formulat erneut
# ausgegeben. Bei korrekten Angaben und erfolgter Vorschau erfolgt der Versand der
# e-mail und die Dankesseite wird ausgegeben.
# Skriptteil, ändern auf eigene Gefahr! #
$pfad = str_replace($_SERVER['DOCUMENT_ROOT'], "", dirname($_SERVER['SCRIPT_FILENAME']));
require_once ($_SERVER['DOCUMENT_ROOT'].$pfad."/global_vars.php");
$page = get_html_template ();
if (!empty($_POST['falle'])) {
$content = "<h1>Spamfalle wurde ausgefüllt</h1>\n
<p>Bitte die Seite erneut aufrufen</p>";
$page = page_replace_var($page, "content", $content);
show_page();
exit;
}
# Konfiguration der Selectbox! #
$array = array(1 => "Äpfel", "Birnen", "Bananen", "Orangen");
for ($a = 1; $a <= 4; $a++) {
echo " <option value=\"$array[$a]\"";
if ($_POST["receiver"] == $array[$a]) {
echo " selected";
}
else {
if ($_POST["receiver"] == "" && $a == 3) {
echo " selected";
}
}
echo ">$array[$a]</option>\n";
}
if (empty($_POST['receiver'])) {
$error_msg[] = $kontakt_vars["error_no_firstname"];
$case_name = "error";
} else {
$case_name = "standard";
}
# Ende Konfiguration der Selectbox! #
if (empty($_POST['confirm'])) {
create_form("standard", "standard", "standard", "standard", "undone");
}
if (!preg_match("#^[a-zA-Z\s\-]{2,40}$#", $_POST['first_name'])) {
$error_msg[] = $kontakt_vars["error_no_firstname"];
$case_name = "error";
} else {
$case_name = "standard";
}
if (!preg_match("#^[a-zA-Z0-9\.\-_\+]{1,40}@[a-zA-Z0-9\.\-_]{1,40}\.[a-zA-Z0-9\.\-_]{1,6}$#", $_POST['mail_from'])) {
$error_msg[] = $kontakt_vars["error_no_mail_from"];
$case_mail = "error";
} else {
$case_mail = "standard";
}
if (strlen($_POST['message']) < 10) {
$error_msg[] = $kontakt_vars["error_no_message"];
$case_message = "error";
} else {
$case_message = "standard";
}
if (isset($error_msg)) {
foreach ($error_msg as $f) {
$kontakt_vars["error_legend_text"] .= "\n\t $f <br />";
}
create_form("error", $case_name, $case_mail, $case_message, "error");
}
if ( $_POST['confirm'] != "done") {
create_form("confirm", "confirm", "confirm", "confirm", "done");
}
#Ab hier sind keine Fehler mehr in den Benutzereingaben -> Mail senden + Dankeseite ausgeben
mail_and_thanks();
/*##########################################################################
# Funktionen #
##########################################################################*/
function get_html_template () { # Ausgabe des HTML Templates #
global $html_template_file;
if(!file_exists($html_template_file)){
echo " <h1>Installationshinweis</h1>
<p>Bevor Sie das Formular einsetzen, legen Sie bitte die HTML Template-Datei
<strong>$html_template_file</strong> an.</p>";
exit;
} else {
$page = file_get_contents($html_template_file);
}
return ($page);
}
function create_form($case_form, $case_name, $case_mail, $case_message, $kontakt_confirm) { # Formularseite erstellen #
global $page, $form_file, $kontakt_vars;
if (isset($_POST)) {
encode_postdata();
}
if(!file_exists($form_file)){
$content = " <h1>Installationshinweis</h1>
<p>Bevor Sie das Formular einsetzen, legen Sie bitte die Form Template-Datei
<strong>$form_file</strong> an.</p>";
} else {
$content = file_get_contents($form_file);
$content = page_replace_var($content, "title", $kontakt_vars[$case_form."_headline"]);
$content = page_replace_var($content, "headline", $kontakt_vars[$case_form."_headline"]);
$content = page_replace_var($content, "case", $case_form);
$content = page_replace_var($content, "self", $_SERVER['PHP_SELF']);
$content = page_replace_var($content, "legend", $kontakt_vars[$case_form."_legend"]);
$content = page_replace_var($content, "confirm", $kontakt_confirm);
$content = page_replace_var($content, "legend_text", $kontakt_vars[$case_form."_legend_text"]);
$content = page_replace_var($content, "first_name", $_POST['first_name']);
$content = page_replace_var($content, "name", $_POST['name']);
$content = page_replace_var($content, "phone", $_POST['phone']);
$content = page_replace_var($content, "mail_from", $_POST['mail_from']);
$content = page_replace_var($content, "message", $_POST['message']);
$content = page_replace_var($content, "receiver", $_POST['receiver']);
$content = page_replace_var($content, "kontakt", $kontakt_vars[$kontakt_confirm."_submit"]);
$content = page_replace_var($content, "case_name", $case_name);
$content = page_replace_var($content, "case_mail", $case_mail);
$content = page_replace_var($content, "case_message", $case_message);
}
$page = page_replace_var($page, "content", $content);
show_page();
exit;
}
function mail_and_thanks(){ # Mail Senden und Dankesseite ausgeben #
global $page, $kontakt_vars, $danke_file;
decode_postdata();
# mail senden
$headers = "From: {$_POST['first_name']} {$_POST['name']} ";
$headers .= "<{$_POST['mail_from']}>\r\n";
$headers .= "Content-Type: text/plain; charset=iso-8859-1 \r\n";
$headers .= "Content-Transfer-Encoding: 8bit";
mail($kontakt_vars["mailto"], $kontakt_vars["subject"], "Vorname:\t".($_POST['first_name'])."\r\n"."Nachname:\t".($_POST['name'])."\r\n"."Telefon:\t".($_POST['phone'])."\r\n".($_POST['message']), $headers);
# Danke Seite Ausgeben
$content = file_get_contents($danke_file);
$page = page_replace_var($page, "title", "Danke");
encode_postdata();
set_br();
$content = page_replace_var($content, "adress", $kontakt_vars['mailto']);
$content = page_replace_var($content, "mail_from", $_POST['mail_from']);
$content = page_replace_var($content, "message", $_POST['message']);
$content = page_replace_var($content, "first_name", $_POST['first_name']);
$content = page_replace_var($content, "name", $_POST['name']);
$page = page_replace_var($page, "content", $content);
show_page();
exit;
}
function encode_postdata() { # Codieren von Code in Benutzereingabe #
foreach ($_POST as $key => $wert) {
if(get_magic_quotes_gpc()) { // wenn magic_quotes an, dann strip slashes
$_POST[$key] = stripslashes($_POST[$key]);
}
if ($key != "message") {
$_POST[$key] = trim(strip_tags($_POST[$key]));
$_POST[$key] = str_replace("\n", "", $_POST[$key]);
$_POST[$key] = str_replace("\r", "", $_POST[$key]);
$_POST[$key] = str_replace("\"", "``", $_POST[$key]);
$_POST[$key] = str_replace("'", "`", $_POST[$key]);
}
$_POST[$key] = trim(preg_replace("@content-type:|bcc:|cc:|to:|from:@im", " # verbotener Inhalt # ", $_POST[$key]));
$_POST[$key] = htmlspecialchars($_POST[$key]);
}
}
function decode_postdata() { # Decodieren von Code in Benutzereingabe #
foreach ($_POST as $key => $wert) {
$_POST[$key] = (stripslashes(html_entity_decode($_POST[$key])));
}
}
function set_br() { # Breaklines setzen bei Dankeformular #
foreach ($_POST as $key => $wert) {
$_POST[$key] = str_replace("\n", "\t<br />\n\t", $_POST[$key]);
}
}
function page_replace_var($template_content, $name, $value) { # [%name%] ersetzen #
$pattern = "[%$name%]";
return(str_replace($pattern, $value, $template_content));
}
function show_page() { # Seite ausgeben #
global $page;
echo $page;
exit;
}
?>
So, ich hoffe, dass ich alle wichtigen Infos gegeben habe.
Nun zu meinem Problem:
Wie stelle ich es an, dass
PHP:
$array = array(1 => "Wert1", "Wert2", "Wert3", "Wert4");
for ($a = 1; $a <= 4; $a++) {
echo " <option value=\"$array[$a]\"";
if ($_POST["receiver"] == $array[$a]) {
echo " selected";
}
else {
if ($_POST["receiver"] == "" && $a == 3) {
echo " selected";
}
}
echo ">$array[$a]</option>\n";
}
sich auf die im Layout erstellte Selectbox bezieht und bei einem Reload der Seite der selektierte Wert erhalten bleibt?
Danke
Klaus