Mehrere Buttons in einem Formularfeld verwenden

Status
Nicht offen für weitere Antworten.

qsrs

Erfahrenes Mitglied
Hallo,

habe ein Formularfeld mit drei Buttons zur Navigation. Button 1 navigiert zu Seite 1, Button zwei zu Seite zwei etc. Ich komme nur mit Javascript zum gewünschten Ergebnis. Da ich das Ganze in einem PHP Script verwende, kann ich kein Javascript verwenden, da ich sonst bestimmte Variablen im URL mitgeben müsste, was ich nicht möchte.

Frage also, wie kann ich mehrere Buttons in einem Formular verwenden, jeder Button öffnet eine von mir definierte Seite - Formularfunktion, kein Javascript.

Danke für Antworten.
 
Das koennte Dir weiterhelfen. Hab's jetzt mal fuer 2 Buttons gebaut, ist aber beliebig erweiterbar. Ist ja recht einfach gestrickt.

Code:
<html>
<head><title>Test</title></head>
<body>
<?
if ($site1)
	{
		header("location: 1.html");
	}
if ($site2)
	{
		header("location: 2.html");
	}
?>
<form method="post" action="test.php">
<input type="submit" name="site1" value="Site1">
<input type="submit" name="site2" value="Site2">
</form>
</body>
</html>


Nachtrag: Falls das nicht sowieso schon klar sein sollte: Das da oben ist test.php
Bevor noch Fragen aufkommen. :)
 
Zuletzt bearbeitet:
Danke für die Antwort. Das funktioniert soweit.
Ich würde das Ganze aber gerne noch im HTML-Teil definieren und nicht im PHP-Script. Wie würde das dann aussehen?
 
Aehm, wie jetzt?
Moechtest Du ein HTML-File haben wo das Formular drin ist und dann ein PHP-Skript was dann aufgerufen wird um die Verzweigung zu daengeln?
Oder wie?
 
PHP habe ich nur erwähnt, damit man besser versteht warum ich Buttons und keine Links zur Navigation verwende. Einfach PHP mal vergessen.

Ich brauche die Funtkion, die Du freundlicherweise gepostet hast, in einem HTML-Formular. Die Buttons rufen dann die Seiten auf. Ob PHP, HTML ist in diesem Fall ja egal.

Also kurze Zusammenfassung:
Ich habe 1 Formular, in welchem drei Buttons sind, jeder soll eine andere Seite aufrufen, allerdings nicht über Javascript sondern übder die Formularfunktion.

Danke schon mal für deine Mühe.
 
Keine Ahnung ob und wie das mit reinem HTML geht.
Mit HTML kann man ja keine Abfragen ala if machen.

Nachtrag: Spricht was gegen den Einsatz von PHP? Oder willst Du's halt unbedingt nur in HTML machen?
 
Ich würde es schon gerne in HTML machen, da es einfach sauberer und übersichtlicher ist. Das Dokument ist zwar eine HTML/PHP Kombination, theoretisch könnte ich die Variante nehmen, die Du gepostet hast aber würde aus genannten Gründen schon gerne darauf verzichten.

Geht das generell nicht? Kann man in einem Formular nicht mehrere Buttons verwenden, ohne die Funktionen mit Javascript aufzurufen?
 
Ich glaube nicht, dass Du mit reinem HTML checken kannst welcher der Buttons gedrueckt wuerde.
Du musst ja irgendwie abfragen welche der beiden Variablen gesetzt ist. Ob das dann mit PHP (wie von mir gepostet) oder JavaScript geschieht ist dann egal. Aber meiner Meinung nach ist das nur mit HTML nicht machbar.

Nachtrag: Uebrigens, falls Du (wie ich annehme) nicht um JavaScript oder PHP herumkommst wuerde ich PHP waehlen, da es serverseitig ablaeuft, dementsprechen nicht durch irgendwelche Browsereinstellungen deaktiviert werden kann und nicht im Sourcecode der Website zu sehen ist.
 
