Erstelltes php-Formular in bestehende php-Seite einbauen

Alles zu Styles, Templates, Icons und Smilies für phpBB 2.0, sowie allgemeine Designfragen zur Integration von phpBB in bestehende Websites.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
Nighthawk
Mitglied
Beiträge: 82
Registriert: 04.11.2005 20:49

Erstelltes php-Formular in bestehende php-Seite einbauen

Beitrag von Nighthawk »

Hallo

Ich habe mittels Visual Form Maker ein php-Formular erstellt. Und nun möchte ich es in eine bestehende php-Seite im Forum einbauen, sodass der Header und Footer angezeigt wird.

Ich habe eine formular.php gebastelt, in der dann das Formular gezeigt werden soll:

Code: Alles auswählen

<?php

//Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);


//Session auslesen und Benutzer-Informationen laden
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);


//Dieser Block kann weggelassen werden, wenn du nur den die Userdaten brauchst und auf den phpBB-Header verzichen möchtest
$page_title = 'Formular';
include($phpbb_root_path . 'includes/page_header.'.$phpEx);

$template->set_filenames(array(
   'body' => 'formular_body.tpl')
);

$template->pparse('body');


//Footer - nur dann weglassen, wenn du auch den Header weglässt
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?>
Das erstellte Formular sieht so aus (einige Codes habe ich herausgenommen, um die Länge zu verkürzen):

Code: Alles auswählen

