Auge: form action-Reaktion je nach Auswahl

Beitrag lesen

Hallo

zuallererst: Bitte unterlasse es, die Einrückungen, die die Forensoftware in die Postings einfügt, zu entfernen. Ich musste dein Posting dreimal lesen, um zu rekonstruieren, welche Texte von mir und welche von dir stammen.

Allerdings möchte ich dich anregen, etwas genereller über die Aufgabe nachzudenken.

OK

Konkreter geht es nur mit einem Blick auf den vorhandenen Code. Ich versuch's mal:
Hier der Auswahl-Teil, Also das E.

Den lasse ich erst einmal weg, auch wenn er selbst schon voller HTML-Fehler steckt. Nur mal zum Offensichtlichsten: Der Einsatz von <table> erfordert auch den Einsatz von <tr> sowie (optional) <th> und <td>. Für die vermutlich angestrebte Struktur bietet sich bei dir stattdessen <fieldset> und <legend> an. Details findest du im Wiki.

Und jetzt das V in php und das A in javascript (nur für Diagramm, Tabelle fehlt), eingebettet in HTML.

Schon die Verarbeitung auf dem Server per PHP würde ich von der HTML-Struktur trennen. Da du per PHP Werte in den JavaScript-Teil schreibst, beließe ich den PHP-Code in der Datei, würde ihn, der Entkoppelung wegen, aber vor dem HTML-Teil notieren. Dazu, dass ich die Sache völlig anders anginge, weiter unten.

		<?php
	        $etage       = $_POST["etage"];	// DG OG EG KG Wa
	        $zeitraum    = $_POST["zeit"];	// t(ag) d(3tage) w(oche) m(onat) j(ahr)
	        $darstellung = $_POST["darst"];	// dia(gramm) tab(elle)

Soweit ich deinen Code überblicke, brauchst du diesen Umkopierschritt nicht. Du benutzt die Eingaben (momentan bis auf $_POST["darst"]) direkt in Abfragen (dazu gleich mehr) und in einem Switch-Case und verarbeitest sie nicht durch weitere Umwandlungen. Du kannst an den entsprechenden Stellen nach der Prüfung auf das Vorhandensein und den erlaubten Wertebereich durchaus die $_POST-Werte direkt benutzen.

			$abfrage_etage = "SELECT bez, name, art, solltemp 
				FROM $tab_sens 
				WHERE (etage = '$etage')";
			$ergebnis_etage = mysqli_query($connection, $abfrage_etage);

Fange bösartige und Fehleingaben ab, indem du die aus Variablen stammenden Angaben mit mysqli_real_escape_string kontextgerecht maskierst. Das ist ein Muss!

Wenn ich sonst nichts weiter ändern wollte, sähe das folgendermaßen aus.

$abfrage_etage = "SELECT bez, name, art, solltemp
FROM $tab_sens
    WHERE (etage = '" . mysqli_real_escape_string($connection ,$etage) . "')";

Oder, da das äußere Klammerpaar in der Where-Klausel optional sein dürfte:

$abfrage_etage = "SELECT bez, name, art, solltemp
FROM $tab_sens
    WHERE etage = '" . mysqli_real_escape_string($connection ,$etage) . "'";

Soweit zu PHP.

<!-- ENDE PHP --- BEGINN JAVASCRIPT -->	

		<div class="chart-container">
			<!-- Achtung Reihenfolge => Anordnung -->
			<div id="diagramm1" class="chart_temp"></div>
			<div id="legende1" class="legende"></div>
 			<div id="diagramm2" class="chart_temp"></div>
			<div id="legende2" class="legende"></div>
			<div id="diagramm3" class="chart_digi"></div>
			<div id="legende3" class="legende"></div>
		</div>

So, da isser. Du hast diesen fest im HTML-Quelltext notierten Block, den du mit dem folgenden JavaScript-Teil ausfüllst. Du liest also die Daten, die nachher auf deiner Seite stehen sollen, per PHP aus einer Datenbank, fügst die ermittelten Werte in den JavaScript-Quelltext ein und übermittelst das Ergebnis als Kombination aus HTML und JavaScript an den Browser, damit dieser daraus eine Ausgabe generiert.

Nun bin ich kein JavaScript-Crack, aber ich finde im JavaScript-Code nichts, was ich nicht auch schon auf dem Server per PHP erledigen könnte. Auf dem Server könnte ich also sowohl die Ausgabe generieren, wie du sie jetzt per JavaScript generierst, als auch ausschließlich die benötigten HTML-Elemente erzeugen und nicht alle Elemente im HTML-Quelltext haben, auch wenn ich sie nicht brauche. Der Ehrlichkeit halber sei dazugesagt, dass du auch mit JavaScript nur eines der Elemente (div.chart-container) brauchst und das passende (#diagramm1 oder #diagramm2 oder #diagramm2 mit passender Legende) on the fly per JavaScript erzeugen kannst.

Dennoch würde ich diese Elemente schon auf dem Server erzeugen und befüllen und mit dem fertigen Dokument an den Browser ausliefern. JavaScript würde ich hier nur für weitere Komfortfunktionen benutzen.

Tschö, Auge

--
Wir hören immer wieder, dass Regierungscomputer gehackt wurden. Ich denke, man sollte die Sicherheit seiner Daten nicht Regierungen anvertrauen.
Jan Koum, Mitgründer von WhatsApp, im Heise.de-Interview