GET Parameter || Aus zwei mach eins

maga147

Erfahrenes Mitglied
(Weis jetzt nicht genau, ob dass im Richtigen Forum hier ist, wenn nicht, bitte verschieben! danke)

Hi,

ich hab folgendes Problem, und zwar möchte ich zwei DropDown Auswahllisten in einen GET Parameter zusammenfassen.

HTML:
<form method="get" action="?">
<select name="monat">
 <option value="01">&nbsp;&nbsp;Januar</option>
 <option value="02">&nbsp;&nbsp;Februar</option>
 <option value="03">&nbsp;&nbsp;März</option>
 <option value="04">&nbsp;&nbsp;April</option>

 <option value="05">&nbsp;&nbsp;Mai</option>
 <option value="06">&nbsp;&nbsp;Juni</option>
 <option value="07">&nbsp;&nbsp;Juli</option>
 <option value="08" selected="selected">&nbsp;&nbsp;August</option>
 <option value="09">&nbsp;&nbsp;September</option>
 <option value="10">&nbsp;&nbsp;Oktober</option>

 <option value="11">&nbsp;&nbsp;November</option>
 <option value="12">&nbsp;&nbsp;Dezember</option>
</select> 
<select name="Jahr">
<option value="2006" selected="selected">&nbsp;&nbsp;2006</option>
<option value="2005">&nbsp;&nbsp;2005</option>
<option value="2004">&nbsp;&nbsp;2004</option>
<option value="2003">&nbsp;&nbsp;2003</option>
</select><br>
<div align="center"><input type="submit" value="go"></div>
</form>

Wie kann ich diese zwei Auswahllisten so umgestalten, dass mir am Ende an der URL ein ?date=2006-08 etc. angezeigt wird?

Danke :)
 
Hallo,


statt dem submit Button nimmst du einfach einen einfachen Button.
Dann definierst du das onClick Ereignis mit der Formatierung der Ziel URI.
Einfach die aktuellen Werte zur Formatierung der URI nehmen.


Tobee
 
Erstmal danke für deine Antwort, aber könntest du das ganze mir mal Bitte an einem einfachen Beispiel erläutern :) Ich komm mit deiner Aussage irgendwie so selbst nicht weiter... :rolleyes:

Danke :)
 
Also ich hab mal rumgefummelt und es ist gar nicht so trivial, wie ich zunächst dachte. Aus tobees Post, der auf den ersten Blick einleuchtend wirkte, wurde ich nicht so recht schlau, was er/sie im Sinn hatte.

HTML:
 <form id="myForm" method="get" action=""> <select name="monat">  
<!--id vergeben für bequemeren Zugriff auf das Formular mit JavaScript-->
<option value="01">&nbsp;&nbsp;Januar</option>
<option value="02">&nbsp;&nbsp;Februar</option>
<option value="03">&nbsp;&nbsp;März</option>
<option value="04">&nbsp;&nbsp;April</option><option 
etc.
</select> 
<select name="Jahr">
<option value="2006" selected="selected">&nbsp;&nbsp;2006</option> 
<option value="2005">&nbsp;&nbsp;2005</option>
<option value="2004">&nbsp;&nbsp;2004</option>
<option value="2003">&nbsp;&nbsp;2003</option> 
</select>
<div align="center">
<input type="button" value="go" onclick="submitForm(getElementById('myForm'));">
<!--submit-Button gegen normalen Click-Button getauscht um normales Formular-verhalten zu unterbinden-->
</div>
</form>
Code:
<script>
function submitForm(form) {
  month = form.monat.options[form.monat.selectedIndex].value; //gewählten Wert für Monat eruieren
  year = form.Jahr.options[form.Jahr.selectedIndex].value; //gewählten Wert für Jahr eruieren
  params = '?date=' + year + '-' + month; //parameterstring basteln
  window.location = window.location.hostname + window.location.pathname + params; //URL des Fensters ändern auf die ursprüngliche Datei mit den angehängten Parametern im gewünschten Format
}
</script>


Das Ding tut jetzt das, was du von ihm willst, empfehlenswert finde ich diese Vorgehensweise nicht, weil dann die übergabe korrekter Parameter an PHP davon abhängt, ob der User JavaScript eingeschaltet hat oder nicht. Eher schlechte Idee. Zumindest tut das Formular ohne JS gar nichts. Schaden wird also keiner angerichtet, aber Funktionalität ist auch keine da.

Alternativen:
1. PHP-Code der empfangenden Datei so anpassen, dass sie auch unfrisierte GET-Werte ordentlich verarbeiten kann.
2. Wenn das nicht möglich ist, musst du ein einzelnes Auswahlfeld basteln wo alle möglichen Werte eingetragen sind

HTML:
<select name="date">
<option value="2006-08">August 2006</option>
<option value="2006-07">Juli 2006</option>
<option value="2006-06">Juni 2006</option>
.....
</select>
 
Zuletzt bearbeitet:
Warum muss das übergebene Datum diese Form haben? Du kannst es doch auch einfach in deinem Empfängerscript zu einer Variable machen.
PHP:
$date = (isset($_GET['monat']) && isset($_GET['Jahr'])?$_GET['Jahr'].'-'.$_GET['monat']:0); 
# du könntest statt der 0 am Ende auch date('Y-m') schreiben. Dann erhälst du das aktuelle Jahr + Monat
Vorteile:
- Du brauchst kein JS
- Du hast keinen ewig langen HTML Code, wenn du das DropDown für die verschiedenen Kombinationen per PHP generieren lässt.
 
Zuletzt bearbeitet:
erstmal herzlichsten Dank an SaschaT, der sich soviel mühe gegeben hat!
Auch natürlich ein Dank an fanste, für die mehr oder weniger Lösung die ich dann verwendet habe....

Habe jetzt mein Script so umgeschrieben, dass es mit der (etwas hässlichen) schreibweise "monat=08&jahr=2006" klar kommt!

Danke an euch alle!
 
Zurück