<?php 
$body="<html><head><title>Formular</title></head><body bgcolor=#FFFFFF Link=#FF0080 ALink=#FFFFFF VLink=#400040 >";
if ($_POST[ToMail]=="") {

echo("<html><head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
<meta name=\"generator\" content=\"Visual-Form-Maker\">
<meta name=\"keywords\" content=\"Visual Form Maker\">

<title>Formular</title>
</head>
<body bgcolor=#FFFFFF Link=#FF0080 ALink=#FFFFFF VLink=#400040 >

<style type=\"text/css\">
<!--
.PS_10{
top:629px;
width:100px;
height:30px;
border-width:1px;
font-size:8pt;
border-color:#000000;
color:#000000;
background-color:#C0C0C0;
border-style:solid;
font-weight:bold;
font-family:Arial;
cursor:pointer;
font-style:;

}
.PC_10{
top:629px;
width:100px;
height:30px;
border-width:1px;
font-size:8pt;
border-color:#000000;
color:#000000;
background-color:#C0C0C0;
border-style:solid;
font-weight:bold;
font-family:Arial;
cursor:pointer;
font-style:;

}
.TED336_10{
top:50px;
width:270px;
height:18px;
border-width:0px;
font-size:10pt;
border-color:#000000;
color:#000000;
background-color:#D2D2D2;
border-style:solid;
font-weight:;
font-family:Arial;
cursor:text;
font-style:;

}
[##### ein Teil wurde herausgenommen #####]
--></style>

<script language=javascript>
function check_form()
{
var error,i,set,str,ele,elenam,zeichen;
ele=3;
elenam='Vorname:';

set='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZßöäüÖÄÜ ';
str=window.document.forms[0].elements[ele].value;

for (i=0;i<=str.length;i++)
    {
     zeichen=str.charAt(i);
     if (set.indexOf(zeichen)==-1)
        {
         alert('In Element '+elenam+' bitte nur Buchstaben eingeben');
         return false;
         i=str.length;
        }
    }

ele=4;
elenam='Name:';

set='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZßöäüÖÄÜ ';
str=window.document.forms[0].elements[ele].value;

for (i=0;i<=str.length;i++)
    {
     zeichen=str.charAt(i);
     if (set.indexOf(zeichen)==-1)
        {
         alert('In Element '+elenam+' bitte nur Buchstaben eingeben');
         return false;
         i=str.length;
        }
    }

ele=5;
elenam='Nick_im_Forum:';

set='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZßöäüÖÄÜ ';
str=window.document.forms[0].elements[ele].value;

for (i=0;i<=str.length;i++)
    {
     zeichen=str.charAt(i);
     if (set.indexOf(zeichen)==-1)
        {
         alert('In Element '+elenam+' bitte nur Buchstaben eingeben');
         return false;
         i=str.length;
        }
    }

ele=7;
elenam='Strasse:';

set='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZßöäüÖÄÜ ';
str=window.document.forms[0].elements[ele].value;

for (i=0;i<=str.length;i++)
    {
     zeichen=str.charAt(i);
     if (set.indexOf(zeichen)==-1)
        {
         alert('In Element '+elenam+' bitte nur Buchstaben eingeben');
         return false;
         i=str.length;
        }
    }

ele=8;
elenam='Hausnummer:';

set=' 1234567890';
str=window.document.forms[0].elements[ele].value;

for (i=0;i<=str.length;i++)
    {
     zeichen=str.charAt(i);
     if (set.indexOf(zeichen)==-1)
        {
         alert('In Element '+elenam+' bitte nur Ziffern eingeben');
         return false;
         i=str.length;
        }
    }

ele=9;
elenam='PLZ:';

set=' 1234567890';
str=window.document.forms[0].elements[ele].value;

for (i=0;i<=str.length;i++)
    {
     zeichen=str.charAt(i);
     if (set.indexOf(zeichen)==-1)
        {
         alert('In Element '+elenam+' bitte nur Ziffern eingeben');
         return false;
         i=str.length;
        }
    }

ele=10;
elenam='Wohnort:';

set='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZßöäüÖÄÜ ';
str=window.document.forms[0].elements[ele].value;

for (i=0;i<=str.length;i++)
    {
     zeichen=str.charAt(i);
     if (set.indexOf(zeichen)==-1)
        {
         alert('In Element '+elenam+' bitte nur Buchstaben eingeben');
         return false;
         i=str.length;
        }
    }

ele=11;
elenam='eMail:';

str=window.document.forms[0].elements[ele].value;
if (str.indexOf('@',0)==-1)
{
alert('Ungültige E-Mailadresse in Feld: '+elenam);
return false;
}
if (str.length<6)
{
alert('Ungültige E-Mailadresse in Feld: '+elenam);
return false;
}

}
</script>

<form action=fonds.php method=post>
<input type=hidden name=ToMail value=formular@gmx.de>
<DIV ID=EL1 style=\"position:absolute; left:149px;top:629px;z-index:1\">
<input class=PS_10 type=Submit value=Senden onclick=\"return check_form()\">
</DIV>

[##### dieser Teil wurde herausgenommen #####]

</td></tr>
</table>
</DIV>
<DIV ID=EL43 style=\"position:absolute; left:190px;top:115px;z-index:43\">
<font class=TTE376_10>(z.B. 26.12.1963)</font>
</DIV>
<DIV ID=EL44 style=\"position:absolute; left:20px;top:750px;z-index:44\">
<table  class=TMT377_10>
<tr><td valign=top>

<input type=hidden name=FormularTitel value=Formular>
</form></body></html>");
} else
{
$message="";
foreach($_POST as $key => $value)
{


if (is_array($_POST[$key]))

        {

        $merk=$key;
        $liste="";

          foreach($_POST[$key] as $key => $value)
                {
                     $liste="$liste\n$value";
                }
        $message="$message\n\n$merk\n$liste";

        } else

        {
        if ($key == "ToMail") {$email=$value;}
        if ($key == "FormularTitel") {
         $titel=str_replace("#", " ", $value);
        }
        $message="$message\n\n$key\n$value";
        }
}

echo($body);
mail($email,$titel,$message,"From: <$email>");
echo("<font face=verdana size=2>Vielen Dank!Das Formular wurde erfolgreich gesendet.</font>");

echo("<p><font face=verdana size=2><a href=fonds.php>Zurück zum Formular</a></font>");
}

?>

</body>
</html>
Wie kriege ich das nun gebacken? Auch wenn ich es als formular_body.tpl abspeichere, klappt das irgendwie nicht. Das Formular überschneidet das formular.php in der Ansicht.
Greeting
Nighthawk
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

So wird das nichts... In der tpl-Datei darf nur HTML-Code stehen, der PHP-Code muss in der php-Datei stehen und dann entsprechend ans Template übergeben werden... :wink: Schau dir dazu einfach mal diesen Artikel an: KB:template_syntax.
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
Nighthawk
Mitglied
Beiträge: 82
Registriert: 04.11.2005 20:49

Beitrag von Nighthawk »

Ok, da ich nicht gerade der PHP-Profi bin, frage ich einfach mal so, wie kriege ich diesen Code (der als eigenständiger formular.php funktioniert)

Code: Alles auswählen

<?php
$body="<html><head><title>Formular</title></head><body bgcolor=#FFFFFF Link=#FF0080 ALink=#FFFFFF VLink=#400040 >";
if ($_POST[ToMail]=="") { 

.....
.....
.....
.....
.....
.....

echo("<p><font face=verdana size=2><a href=fonds.php>Zurück zum Formular</a></font>");
}

?> 
in diesen Code rein, sodass dieser funktioniert und ohne das sie sich überblenden?

Code: Alles auswählen

<?php

//Benötigte Dateien und Variablen von phpBB
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);


//Session auslesen und Benutzer-Informationen laden
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);


//Dieser Block kann weggelassen werden, wenn du nur den die Userdaten brauchst und auf den phpBB-Header verzichen möchtest
$page_title = 'Formular';
include($phpbb_root_path . 'includes/page_header.'.$phpEx);

$template->set_filenames(array(
   'body' => 'formular_body.tpl')
);

$template->pparse('body');


//Footer - nur dann weglassen, wenn du auch den Header weglässt
include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
?>
Thanks for help!
Greeting
Nighthawk
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Zuerst mal page_header.php und page_tail.php nicht includen, da du im Template ja mit <html> anfängst. Dann das <?php und das $body = " weglassen und den HTML-Code direkt in die Datei schreiben. Die if-Abfrage kannst du mit einem sog. switch lösen:

Code: Alles auswählen

if ($_POST[ToMail]=='')
{
  $template->assign_block_vars('switch_wasweißich', array());
}
und im Template anstatt dem if (...) { ... } das schreiben:

Code: Alles auswählen

<!-- BEGIN switch_wasweißich -->
...
<!-- END switch_wasweißich -->
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
Nighthawk
Mitglied
Beiträge: 82
Registriert: 04.11.2005 20:49

Beitrag von Nighthawk »

Thanks! Doch was für dich normal ist, ist für mich recht kompliziert. Ich habe leider, als Nichtprofi, nur die Hälfte davon verstanden was du geschrieben hast. Kannst du mir bitte in einem Beispiel darstellen was du genau meinst, wäre für mich sehr, sehr hilfreich. :oops:
Greeting
Nighthawk
BjoKa
Mitglied
Beiträge: 2
Registriert: 09.12.2005 21:22

Beitrag von BjoKa »

Hi Nighthawk!

Ich bin zwar nicht der angesprochene, aber ich hoffe mal ich darf trotzdem Antworten (ohne jetzt S2Bs Arbeit kaputt zu machen).

Kleiner Tipp: Erst ganz lesen, dann wundern, dann an die Arbeit machen. :)


