[HTML/PHP] Formular: URL mit get erweitern

asseskiller

Lt. Junior Grade
Registriert
Sep. 2005
Beiträge
447
Hey leute,


ich hab auf einer seite 2 formulare. Die beide so beginnen
1. <form action="" method="get" name="kat1">
<select name="k1" onchange='javascript:document.kat1.submit()' id="aa">
...
2. <form action="" method="get" name="zug1">
<select name="z1" onchange='javascript:document.zug1.submit()' id="aa">

wenn ich nun das 1 abschicke, dann steht in der url adresse/datei.php?z1=irgendeinwert
wenn ich dann das nächste (aus dem ersten resultierende) Formular abschicke verschwindet das z1=irgendeinwert wieder und es erscheint k1=irgenteinwert dafür. Ich hätte es aber gerne so, das beides hintereinander steht quasi so

adresse/datei.php?z1=irgendeinwert&k1=irgendeinandererwert

Geht das irgentwie

Danke im Vorraus
 
Es wäre auch okay wenn mir jemand eine alternatve nennen könnte.
Brauche nämlich dringend hilfe
 
Wenn du beide Formulare zu einem zusammenfasst (also nur noch ein gemeinsames <form>-Tag), sollte das gehen.
 
hätte jetzt gesagt, teile es auf in 2 formulare und mach es so

PHP:
if (!($k1 = $_GET['k1'])) {
		$var = 'error';
	}
HTML:
<form method="get" name="" action="foto_frame.php?k1='.$k1.'">
 
Naja das Problem ist,
das der inhalt des 2. selects sich nach der auswahl des ersten selects richtet.
Versteht ihr was ich meine?

Die version mit

PHP:
action="<? echo $_SERVER['PHP_SELF']."?k1='".$_GET['k1']."'&";?>
hab ich probiert aber er löscht alles was ab dem ? kommt und es passiert das altbekannte.

Ist das normal?
 
Ah, jetzt hab ich verstanden, was du vorhast ^^ Der Vorschlag, beide Formulare zu einem zu vereinen, sollte aber trotzdem klappen, müsstest eben nur sicherstellen, dass das erste Auswahlfeld nach dem Neuladen der Seite wieder auf dem ausgewählten Wert steht (also PHP beim richtigen <option>-Tag selected="selected" reinschreiben lassen).

Alternativ könntest du auch deine zwei Formulare beibehalten und ins zweite ein verstecktes Feld (<input type="hidden">) einbauen, das den Wert der Auswahl des ersten Felds nach dem Abschicken speichert. Das sollte aber eigentlich auch dein Code da bewerkstelligen (nur die Hochkommas um den Variablenwert sind zu viel).
 
Du solltest den beiden Felder nicht die selbe ID geben.
Verfehlt ja auch irgendwie den Sinn einer ID ;)

Grüße

tewes
 
Also ich würde das wie folgt lösen.
PHP:
$action = $_SERVER['PHP_SELF'];

if( isset ( $_GET['z1'] ) ) {
    $action .= '?z1=' . $_GET['k1']
}

echo '<form action="'.$action.'" method="get" name="kat1">'."\n";
echo '<select name="k1" onchange="javascript:document.kat1.submit()">'."\n";
//...

$action = $_SERVER['PHP_SELF'];

if( isset ( $_GET['k1'] ) ) {
    $action .= '?k1=' . $_GET['k1']
}

//alternativ (ich mags nicht ;) ): echo '<form action="'. $_SERVER['PHP_SELF'] . ( (isset ( $_GET['k1']) ? '?k1=' . $_GET['k1'] : '' ).'" method="get" name="zug1">'."\n";
echo '<form action="'.$action.'" method="get" name="zug1">'."\n";
echo '<select name="z1" onchange="javascript:document.zug1.submit()">'."\n";
//...

PS: (wie tewes schon sagte) Eine ID mehrmals in einem Dokument zu vergeben ist nicht erlaubt! Es verstößt gegen den xHTML-Standard (auch gegen HTML?)...
Merke: id einmalig, class (und name?) nicht.

PPS: Gewöhne dir an immer die gleichen Hochkommata zu benutzen. Ich benutze immer nur "foo" für HTML-Attribute und 'bar' für PHP-Literale (es sei denn es ist wirklich von Vorteil "asd" zu benutzen).
 
Zuletzt bearbeitet:
Zurück
Oben