Sven Rautenberg: Mit 4 Auswahlmenüs eine Datei finden und öffnen

Beitrag lesen

Moin!

erst einmal Danke für die ausführliche Hilfe, ich war ja echt erstaunt und zugleich erfreut, dass von Dir so schnell und vor allem so kompetent beantwortet wurde.

Bitteschön. Hatte schon Befürchtungen, du würdest dich wortlos mit dem Code verziehen, wie es hier so viele tun, ohne Danke zu sagen. (In diesem Zusammenhang freundliche Grüße an alle, die sich im Forum oder per Mail zurückmelden - es hilft wirklich sehr, wenn im Forum bekannt gemacht wird, daß das Problem gelöst ist, auch für nachfolgende Besucher, die den Thread im Archiv finden. Dann haben sie die Bestätigung, daß die Lösung funktioniert, und müssen nicht rätseln, ob die Lösung an sich oder die Anpassung falsch sind. Naja, und Mails im Postfach, die einfach kurz Danke sagen (gerne auch mit Bezug zum Thread) motivieren ganz einfach. Ende des Einschubs.)

Und nun zu Deinem Lösungsansatz. Du hast zwar recht, dass dies Gefummele durch die Auswahlmenüs nicht sehr elegant ist. Da ich meine anfängliche Frage jedoch nicht aufblähen wollte, hatte ich nur dieses Beispiel mit dem Datum gebracht, um daraus für die anderen Abfrageseiten zu lernen. Denn es gibt genausogut Wochendateien, Monatsdateien und Jahresdaten (unterteilt in Temperatur verschiedener Fühler, ebeso verschiedene Luftfeuchtigkeitswerte, Luftdruck Wind usw.

Regel Nummer 1 (oder 2, jedenfalls ganz weit vorne): Immer die ganze Story erzählen. Was du da jetzt hinterherschiebst, hätte die Lösung ja schließlich beeinflussen können - und es wäre zweimal Aufwand entstanden, wo einmal gereicht hätte.

Eine Abfrage für die Jahresdaten sähe daher beispielsweise so aus:

Messwerte vom Jahr:|2000|   Sensor:|Temperatur|  Format:|gif|
                    2002            Feuchte              htm
                                  Windrichtung
                               Windgeschwindigkeit
                                      usw.

Was die Ergonomie angeht: Tagesdaten per Dropdown auszuwählen ist nervig, aber "Temperatur" in ein Eingabefeld zu tippen ist nerviger, also ist die Liste schon in Ordnung.

Was die URL angeht: Dir wird hoffentlich nicht entgangen sein, wie ich die Dateiendung am Schluß an die URL drangebastelt habe:

Javascript:
url = url + document.form1.format.options[document.form1.format.selectedIndex].value;

HTML:
<select name="format" size=1>
<option value=".htm">HTM</option>
<option value=".gif">GIF</option>
</select>

Bemerke, daß die einzelnen Optionen das Attribut value besitzen. Der Text zwischen den <option>-Tags wird im Browser angezeigt, aber der value wird zum Basteln der URL genommen.

Eine Jahreszahlliste sieht ganz ähnlich aus:
<select name="jahr" size=1>
<option value="2001">2001</option>
<option value="2002">2002</option>
</select>

Zugriff per Javascript:
url = url + document.form1.jahr.options[document.form1.jahr.selectedIndex].value;

Vergleiche die Select-Felder, und vergleiche die Zugriffsweise bei Javascript: Es ändert sich der name des Select-Feldes, und genau dieser Name steht im Zugriff auch drin (zweimal!).

Wenn du also drei Select-Felder hast, und als value immer den jeweilgen Dateinamensbestandteil angibst, dann baut sich in solch einem einfachen Fall die URL so zusammen:

url = document.form1.jahr.options[document.form1.jahr.selectedIndex].value + document.form1.daten.options[document.form1.daten.selectedIndex].value +  document.form1.format.options[document.form1.format.selectedIndex].value;

Was in Kurzform bedeutet:
url = jahr + daten + format
Also
url = '2002' + 'temp' + '.htm' = '2002temp.htm' (als Beispiel)

Fürs Datum könnte ich ja grundsätzlich Deine Version nehmen (habs lokal auch schol mal ausprobiert), aber ich habe noch immer ein Problem mit dem  input-Button, dass mir dann die entsprechende Datei geöffnet wird.

Ok, das ist ein anderes Problem. Du willst die neue Seite haben, wenn auf den Button geklickt wird. Das geht mit <input type="button" onclick="code für javascript" ...>.

Der "Code für Javascript" ist ein Funktionsaufruf, um die neue Seite zu laden. Logischerweise steht da auf der einen Seite der Code zum Datum auseinandernehmen drin, und auf dieser Seite eben der simplere Code zum URL-Zusammensetzen.

Die neue Seite lädst du in beiden Fällen mit:
location.href = url;

Wenn die Dateien sich in einem anderen Verzeichnis befinden, mußt du das Verzeichnis noch angeben. Wenn sie zum Beispiel im Unterverzeichnis "wetter" sind, wäre der URL-Aufruf so:
location.href = 'wetter/'+url;

Ich hoffe, dass war jetzt nicht zuviel,
und danke nochmal für die sehr ausführliche Antwort von Dir

Wenns zuviel wäre, hätte ich dir den Code nicht frei Haus geliefert. Ich denke, den Rest schaffst du jetzt allein. :)

- Sven Rautenberg