Generell ist das Vorgehen wie folgt:

Du mußt zwei Schritte machen, die im Endeffekt Deine vorhandene formular.php in eine reine PHP-Datei (nur die Programmlogik, ohne irgendwas zum Aussehen der Seite) und eine reine HTML-(Template)-Datei zerlegen. Diese Templatedatei enthält dabei alle möglichen Aussehensweisen der Seite quasi neben oder untereinander, getrennt durch die "<!-- BEGIN switch_name -->" und "<!-- END switch_name -->" Zeilen.


Am besten machst Du Dir erstmal eine kopie Deiner formular.php, z.B. formular.tpl.

Anschließend löscht Du aus dieser Kopie alles PHP heraus, so zu sagen "ohne Rücksicht auf Verluste". Beim Löschen des PHP-Kodes ersetzt Du PHP-Variablen durch Namen in geschweiften Klammern. Dort wo Du in forum.php Entscheidungen triffst, (also per "if (...) { ... } else { ... }" mal das eine und mal das andere anzeigen läßt,) schreibst Du vor und hinter jede dieser Alternativen ein "<!-- BEGIN switch_name -->" bzw. "<!-- END switch_name -->". (Jeweils als eigene Zeile!) Dabei ist "name" ein beliebiger Name aus Buchstaben, Ziffern und dem Unterstrich "_".


Danach bearbeitest Du Deine formular.php und streichst dort den ganzen HTML-Text weg, so das nur noch der reine PHP-Kode (ohne "echo ..." Befehle, deren Text steht ja schon im Template) übrigbleibt. An den Stellen, an denen Du früher per "echo" Variablen ausgegeben hattest, schreibst Du jetzt den früher ausgegebenen Text in ein Array, wobei als Name (Array-Key) der beim Erstellen des Templates für die Variable benutzte Name Verwendung findet, und als Array-Wert der dort anzuzeigende Text.

Konkret

In Deinem speziellen Fall hast Du - soweit ich das sehen kann - gar keine Ausgaben gemacht, sondern zeigst einfach zwei verschiedenen Seiten an, entweder das Formular oder eine Art "Danke".

