Robert B.: DropDown Menüs und Datenbank - Aufruf-Problem

Beitrag lesen

Moin Darßfreund,

$kla=0; $klb=0; $klc=0; $kld=0;
foreach ($daten as $inhalt) {
 if ($klausw == "klst"{
 if ($i1 == 0){
	echo "<div class=\"container\">";
	$i1++;
			}
 if ($inhalt->klasse == "$stuf"."a"){

Was ist as denn für ein Konstrukt? Wenn du sichergehen möchtest, dass $inhalt->klasse ein String ist, solltest Du mit === vergleichen. Und die merkwürdige Stringoperation zum Vergleichen geht auch eleganter, also:

if ($inhalt->klasse === "${stuf}a") {
	if ($kla == 0){
		echo "<div class=\"box\"><h2><a href=\"austragungsportal.php?klausw="; echo $stuf; echo "a#1\">Klasse "; echo $stuf; echo "a</a></h2>";
		$kla++;
				}

Wenn Du schon nicht die Kurzform zur Ausgabe nutzen möchtest,

if ($kla === 0) {
    ?><div class="box">
    <h2><a href="austragungsportal.php?klausw=<?= $stuf ?>a#1">Klasse <?= $stuf ?>a</a></h2>
    <?php
}

könntest Du zumindest die Einrückungen verbessern und echo effizienter einsetzen:

if ($kla == 0) {
    echo '<div class="box"><h2><a href="austragungsportal.php?klausw=',
        $stuf, "a#1\">Klasse ${stuf}a</a></h2>";
    $kla++;
}

Das Herumhantieren mit den Strings kannst Du überall machen, wo bisher das Ende des Variablennamens direkt auf einen angrenzenden String triff.

„Spannender“ wird es aber hier:

// Dropdown-Button
echo "<span class=\"dropdown\">";
  echo "<button onclick=\"myFunction()\" class=\"bibogta\">Dropdown-Button</button>";
  echo "<span id=\"myDropdown\" class=\"dropdown-content\">";
    echo "<a href=\"?aktion=gtaort&ID="; echo $inhalt->ID; echo "&klausw="; echo $klausw; echo "#1"; echo "\">Eintrag 1</a>";
    echo "<a href=\"?aktion=gtaort&ID="; echo $inhalt->ID; echo "&klausw="; echo $klausw; echo "#1"; echo "\">Eintrag 2</a>";
    echo "<a href=\"?aktion=gtaort&ID="; echo $inhalt->ID; echo "&klausw="; echo $klausw; echo "#1"; echo "\">Eintrag 3</a>";
    echo "<a href=\"?aktion=gtaort&ID="; echo $inhalt->ID; echo "&klausw="; echo $klausw; echo "#1"; echo "\">Eintrag 4</a>";
    echo "<a href=\"?aktion=gtaort&ID="; echo $inhalt->ID; echo "&klausw="; echo $klausw; echo "#1"; echo "\">Eintrag 5</a>";
  echo "</span>";
echo "</span>";
echo "</p>";
			}

Gibt es einen Grund, warum

  • das kein select ist
  • und alle „Links“ das gleiche Linkziel haben?
/* When the user clicks on the button, 
toggle between hiding and showing the dropdown content */
function myFunction() {
  document.getElementById("myDropdown").classList.toggle("show");
}

// Close the dropdown if the user clicks outside of it
window.onclick = function(event) {
  if (!event.target.matches('.bibogta')) {
    var dropdowns = document.getElementsByClassName("dropdown-content");
    var i;
    for (i = 0; i < dropdowns.length; i++) {
      var openDropdown = dropdowns[i];
      if (openDropdown.classList.contains('show')) {
        openDropdown.classList.remove('show');
      }
    }
  }
}

Du verwendest oben classList.toggle und baust dessen Funktionalität im Eventhandler wieder nach – warum?

Viele Grüße
Robert