InternInhaltsverzeichnisGlossarBausteineLinklisteTutorialsKommentare

Thema: Verkettete Auswahllisten (Drop-Down-Liste) dynamisch aus einer DB-Tabelle generieren Artikel anzeigen

tbaydar ✶✶✶✶✶ schrieb am Samstag, den 18 Januar 2020 #21
Hallo Werner,
folgende Meldung erhalte ich in der Konsole.

Uncaught SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at XMLHttpRequest.xhr.onreadystatechange

Glaube er kann das 2 dimensionale array nicht in mehrere objekte zerlegen.
Hast du evtl. ein beispiel, wie man mit drei dropdowns es bewerkstelligt?`
Vielen Dank im Voraus.
Werner schrieb am Sonntag, den 19 Januar 2020 #22
Hallo tbaydar,
ein fertiges Beispiel mit drei dropdowns habe ich nicht. Die Auswahllisten (dropdowns) müssten dann aktualisiert werden je nachdem was ausgewählt wurde, was bei drei Auswahllisten extrem schwierig wird.

Keine Ahnung welches Ziel du verfolgst, vielleicht wäre es besser die Auswahllisten als Filter einzusetzen:
» werner-zenk.de/mysql/auswahlliste_als_filter_in_einer_db-tabelle_einsetzen.php
Den Inhalt der Auswahllisten könnte man zb. aus der DB auslesen (mysql> SELECT DISTINCT Marke FROM auto_tabelle; ) um aktuelle Filter zu erhalten.
Michael schrieb am Dienstag, den 28 Januar 2020 #23
Hallo Werner,

das Skript ist klasse und eigentlich genau das was ich gesucht habe.
Allerdings ist js nicht meine Stärke und ich bekomme das Skript nicht wirklich in meine Seite integriert.
In meiner Seite werden die einzelnen Teile der Seite per require geladen und nur der jeweils benötigte Inhalt nachgeladen. Hier das Skript dazu. Über $_GET wird die jeweils benötigte Datei an die index.php übergeben.

<?php
#Head laden
require_once($root . "/includes/head.inc.php");

#Body laden
require_once($root . "/includes/body.inc.php");

#Navigationsmenu laden
require_once($root . "/includes/navi.inc.php");

if($akt == "bilder_anzeigen")
{
#Navigationsmenu laden
require_once($root . "/contents/menu.php");
}

#aktuellen Content laden
require_once($root . "/contents/" . $akt . ".php");

#Footer laden
require_once($root . "/includes/footer.inc.php");
?>

In dieser Konstellation steht der js-Teil von deinem Skript nicht in der gleichen Datei wie der html-Teil.
Wie kann ich das Skript jetzt doch nutzen? Im Prinzip fehlt in der html-Datei die Übergabe an js.
Aber wie kriege ich das hin ? Könntest Du mir netterweise da weiterhelfen ?
Das Formular befindet sich in der Datei menu.php

Vielen Dank vorab hierfür ! ! !
Werner schrieb am Mittwoch, den 29 Januar 2020 #24
Hallo Michael,
füge das JavaScript einfach nach dem Ende des Form-Tags </form> ein.

Deine Includes sind zu viel, bei mir reichen 3 Includes aus. Eine für den Head-Bereich, wobei nicht der ganze Head-Bereich eingebunden wird. Der zweite Include für die Navigation und der dritte für den Footer. Damit habe ich meine (über 650) Dateien eingebunden Siehe: Seiten dynamisch mit PHP erstellen
Steve ✶✶✶✶✶ schrieb am Sonntag, den 17 Mai 2020 #25
Danke für das tolle Script, funktioniert soweit auch sehr gut, allerdings gibt es ein Problem wenn ich es auf meiner Seite einbinde mit mein eigenen CSS, dort funktioniert es nicht mehr, was kann der Grund dafür sein?

LG aus Berlin
Werner schrieb am Mittwoch, den 20 Mai 2020 #26
Mit CSS kann man seine Seite so verunstalten das sogar einfache Beispiele nicht mehr funktionieren. Da muss man halt selbst auf die Suche gehen, bei einem Framework wie Bootstrap wird es dann schnell kompliziert. Am besten ist es dann man überschreibt die CSS-Anweisungen durch lokale Anweisungen.
Steve schrieb am Mittwoch, den 20 Mai 2020 #27
Das CSS Problem habe ich bereits gelöst. Ich hätte da noch eine Frage, ich hab schon im INet gesucht, allerdings nichts sinnvolles gefunden, evtl. hättest du eine Idee. Und zwar möchte ich Checkboxen in einer Form auswerten und ebenfalls per GET an PHP übergeben und nur "einen" Rückgabewert aus PHP weiter verarbeiten, in dem Fall wäre es allerdings ein Array an PHP, da ja mehrere checked sein können. Da ich von Javascript bzw. AJAX so gar keinen Plan habe, wäre es schön, wenn du einen Ansatz dazu hättest.

LG aus Berlin
Werner schrieb am Donnerstag, den 21 Mai 2020 #28
Ob jetzt das Formular per JavaScript oder über den Form-Handler versendet wird ist relativ egal, am anderen Ende sollte eine serverseitige Sprache (PHP/Perl) stehen die das gesendete Formular auswertet.

Hier ein Beispiel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<form method="get">
 <label><input type="checkbox" name="box[]" value="Eins"> Eins</label> 
 <label><input type="checkbox" name="box[]" value="Zwei"> Zwei</label> 
 <label><input type="checkbox" name="box[]" value="Drei"> Drei</label> 
 <input type="submit" name="absenden">
</form>

<?php
if (isset($_GET["absenden"])) {

  if (isset(
$_GET["box"])) {
   
$auswahl implode(", "$_GET["box"]);
   echo 
'Ausgewählt: ' $auswahl;
  }
  else {
   echo 
'Nix ausgewählt!';
  }

}
?>
Steve schrieb am Donnerstag, den 21 Mai 2020 #29
Hallo Werner,
danke für die Antwort, aber dass ist nicht das was ich Suche, es gibt kein Button "senden" bei der Checkbox, zumindest noch nicht an dieser Stelle, bisher werden bei den Checkboxen per JavaScript Berechnungen ausgeführt (bisher bei jedem Klick in chkbox ein Zahlenwert, bei weiteren Klicks dazuaddieren der entsprechenden Vorgabewerte), da ich aber einige Änderungen vornehmen muss und die Berechnungen komplexer werden, kommen diese Daten jetzt aus einer Datenbank. Ergo wenn ein oder mehrere Klicks in den Checkboxen erfolgen, sollen diese in PHP ausgewertet werden und einen Wert zurückgeben, und zwar ohne Button senden. Das Formular wird erst zum Schluss gesendet, wenn alle Daten eingetragen wurden.

LG aus Berlin
Marcel ✶✶✶✶✶ schrieb am Donnerstag, den 24 September 2020 #30
Hallo Werner,

auch von mir, besten Dank. Es funktioniert soweit alles.
Folgende Situation im meinem Fall:
Ich Habe 2 Tabellen in meiner Datenbank. 1. "mit Inhalt" 2. mit Ergebnis aus der Tabelle 1.
somit würde ich gerne das Ergebnis (ausgegebene Einträge) in die zweite Tabelle schreiben.
Entweder jede Zeile oder einfach nur ID oder Name. nach dem ich später Ergebnisse suchen kann.

ich dachte schon an value="????" in meinem Formular wo ich das Ergebnis eintragen kann, aber leider bis jetzt ohne Erfolg.
Hoffe die Erklärung ist soweit verständlich.

ist das mit deinem Beispiel möglich?

Viele Grüße Marcel