php übergabe Parameter an submit

E

e.luft

Mitglied
Thread Starter
Dabei seit
12.04.2006
Beiträge
49
Reaktionspunkte
0
Hallo zusammen,

versuche mich gerade in php und HTML Formula einzuarbeiten.
Scheitere aber schon am folgenden Problem:

Habe 4 radiobuttons zur Auswahl. Je nachdem was für eine gewählt wird, soll eine demenstprechende Seite geöffnet werden. Dabei war meine Idee, mit if Bedienung zu prüfen, welcher Checkbox ausgewählt worden ist, einen Parameter $a zu setzen und diesen an submit weiterzugeben. Aber irgendwie will es nicht :-(

Code:
<table>
<tr>
<td>
<input name="status" type="radio" value="1" />1<br />
</td>
</tr>
<tr>
<td>
<input name="status" type="radio" value="2" />2<br />
</td>
</tr>
<tr>
<td>
<input name="status" type="radio" value="3"  />3<br />
</td>
</tr>
<tr>
<td>
<input name="status" type="radio" value="4"  />4<br />
</td>
</tr>
</table>

<?php
if ($_POST["status"]=="1";){
$a="main.html";
}
else if ($_POST["status"]=="2";){
$="index_andere.html";
}


?>


    <br />
    <br />
    
    <br />
   
    <!-- <input class="back" type="submit" value="zurück"     onclick="window.open('index2.html','frame1');"  /> -->

    <input class="annehmen" type="submit" value="Weiter" onclick="windos.open('<?php "$a"; ?>', 'frame1');"  />

Was mache ich falsch?
 
Also else if ... halte ich für merkwürdig (mach mal nur if) und außerdem fehlt da ein a in der else schleife ($a=...)

Ich würde jedoch ne switch case funktion nehmen

<?php
switch ($_POST["status"])
{
case "1":
$a="main.html";
break;
case "2":
$a="andere.html";
break
.
.
.
default:
$a="default.html";
}
?>
 
Zuletzt bearbeitet:
<?php
if ($_POST["status"]=="1";){
$a="main.html";
}
else if ($_POST["status"]=="2";){
$a="index_andere.html";
}


?>
Ein ; hat in der Prüfung beim if nichts verloren. Ich vermute, der Teil bis zum Semikolon wird als eine eigene Zeile behandelt und der Teil danach als if-Prüfung hergenommen. Da dort nichts steht, wird es vermutlich als false interpretiert, so dass keine der if-Anweisungen ausgeführt wird.

Es sollte zudem immer einen default-Wert geben, also eine Seite, wo Du, wenn nur Murks kommt, hinspringst.

Besser ist, wie voriger schon geschrieben hat, in dem Fall eine switch-case-Anweisung. Schau Dir die Syntax mal an bei php.net einmal an:

Beispiel:
<?php
switch ($i) {
case 0:
echo "i ist gleich 0";
break;
case 1:
echo "i ist gleich 1";
break;
case 2:
echo "i ist gleich 2";
break;
default:
echo "i ist weder 0, 1 noch 2";
}
?>
http://de.php.net/manual/de/control-structures.switch.php
 
HTML:
    <input class="annehmen" type="submit" value="Weiter" onclick="windos.open('<?php "$a"; ?>', 'frame1');"  />

Das führt unweigerlich zu einem JS-Fehler. Es empfiehlt sich, sowohl Debug-Konsole als auch Serverlogs zu konsultieren, viele Probleme lassen sich mit den dort auflaufenden Fehlern recht einfach lösen.

Zum Rest wurde schon alles gesagt
 
ich versteh das aber richtig, daß das Formular VOR dem Aufruf des PHP-Snipets ausgewertet wurde?

Will sagen HTML-Code und PHP stehen so hoffentlich nicht in einer Datei und es wird ohne Submit versucht den Wert zu ermitteln? Sowas ginge nur mit eine Automaten, also einem Formular das sich selbst aufruft.

Zur Clienseitigen Evaluierung von HTML-Bestandteilen gibt es Javascript. PHP läuft auf dem Server, also nur das Resultat (HTML z.B.) wird ausgelifert.
 
Ok. Für die PHP- und HTML-Neulinge nochmal alles Step by Step (Schrit für Schritt)

index.php:
Code:
<?php
$mypath='path_to_subsites/';
$defaultsite='index.html';
$site=isset($_POST['site']) && file_exists($mypath.basename($_POST['site'])) ? basename($_POST['site']) : $defaultsite;

include($mypath.$site);
?>

path_to_subsites/index.html:
Code:
<html>
<head>....</head>
<body>
<form action="index.php" method="post">
<input type="radio" name="site" value="site1.html"> Seite 1<br>
<input type="radio" name="site" value="site2.html"> Seite 2<br>
<input type="radio" name="site" value="site3.html"> Seite 3<br>
</form>
</body>
</html>

path_to_subsites/site1.html
Code:
whateveryouwant...

Und unter dem Pfad path_to_subsites/ dürfen natürlich nur Seiten abgelegt sein, die auch aufgerufen werden dürfen. Ansonsten lässt sich nämlich jede Seite in diesem Verzeichnis aufrufen!
Mehr Tips gibts auf einschlägigen PHP-Seiten php.net usw. Oder lies ein gutes Buch!
 
ich versteh das aber richtig, daß das Formular VOR dem Aufruf des PHP-Snipets ausgewertet wurde?

Will sagen HTML-Code und PHP stehen so hoffentlich nicht in einer Datei und es wird ohne Submit versucht den Wert zu ermitteln? Sowas ginge nur mit eine Automaten, also einem Formular das sich selbst aufruft.

Zur Clienseitigen Evaluierung von HTML-Bestandteilen gibt es Javascript. PHP läuft auf dem Server, also nur das Resultat (HTML z.B.) wird ausgelifert.
Ich denke auch, dass, angesichts des Javascript-Befehls window.open, hier das Problem liegt. So wie ich dein Scriptbeispiel verstehe, möchtest du über die Radio-Buttons steuern, welches Fenster geöffnet werden soll - d.h. vor dem Submit. Nach dem Submit ist window.open sinnlos. Wenn du mit Javascript die Formularwerte ausliest und und an window.open den URL weitergibst, funktioniert es - aber eben nur mit Javascript, php hat damit nichts zu tun. So in etwa:
HTML:
<html>
<head>
<title>test</title>
<script type="text/javascript">
function checkform()
{
	for (i = 0; i < document.formular.site.length; i++) 	
	if (document.formular.site[i].checked) return alert ("window.open ('" + document.formular.site[i].value + "')");
	
	return alert ("Hä?");
}
</script>
</head>
<body>
<form name="formular">
<input type="radio" name="site" value="site1.html" checked="checked"> Seite 1<br>
<input type="radio" name="site" value="site2.html"> Seite 2<br>
<input type="radio" name="site" value="site3.html"> Seite 3<br>
<input type="submit" name="wohin" value="wohin?" onclick="checkform();return false">
</form>
</body>
</html>
 
Vermischt nicht JS und PHP!

Wenn nach dem Klick auf einen Radiobutton sofort und ohne Serverkommunikation ein neues Fenster geäffnet werden soll, dann geht das so nicht! Dann braucht man noch nicht einmal einen Submit-Button!

Hatte ich überlesen, weil die JS-Zeile erst beim Scrollen sichtbar wird! ;-)

UDH5 hats in JS ganz gut beschrieben!
 
Zurück
Oben Unten