In diesem Fall reicht es, den Seitenlangen 'echo ("<html><head> ...' komplett als Template-Datei zu nehmen (ohne das "echo(" natürlich) und unmittelbar hinter dem "<body>" als eine eigene Zeile "<!-- BEGIN switch_show_form -->" und umittelbar vor dem "</body>" wieder als eigene Zeile "<!-- END switch_show_form -->" einzufügen.

Anschließend kommt zwischen das "<!-- END switch_show_form -->" und die "</body>" Zeile ein weiterer Switch-Block, z.B. "<!-- BEGIN switch_show_thanks -->", gefolgt von dem HTML-Kode der für "Danke" angezeigt werden soll (exclusive dessen was schon oberhalb von "<!-- BEGIN switch_show_form -->" steht (Page-Header etc.)), gefolgt von "<!-- END switch_show_thanks -->", schlußendlich gefolgt von "</body>".

Das war's für das Template. Deine formular.php schnurrt dann - wie S2B schon teilweise schrieb - zusammen zu

Code: Alles auswählen

if ($_POST[ToMail]=='') 
{ 
  $template->assign_block_vars('switch_show_form', array()); 
} else {
   $message=""; 
   foreach($_POST as $key => $value) 
   { 
 
   // hier den Rest Deines Kodes einfuegen

   } 

   mail($email,$titel,$message,"From: <$email>"); 

   $template->assign_block_vars('switch_show_thanks', array()); 

}
Diesen PHP-Kode kannst Du dann in Deine Forum-Seite oberhalb des "$template->pparse('body');" einfügen. Ob das setzten des Template-Dateinamens jetzt vor oder nach dem zuweisen von Template-Werten (die "assign_block_var" Zeilen) stehen muß, oder obs egal ist, weiß ich jetzt nicht auswendig. Mußt du probieren.


Noch eine Warnung am Schluß:

Du benutzt Javascript zum Überprüfen der Formulareingaben. Das ist bodenloser Leichtsinn, weil Javascript-Tests trivial ausgehebelt werden können. Wenn Du die Seite öffentlich im Internet betreiben willst, solltest Du Deine Formulareingaben im PHP-Skript überprüfen. Erste Regel beim PHP-Programmieren: Trau niemals einer Usereingabe!


Ich hoffe, das hilft Dir weiter. Viel Erfolg!

BjoKa
Benutzeravatar
Nighthawk
Mitglied
Beiträge: 82
Registriert: 04.11.2005 20:49

Beitrag von Nighthawk »

Hallo

Erstmal vielen Dank für deine ausführliche Ausführung bzw. Erklärung! Da ich aber von PHP-Programmierung absolut keine Ahnung habe, ist auch deine Ausführung für mich etwas schwer nachzuvollziehen ohne deine tolle Erklärung damit zu schmälern!!

Das formular.php selbst funktioniert ohne Problem und macht das was er machen muss. Ich habe das formular.php auch nicht selbst programmiert, sondern das Tool "Visual Form Maker" benutzt bei dem ich auf eine neue Seite nur Elemente hinzufügen brauche und der Code und Abläufe wird automtisch im Hintergrund geschrieben. Am Schluss brauche ich das erstellte Formular nur noch als PHP-Datei exportieren.

Mein Problem ist nun, dass ich das formular.php mit den Dateien aus dem overall_header.tpl und overall_footer.tpl meines Forums erweitern möchte, sodass das Formular auch zum meinem Forum passt. Oder das ich das erstellte formular.php in ein xxxxx_body.tpl umwandeln und dann in ein xyz.php einbinden kann.

Bei mir fängt das Problem ja schon hier an. Ich weiss definitiv nicht was ich machen muss, weil ich keine PHP kann. Ich habe aus dem formular.php eine formular.tpl gemacht. Löschen ist eine Sache, aber gleich auch noch mit Etwas zu ersetzen geht über mein Wissen...
BjoKa hat geschrieben:Generell ist das Vorgehen wie folgt:

Anschließend löscht Du aus dieser Kopie alles PHP heraus, so zu sagen "ohne Rücksicht auf Verluste". Beim Löschen des PHP-Kodes ersetzt Du PHP-Variablen durch Namen in geschweiften Klammern. Dort wo Du in forum.php Entscheidungen triffst, (also per "if (...) { ... } else { ... }" mal das eine und mal das andere anzeigen läßt,) schreibst Du vor und hinter jede dieser Alternativen ein "<!-- BEGIN switch_name -->" bzw. "<!-- END switch_name -->". (Jeweils als eigene Zeile!) Dabei ist "name" ein beliebiger Name aus Buchstaben, Ziffern und dem Unterstrich "_".
Und das ist auch nicht ganz einfach zu verstehen, wenn man keine PHP kann...
BjoKa hat geschrieben:Konkret

