Auswahl in einem DropDown-Menü steuert Anzeige in einem div-Bereich

DJTrancelight

Erfahrenes Mitglied
Hallo zusammen,

sorry für die Titelbezeichnung, aber ich wußte echt nicht, wie ich das Problem am besten umschreiben kann :)
Kenne mich mit PHP und JS so gut wie nicht aus und nutze eigentlich auch nur den include-Befehl.

Mein Problem:
Ich habe ein Dropdown-Menü angelegt und jetzt möchte ich, dass wenn dort der User einen Eintrag wählt, in einem anderen Div-Bereich ein anderes .php-File includet werden soll. Keine Ahnung, ob das überhaupt möglich ist. Ich weiß nur, wie man es schafft durch die Auswahl zu einer anderen HTML-Seite zu springen, jedoch nicht, wie man dadurch auf der selben Seite in einem anderen div den Inhalt steuern kann.
Was ich bisher habe (ein Auszug der nur die Problematik wiedergibt):

PHP:
<html>
<body>

<!--DD-Menue-->
      <div>

           <FORM name="auswahlliste">
           <SELECT class="dropdownmenue" name="auswahllinks" 

onChange="window.location=document.auswahlliste.auswahllinks.options[document.auswahlliste.auswahllinks.selected

Index].value">
                   <OPTION SELECTED value="index.htm">----MENUE-----

                   <OPTION value="home.html">
                   HOME
                   </OPTION>

                   <OPTION value="info.html">
                   INFO
                   </OPTION>

                   <OPTION value="hobby.html">
                   HOBBY
                   </OPTION>

           </SELECT>
           </FORM>

</div><!--End DD-Menue-->

<div>
Hier sollen die Infos zu dem gewählten Eintrag erscheinen und zwar per
include-Befehl - die Seite selbst, soll jedoch nicht gewechselt werden.
<?php 
	include("php/home.php"); <!--include("php/info.php"); // include("php/hobby.php");-->
?>
</diV>

</html>
</body>

Es muss irgendwie in der Form gehen:

PHP:
switch (auswahl des Dropdown-Menues){
    case "home":
             <?php
           include("php/home.php");
          ?>
    break;
    case "info":
             <?php
           include("php/info.php");
             ?>
    break;
   case "hobby":
             <?php
           include("php/hobby.php");
             ?>
    break;
}

aber leider kenne ich die Syntax nicht und weiß auch nicht, wie ich den Wert der angeklickten Auswahl verarbeiten kann.

Wäre toll, wenn mir jmd. eine Lösung hätte.

Vielen Dank und schöne Grüße
DJ Trancelight
 
Ist eh schon fast richtig. Was noch fehlt ist dass bei der Änderung der Auswahl das Formular abgeschickt wird und die Angabe der Action im Formular:

PHP:
<!--DD-Menue-->
<div>
	<FORM name="auswahlliste" action="<?= $_SERVER['PHP_SELF'] ?>" method="get">
		<SELECT class="dropdownmenue" name="auswahllinks" onChange="this.form.submit();">
		<OPTION SELECTED value="index.htm">----MENUE-----</OPTION>
		
		<OPTION value="home">
		HOME
		</OPTION>
		
		<OPTION value="info">
		INFO
		</OPTION>
		
		<OPTION value="hobby">
		HOBBY
		</OPTION>
		</SELECT>
	</FORM>
</div>
<!--End DD-Menue-->

<div>
<?php
switch ($_GET['auswahlliste'])
{
	case "info":
		include("php/info.php");
	break;
	case "hobby":
		include("php/hobby.php");
	break;
	default:
		include("php/home.php");
	break;
}
?>
</div>

Änderungen:
Beim Form-Tag hab ich eine Ausgabe hinzugefügt dass automatisch der Name der aktuellen Datei ausgegeben wird.
Ebenfalls beim Form-Tag hab ich noch method="get" hinzugefügt. Das heißt dass beim Absenden des Formulars die FormularDaten in die URL geschrieben wird. Beim DropDown der Wert der aktuellen Auswahl also seite.php?auswahlliste=AUSWAHL.
Der PHP Tag muss vor dem Switch beginnen und danach aufhören.
Im Switch wird die Variable $_GET['auswahlliste'] verwendet. D.h. er holt sich der Wert aus der URL. (bei seite.php?auswahlliste=home würde in dieser Variable home drinnen stehen)

Gruß Daniel
 
@danielku