Zuletzt bearbeitet:
Danke für deine Antwort. Was ich nicht ganz verstehe, über PHP übergebe ich im Prinzip dem Formular ja auch nur einen Wert. Aber das ich das nur mit PHP oder Javascript schaffe?
Natürlich ziehe ich, falls es gar nicht anders geht, PHP Javascript vor.

Mal eine Frage zu meiner Vorgehensweise überhaupt. Ich verwende das Ganze für einen Setupassistenten. Ein Formular, 3 Buttons (Zurück, Weiter, Abbrechen). Button Zurück ist keine javascipt:back() Funktion sondern ein Aufruf zu der vorherigen Datei, da ich Werte (Variableninhalte) "schleife" und diese somit verloren gehen würden. Button Weiter navigiert zur nächsten Seite, Abbrechen navigiert zur index-Datei.

Ich denke doch, dass ich hierfür die richtige Überlegung hatte. Oder gibt es grundsätzlich eine bessere Variante?
 
Ein Formular kannst Du immer nur auf eine Datei verweisen lassen.
Du könntest aber immer die selbe Seite als Empfänger nehmen und da drin entsprechend des gedrückten Buttons die spezielle Seite einbinden.
Beispiel:
assistent.php
PHP:
<?php
//Anzahl der Seiten des Assistenten definieren:
$assistentPageCount=10;
if (empty($_POST['lastAssistentPage']) 
  || (!is_integer($_POST['lastAssistentPage']))) {
  $lastAssistentPage=1;
} else {
  $lastAssistentPage=$_POST['lastAssistentPage'];
}
if (isset($_POST['action'])) {
  if ($_POST['action']=="abort") {
    include "./assistentAborted.php";
    die();
  }
  if ($_POST['action']=="back") {
    $thisAssistentPage=$lastAssistentPage - 1;
  }
  if ($_POST['action']=="next" || $_POST['action']=="finish" ) {
    $thisAssistentPage=$lastAssistentPage + 1;
  }
}
if ($thisAssistentPage==$assistentPageCount+ 1) {
  include "./assistentAuswertung.php";
  die();
}
if ($thisAssistentPage<1) {
  $thisAssistentPage=1;
}
if ($thisAssistentPage>$assistentPageCount) {
  $thisAssistentPage=$assistentPageCount;
}
?>
<form action="assistent.php" method="post">
<div>
<?php
//bisherige Eingaben weitergeben:
foreach ($_POST as $name => $value) {
  echo "<input type=\"hidden\" name=\""
    .$name."\" value=\""
    .$value."\">";
}

if (file_exists("./assistantPage".$thisAssistantPage.".php") {
  include "./assistantPage".$thisAssistantPage.".php";
  
}
//in den jeweiligen Einzelseiten müssen die entsprechenden 
//Auswahlfelder der Assistentenseite ausgegeben werden.
?>
<input type="hidden" name="lastAssistentPage" value="<?php 
  echo $thisAssistentPage;?>">
<input type="submit" name="action" value="abort">
<input type="submit" name="action" value="back">
<input type="submit" name="action" value="<?php echo (($thisAssistantPage==$assistentPageCount)?"finish":"next"); ?>">
</div>
</form>
Dazu legst Du dir die Dateien assitentPage1.php bis (im Beispiel) assistenPage10.php an und gibst in diesen Jeweils die input's und slelect's aus, die zu der jeweiligen Seite gehören.
Des Weiteren brauchst Du die Datei, assistentAborted.php in der Du eine Meldung ausgibst, dass der User abgebrochen hat und eine Datei assistentAuswertung.php, in der Du die Daten verarbeitest.
Du musst darauf achten, dass über alle Seiten die Namen Deiner Felder eindeutig sind.

Gruß hpvw
 
Status
Nicht offen für weitere Antworten.
Zurück