In diesem Fall reicht es, den Seitenlangen 'echo ("<html><head> ...' komplett als Template-Datei zu nehmen (ohne das "echo(" natürlich) und unmittelbar hinter dem "<body>" als eine eigene Zeile "<!-- BEGIN switch_show_form -->" und umittelbar vor dem "</body>" wieder als eigene Zeile "<!-- END switch_show_form -->" einzufügen.

Anschließend kommt zwischen das "<!-- END switch_show_form -->" und die "</body>" Zeile ein weiterer Switch-Block, z.B. "<!-- BEGIN switch_show_thanks -->", gefolgt von dem HTML-Kode der für "Danke" angezeigt werden soll (exclusive dessen was schon oberhalb von "<!-- BEGIN switch_show_form -->" steht (Page-Header etc.)), gefolgt von "<!-- END switch_show_thanks -->", schlußendlich gefolgt von "</body>".
Aber was muss ich letztendlich tun, das aus dem Generell oder Konkret?

Könntest du mir bitte an einem Beispiel ziegen, wie ich vorzugehen habe. Danke!
Greeting
Nighthawk
Benutzeravatar
Nighthawk
Mitglied
Beiträge: 82
Registriert: 04.11.2005 20:49

Beitrag von Nighthawk »

Werde ich mit meinem Anliegen plötzlich alleine gelassen und es wird von mir erwartet, dass ich von heute auf morgen zu einem PHP-Profi werde?
Ich würde gerne das Formular meinen Mitgliedern zur Verfügung stellen inkl. Header und Footer.

Was ist den nun massgebend? Das das aus dem Generell oder Konkret? Muss ich beim Konkret die Datei auch in eine *.tpl (in eine HTML) umwandeln und alle PHPs daraus löschen?
Greeting
Nighthawk
Benutzeravatar
Nighthawk
Mitglied
Beiträge: 82
Registriert: 04.11.2005 20:49

Beitrag von Nighthawk »

Nighthawk hat geschrieben:Werde ich mit meinem Anliegen plötzlich alleine gelassen und es wird von mir erwartet, dass ich von heute auf morgen zu einem PHP-Profi werde?
Ich würde gerne das Formular meinen Mitgliedern zur Verfügung stellen inkl. Header und Footer.

Was ist den nun massgebend? Das das aus dem Generell oder Konkret? Muss ich beim Konkret die Datei auch in eine *.tpl (in eine HTML) umwandeln und alle PHPs daraus löschen?
Das was ich versucht habe aus Konkret:

Code: Alles auswählen