vielen Dank für deine schnelle Antwort!
Ich werde mir den Code heute Nacht zu Gemüte führen, es ausprobieren und mich wieder melden ob es geklappt hat.

Jedenfalls schon einmal vielen Dank für deine Hilfe!

Schöne Grüße
DJ Trancelight
 
@danielku

herzlichen Dank! Habs ausprobiert, jedoch hat es nicht auf Anhieb geklappt, aber habe aufgrund deiner tollen Beschreibung nun den Fehler gefunden.
Im switch muss bei mir auswahllinks stehen. Habs erkannt, als in der Adresszeile ...auswahllins=home angezeigt wurde. Da wußte ich dann, was zu tun ist:)

Vielen lieben Dank!

Kannst du mir noch ganz kurz erklären was hier geschieht?
action="<?= $_SERVER['PHP_SELF'] ?>"

Rein wg. dem Lerneffekt - wie müßte ich das aufbauen, falls ich ohne Dropdown-Menü arbeiten möchte, also mit ganz normalen Links?

Also:
PHP:
<a href="home.php">Home</a>
<a href="info.php">About Me</a>
<a href="hobby.php">Meine Hobbys</a>

Ich müßte ja da auch für die Links eine Variable anlegen, die 3 verschiedene Werte annehmen kann, die wiederum in der Switch-Abfrage übr die get-Methohde abgefragt werden.

Das wär dann auch die letzte Frage zu dem Thema und wenn es zu aufwändig ist, das zu erklären, habe ich natürlich dafür Verständnis. Würde mich trotzdem freuen, wenn jmd. eine Antwort dafür hat.
Wenn ich das nämlich an 2 Beispielene (DropDown-Menü und Links) einmal gezeigt bekommen habe, dann kann ich es besser verstehen und nachvollziehen.
Beispiel 1 klappt ja schon wunderbar :)


@Kahmoon.
Danke für den Hinfweis. Ich habe es ausprobiert, aber dann erkennt er es nicht mehr als php-Anweisung. Das muss glaube ich schon stehen bleiben, weil der Rest HTML ist und nur das DropDown-Menü mit PHP funktionieren soll.

Danke für eure tolle Hilfe!
Viele Grüße
DJ Trancelight
 
Zuletzt bearbeitet:
@ DJTrancelight
Er meinte deinen Code und da muss das <?php ?> aus folgendem Code raus, da es sonst zu Problemen kommt. Du hast da ein ziemliches Kuddl-Muddl mit den PHP-Tags gemacht und zwar ist der Code wie schon erwähnt ja dann php und du startest trotzdem nochmal mit einem php Tag ^^

Ich beziehe mich nun auf diesen Code hier!
Und der ist falsch ^^

PHP:
<?php // wir starten also unsere PHP-Programme mit einem PHP-TAG und starten wir PHP
switch (auswahl des Dropdown-Menues){
case "home":
<?php // wir können aus diesem Grund nich nochmal PHP starten ^^ es ist ja schon PHP ...
include("php/home.php");
?> // und wenn wir hier PHP "schließen"
// ist alles darunter nicht mehr funktionsfähig ...
break;
} 
?>



Da du dich ja mit HTML hoffentlich auskennst, müsstest du wissen wofür <form action=""> ist -.- es zeigt an an welche Seite das Formular gesendet wird.
PHP:
<?= $_SERVER['PHP_SELF'] ?>
In verbindung mit dem HTML Code sagt eigentlich nur, dass das Formular wieder an die selbe Seite gesendet wird. Ist es also die Seite index.php auf der das Formular ist, so wird es an die index.php gesendet == > PHP_SELF ==> PHP_SELBST ==> eigene Seite



ich gehe jetzt mal aus, dass die Seite index.php ist und dann müssten die Links dazu wie folgt aussehen.
PHP:
<a href="index.php?auswahlliste=home">Home</a>
<a href="index.php?auswahlliste=info">Information</a>
<a href="index.php?auswahlliste=hobby">Meine Hobbys</a>
 
Zuletzt bearbeitet:
Ich denke -GS-Master hat eh schon alles besagte geklärt.
Ich kann dir mal zu Herzen legen in die PHP-Tutorial Sektion zu blicken da gibts auch schon Tutorials für genau diese Art von Navigation
 
Die Tutorials-Ecke werde ich auf jeden Fall mal ansteuern.

Vielen Dank für die Erklärungen und eure Hilfe.

Schöne Grüße
DJ Trancelight
 
Zurück