newbe problem: formulare verarbeiten?

Maurus

Mitglied
Thread Starter
Mitglied seit
01.10.2002
Beiträge
293
hallo macuser!
möchte mich mal an das erste php-script wagen ;)

und zwar möchte ich eine seite die ein html-formular enthält verarbeiten.
im tut von php.net steht das man das mit der echo() anweisung tun könne... nur sind im meinem formular keine textfelder vorhanden - dessen inhalt ausgegeben werden könnte - sondern nur checkboxen (...fragt später was dass soll :D )

jeder checkbox soll eine (oder mehrere) html seiten zugeordnet werden

wenn mehrere checkboxen angeklickt wurden sollen alle zugeordnete seiten auf einer seite - als zusammen fassung sozusagen - erscheinen.

also wer kann mir dabei helfen? :)
danke schonmal!
Maurus
 

msr73

Mitglied
Mitglied seit
22.05.2003
Beiträge
16
Lösungsvorschlag

Die Checkboxen auf der HTML-Seite habe in ihrem <Tag> einen 'name' - Parameter. Durch diesen kannst Du dann im folgenden PHP-Script die einzelnen Checkboxen referenzieren.

Wenn Du also eine CB namens Check1 hast, lautet die Referenzierung im folgenden Skript:
if($Check1){
//....
}

Innerhalb dieser if-Anweisung musst Du die HTML-Seite, die über diese Checkbox angewählt werden soll, auf den Schirm bringen.

Das könnte man machen, in dem man das HTML in ein Array verpackt und es passend zur jeweiligen Checkbox ausgibt oder in dem man File-Operationen auf den .html-Dateien macht und alles aus diesen ausliest, was man jeweils benötigt....

Try it!
Micha
 

Maurus

Mitglied
Thread Starter
Mitglied seit
01.10.2002
Beiträge
293
hallo!
danke!, klingt ja toll...nur wie mache ich ein array?
bzw. was ist das überhaupt?
danke!

Gruss Maurus
 

msr73

Mitglied
Mitglied seit
22.05.2003
Beiträge
16
Original geschrieben von Maurus
hallo!
danke!, klingt ja toll...nur wie mache ich ein array?
bzw. was ist das überhaupt?
danke!

Gruss Maurus
&nbsp;

na zum Beispiel so:

$webseite[0]="<html><body>bla</body></html>";
$webseite[1]="<html><body>tralala</body></html>";

switch($check){
case 1: echo $webseite[0];
break;
case 2: echo $webseite[1];
break;
}

oder so ähnlich ...

Viele Grüße!
Micha
 

Eistee

Mitglied
Mitglied seit
05.06.2003
Beiträge
55
Hallo Maurus,

ich würde das folgendermaßen angehen:

Erstelle in der Datei, die das Formular auswertet, mehrere "if-Bedingungen",
die überprüfen, ob eine Checkbox angeklickt wurde oder nicht.


PHP:
<?php

if ($_POST[check1] == TRUE) 
{
    include("DeineHTMLSeite1.html");
}

echo "<P>&nbsp;</P>";

if ($_POST[check2] == TRUE)
{
   include("DeineHTMLSeite2.html");
}

...

?>

Ist "$_POST[check1]" gesetzt, wird über den "include" Befehl die Datei
"DeineHTMLSeite1.html" eingebunden. Entsprechen geschieht das bei den
anderen Bedingungen. In die Dateien, die eingebunden werden, würde ich
lediglich den Inhalt, ohne den HTML Header (<HTML><HEAD><TITLE> ...),
schreiben. Diesen aber auf jeden Fall in das oben beschriebene Skript
einbinden.

Was das "$_POST" und der "include" Befehl genau machen, schau dir
einfach mal auf http://www.selfphp.com an.


Flo
 

Maurus

Mitglied
Thread Starter
Mitglied seit
01.10.2002
Beiträge
293
Hallo Eistee

vielen dank!
hab das mal ausprobiert funtzt aber nicht wirklich...
rechte evtl falsch? mit chmod 777 sollte es aber doch eigentlich gehen :confused:
 

Eistee

Mitglied
Mitglied seit
05.06.2003
Beiträge
55
Was genau funktioniert denn nicht? Wird eine Fehlermeldung ausgegeben?
Wenn ja, poste dieses mal. Und poste am Besten auch gleich mal Deine(n)
Quellcode(s). Vielleicht habe ich bzw. Du ja was übersehen.


Flo
 

Maurus

Mitglied
Thread Starter
Mitglied seit
01.10.2002
Beiträge
293
Ok...

hier mal die fehlermeldung...
Parse error: parse error in /Library/WebServer/Documents/php_html/action.php on line 3
Hier den HTML-Quellcode der index.html (formular)
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#000000" text="#FFFFFF" leftmargin="0" topmargin="0" link="#FF0000" vlink="#000099" alink="#FF0000">
<table width="748" border="0" cellpadding="0" cellspacing="0" mm:layoutgroup="true">
<tr>
<td width="51" height="319"></td>
<td width="561" valign="top">
<form name="form1" method="post" action="action.php">
<p>
<input type="checkbox" name="check1" value="checkbox">
<font face="Helvetica, Arial" size="2">Fotografie</font>
<input type="checkbox" name="check2" value="checkbox">
<font face="Helvetica, Arial"> <font size="2">Grafik &amp; Illustartion
</font></font></p>
<p>
<input type="submit" name="Abschicken" value="Abschicken">
</p>
</form>
</td>
<td width="136"></td>
</tr>
<tr>
<td height="59"></td>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>
und die action.php datei...
<?php

if_($_POST[check1]_== TRUE)_
{
____include("php_html/foto.html");
}

echo_ "<P>&nbsp;</P>" ;

if_($_POST[check2]_== TRUE)
{
___include("php_html/grafik.html");
}

?>
vieleicht findest ja was ....
 

Eistee

Mitglied
Mitglied seit
05.06.2003
Beiträge
55
Hi Maurus,

der Fehler liegt darin, dass Deine "if-Bedingung" falsch ist.

Also ... das "value" der Checkboxen in der "index.html" gibt an, mit
welchem, Wert die Variablen "$_POST[check1]" und "$_POST[check2]
gefüllt werden sollen, wenn sie angeklickt wurden. In Deinem Fall also mit
dem Wert "checkbox".

In der "action.php" lautet Deine "if-Bedinung" aber, dass nur dann etwas
passieren soll, wenn "$_POST[check1]" (oder "2") den Wert "TRUE"
enthalten.

Ändere also die "if-Bedingung" in: if($_POST[check1] == "checkbox") ...

Ich empfehle Dir aber, zum besseren Handling, nicht den Wert "checkbox",
sondern den wert "ON" zu verwenden. Dies ist für Checkboxen, der am
häufigsten benutzte Wert und auch der Logischste, da Du ja prüfen
möchtest, ob eine Checkbox gesetzt, also "ON" ist. Dementsprechend musst
Du natürlich die "index.html", sowie die "action.php" ändern.

Schreib mal, wenn's geklappt hat.


Flo


PS: Noch etwas ... besser ist es, wenn Du das echo "<P></P>"; erstens mit
einem Leerzeichen "füllst", also echo "<P>&nbsp;</P>"; und dann diesen
nicht auserhalb der "if-Bedigung", sonden innerhalb einbaust. So wird auch
nur dann ein Umbruch eingefügt, wenn auch eine Seite eingefügt wird.


PHP:
if ($_POST[check1] == "ON")
{
   include("1234.html");
   echo "<P>&nbsp;</P>";
}