echo("
<!-- BEGIN switch_show_form -->
<body bgcolor=#FFFFFF Link=#FF0080 ALink=#FFFFFF VLink=#400040 >

<style type="text/css">
<!--
.PS_10{
top:629px;
width:100px;
height:30px;
border-width:1px;
font-size:8pt;
border-color:#000000;
color:#000000;
background-color:#C0C0C0;
border-style:solid;
font-weight:bold;
font-family:Arial;
cursor:pointer;
font-style:;

}
.PC_10{
top:629px;
width:100px;
height:30px;
border-width:1px;
font-size:8pt;
border-color:#000000;
color:#000000;
background-color:#C0C0C0;
border-style:solid;
font-weight:bold;
font-family:Arial;
cursor:pointer;
font-style:;

}
.TED336_10{
top:50px;
width:270px;
height:18px;
border-width:0px;
font-size:10pt;
border-color:#000000;
color:#000000;
background-color:#D2D2D2;
border-style:solid;
font-weight:;
font-family:Arial;
cursor:text;
font-style:;

}
[##### ein Teil wurde herausgenommen #####]
--></style>

<script language=javascript>
function check_form()
{
var error,i,set,str,ele,elenam,zeichen;
ele=3;
elenam='Vorname:';

set='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZßöäüÖÄÜ ';
str=window.document.forms[0].elements[ele].value;

for (i=0;i<=str.length;i++)
    {
     zeichen=str.charAt(i);
     if (set.indexOf(zeichen)==-1)
        {
         alert('In Element '+elenam+' bitte nur Buchstaben eingeben');
         return false;
         i=str.length;
        }
    }

ele=4;
elenam='Name:';

set='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZßöäüÖÄÜ ';
str=window.document.forms[0].elements[ele].value;

for (i=0;i<=str.length;i++)
    {
     zeichen=str.charAt(i);
     if (set.indexOf(zeichen)==-1)
        {
         alert('In Element '+elenam+' bitte nur Buchstaben eingeben');
         return false;
         i=str.length;
        }
    }

ele=5;
elenam='Nick_im_Forum:';

set='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZßöäüÖÄÜ ';
str=window.document.forms[0].elements[ele].value;

for (i=0;i<=str.length;i++)
    {
     zeichen=str.charAt(i);
     if (set.indexOf(zeichen)==-1)
        {
         alert('In Element '+elenam+' bitte nur Buchstaben eingeben');
         return false;
         i=str.length;
        }
    }

ele=7;
elenam='Strasse:';

set='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZßöäüÖÄÜ ';
str=window.document.forms[0].elements[ele].value;

for (i=0;i<=str.length;i++)
    {
     zeichen=str.charAt(i);
     if (set.indexOf(zeichen)==-1)
        {
         alert('In Element '+elenam+' bitte nur Buchstaben eingeben');
         return false;
         i=str.length;
        }
    }

ele=8;
elenam='Hausnummer:';

set=' 1234567890';
str=window.document.forms[0].elements[ele].value;

for (i=0;i<=str.length;i++)
    {
     zeichen=str.charAt(i);
     if (set.indexOf(zeichen)==-1)
        {
         alert('In Element '+elenam+' bitte nur Ziffern eingeben');
         return false;
         i=str.length;
        }
    }

ele=9;
elenam='PLZ:';

set=' 1234567890';
str=window.document.forms[0].elements[ele].value;

for (i=0;i<=str.length;i++)
    {
     zeichen=str.charAt(i);
     if (set.indexOf(zeichen)==-1)
        {
         alert('In Element '+elenam+' bitte nur Ziffern eingeben');
         return false;
         i=str.length;
        }
    }

ele=10;
elenam='Wohnort:';

set='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZßöäüÖÄÜ ';
str=window.document.forms[0].elements[ele].value;

for (i=0;i<=str.length;i++)
    {
     zeichen=str.charAt(i);
     if (set.indexOf(zeichen)==-1)
        {
         alert('In Element '+elenam+' bitte nur Buchstaben eingeben');
         return false;
         i=str.length;
        }
    }

ele=11;
elenam='eMail:';

str=window.document.forms[0].elements[ele].value;
if (str.indexOf('@',0)==-1)
{
alert('Ungültige E-Mailadresse in Feld: '+elenam);
return false;
}
if (str.length<6)
{
alert('Ungültige E-Mailadresse in Feld: '+elenam);
return false;
}

}
</script>

<form action=fonds.php method=post>
<input type=hidden name=ToMail value=formular@gmx.de>
<DIV ID=EL1 style="position:absolute; left:149px;top:629px;z-index:1">
<input class=PS_10 type=Submit value=Senden onclick="return check_form()">
</DIV>

[##### dieser Teil wurde herausgenommen #####]

</td></tr>
</table>
</DIV>
<DIV ID=EL43 style="position:absolute; left:190px;top:115px;z-index:43">
<font class=TTE376_10>(z.B. 26.12.1963)</font>
</DIV>
<DIV ID=EL44 style="position:absolute; left:20px;top:750px;z-index:44">
<table  class=TMT377_10>
<tr><td valign=top>

<input type=hidden name=FormularTitel value=Formular>
</form></body>");
<!-- END switch_show_form -->
<!-- BEGIN switch_show_thanks -->
} else
{
$message="";
foreach($_POST as $key => $value)
{


if (is_array($_POST[$key]))

        {

        $merk=$key;
        $liste="";

          foreach($_POST[$key] as $key => $value)
                {
                     $liste="$liste\n$value";
                }
        $message="$message\n\n$merk\n$liste";

        } else

        {
        if ($key == "ToMail") {$email=$value;}
        if ($key == "FormularTitel") {
         $titel=str_replace("#", " ", $value);
        }
        $message="$message\n\n$key\n$value";
        }
}

echo($body);
mail($email,$titel,$message,"From: <$email>");
echo("<font face=verdana size=2>Vielen Dank!Das Formular wurde erfolgreich gesendet.</font>");

echo("<p><font face=verdana size=2><a href=fonds.php>Zurück zum Formular</a></font>");
}
<!-- END switch_show_thanks -->
</body>
Greeting
Nighthawk
Benutzeravatar
V1tzl1
Mitglied
Beiträge: 157
Registriert: 10.10.2005 15:31

Beitrag von V1tzl1 »

Also der oben gepostete Code ist auch nicht im Sinne des Template Systems.
BjoKa hat dir sowohl mit Generell einen generellen Überblick, als auch mit dem Konkreten Teil, einen direkten Hinweis gegeben, wie du das lösen kannst. Da das anscheinend nicht sehr verständlich war (obwohl ichs verstanden habe), sollte dieser Code funktionieren

templates/subsilver/formular_body.tpl

Code: Alles auswählen

<!-- BEGIN switch_not_postet -->
<!-- // User hat noch nichts abgeschickt, also Formular anzeigen -->
<html><head> 
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"> 
<meta name=\"generator\" content=\"Visual-Form-Maker\"> 
<meta name=\"keywords\" content=\"Visual Form Maker\"> 

<title>Formular</title> 
</head> 
<body bgcolor=#FFFFFF Link=#FF0080 ALink=#FFFFFF VLink=#400040 > 

<style type=\"text/css\"> 
<!-- 
.PS_10{ 
top:629px; 
width:100px; 
height:30px; 
border-width:1px; 
font-size:8pt; 
border-color:#000000; 
color:#000000; 
background-color:#C0C0C0; 
border-style:solid; 
font-weight:bold; 
font-family:Arial; 
cursor:pointer; 
font-style:; 

} 
.PC_10{ 
top:629px; 
width:100px; 
height:30px; 
border-width:1px; 
font-size:8pt; 
border-color:#000000; 
color:#000000; 
background-color:#C0C0C0; 
border-style:solid; 
font-weight:bold; 
font-family:Arial; 
cursor:pointer; 
font-style:; 

} 
.TED336_10{ 
top:50px; 
width:270px; 
height:18px; 
border-width:0px; 
font-size:10pt; 
border-color:#000000; 
color:#000000; 
background-color:#D2D2D2; 
border-style:solid; 
font-weight:; 
font-family:Arial; 
cursor:text; 
font-style:; 

} 
[##### ein Teil wurde herausgenommen #####] 
--></style> 

<script language=javascript> 
function check_form() 
{ 
var error,i,set,str,ele,elenam,zeichen; 
ele=3; 
elenam='Vorname:'; 

set='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZßöäüÖÄÜ '; 
str=window.document.forms[0].elements[ele].value; 

for (i=0;i<=str.length;i++) 
    { 
     zeichen=str.charAt(i); 
     if (set.indexOf(zeichen)==-1) 
        { 
         alert('In Element '+elenam+' bitte nur Buchstaben eingeben'); 
         return false; 
         i=str.length; 
        } 
    } 

ele=4; 
elenam='Name:'; 

set='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZßöäüÖÄÜ '; 
str=window.document.forms[0].elements[ele].value; 

for (i=0;i<=str.length;i++) 
    { 
     zeichen=str.charAt(i); 
     if (set.indexOf(zeichen)==-1) 
        { 
         alert('In Element '+elenam+' bitte nur Buchstaben eingeben'); 
         return false; 
         i=str.length; 
        } 
    } 

ele=5; 
elenam='Nick_im_Forum:'; 

set='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZßöäüÖÄÜ '; 
str=window.document.forms[0].elements[ele].value; 

for (i=0;i<=str.length;i++) 
    { 
     zeichen=str.charAt(i); 
     if (set.indexOf(zeichen)==-1) 
        { 
         alert('In Element '+elenam+' bitte nur Buchstaben eingeben'); 
         return false; 
         i=str.length; 
        } 
    } 

ele=7; 
elenam='Strasse:'; 

set='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZßöäüÖÄÜ '; 
str=window.document.forms[0].elements[ele].value; 

for (i=0;i<=str.length;i++) 
    { 
     zeichen=str.charAt(i); 
     if (set.indexOf(zeichen)==-1) 
        { 
         alert('In Element '+elenam+' bitte nur Buchstaben eingeben'); 
         return false; 
         i=str.length; 
        } 
    } 

ele=8; 
elenam='Hausnummer:'; 

set=' 1234567890'; 
str=window.document.forms[0].elements[ele].value; 

for (i=0;i<=str.length;i++) 
    { 
     zeichen=str.charAt(i); 
     if (set.indexOf(zeichen)==-1) 
        { 
         alert('In Element '+elenam+' bitte nur Ziffern eingeben'); 
         return false; 
         i=str.length; 
        } 
    } 

ele=9; 
elenam='PLZ:'; 

set=' 1234567890'; 
str=window.document.forms[0].elements[ele].value; 

for (i=0;i<=str.length;i++) 
    { 
     zeichen=str.charAt(i); 
     if (set.indexOf(zeichen)==-1) 
        { 
         alert('In Element '+elenam+' bitte nur Ziffern eingeben'); 
         return false; 
         i=str.length; 
        } 
    } 

ele=10; 
elenam='Wohnort:'; 

set='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZßöäüÖÄÜ '; 
str=window.document.forms[0].elements[ele].value; 

for (i=0;i<=str.length;i++) 
    { 
     zeichen=str.charAt(i); 
     if (set.indexOf(zeichen)==-1) 
        { 
         alert('In Element '+elenam+' bitte nur Buchstaben eingeben'); 
         return false; 
         i=str.length; 
        } 
    } 

ele=11; 
elenam='eMail:'; 

str=window.document.forms[0].elements[ele].value; 
if (str.indexOf('@',0)==-1) 
{ 
alert('Ungültige E-Mailadresse in Feld: '+elenam); 
return false; 
} 
if (str.length<6) 
{ 
alert('Ungültige E-Mailadresse in Feld: '+elenam); 
return false; 
} 

} 
</script> 

<form action=fonds.php method=post> 
<input type=hidden name=ToMail value=formular@gmx.de> 
<DIV ID=EL1 style=\"position:absolute; left:149px;top:629px;z-index:1\"> 
<input class=PS_10 type=Submit value=Senden onclick=\"return check_form()\"> 
</DIV> 

[##### dieser Teil wurde herausgenommen #####] 

</td></tr> 
</table> 
</DIV> 
<DIV ID=EL43 style=\"position:absolute; left:190px;top:115px;z-index:43\"> 
<font class=TTE376_10>(z.B. 26.12.1963)</font> 
</DIV> 
<DIV ID=EL44 style=\"position:absolute; left:20px;top:750px;z-index:44\"> 
<table  class=TMT377_10> 
<tr><td valign=top> 

<input type=hidden name=FormularTitel value=Formular> 
</form></body></html>
<!-- END switch_not_posted -->
<!-- BEGIN switch_posted -->
<!-- // User hat gepostet, ein Dankeschön anzeigen -->
<font face=verdana size=2>Vielen Dank!Das Formular wurde erfolgreich gesendet.</font>

<p><font face=verdana size=2><a href="javascript:history(-1)">Zurück zum Formular</a></font>
<!-- END switch_posted -->
und die .php datei mit belibigen namen im Stammverzeichniss, also da, wo dein Forum drin liegt

Code: Alles auswählen

<?php 

//Benötigte Dateien und Variablen von phpBB 
define('IN_PHPBB', true); 
$phpbb_root_path = './'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 


//Session auslesen und Benutzer-Informationen laden 
$userdata = session_pagestart($user_ip, PAGE_INDEX); 
init_userprefs($userdata); 


//Dieser Block kann weggelassen werden, wenn du nur den die Userdaten brauchst und auf den phpBB-Header verzichen möchtest 
$page_title = 'Formular'; 
include($phpbb_root_path . 'includes/page_header.'.$phpEx); 

$template->set_filenames(array( 
   'body' => 'formular_body.tpl') 
); 

if($_POST[ToMail]=="")
 {
  //Wenn das Formular noch nicht bageschickt wurde
  $template->assign_block_vars('switch_not_posted', array());
 }
else
 {
  // Formular wurde abgeschickt, also los ...
  $message=""; 
  foreach($_POST as $key => $value) 
   { 
    if (is_array($_POST[$key])) 
     { 
      $merk=$key; 
      $liste=""; 
      foreach($_POST[$key] as $key => $value) 
       { 
        $liste="$liste\n$value"; 
       } 
      $message="$message\n\n$merk\n$liste"; 
     }
    else 
     { 
      if ($key == "ToMail")
       {
        $email=$value;
       } 
      if ($key == "FormularTitel")
       { 
        $titel=str_replace("#", " ", $value); 
       } 
      $message="$message\n\n$key\n$value"; 
     } 
   } 

  mail($email,$titel,$message,"From: <$email>"); 

  
  $template->assign_block_vars('switch_posted', array());
 }

$template->pparse('body'); 


//Footer - nur dann weglassen, wenn du auch den Header weglässt 
include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 
?>
MfG V1tzl1

Und das nächste mal nicht einfach ungeduldig werden, es ist hier keiner Verpflichtet, antworten zu geben und ich denke mal BjoKa hat sich doch echt Mühe gegeben, es dir verständlich zu erklären, also da hätte ich mich warscheinlich wesentlich dämlicher angestellt ;)
Antworten

Zurück zu „phpBB 2.0: Styles, Templates und Grafiken“