beckslevel91
Goto Top

MySQL, PHP - Dynamisches Dropdown

Hallo,

Ich habe folgendes Problem:

Ich habe eine PHP-Seite gemacht, die Klientendaten aus einer MySQL Datenbank ausliest und darstellt. Diese kann man mit einem Filter nach dem Kriterium "Abteilung" filtern. Nun möchte ich,
dass, sobald ich eine Abteilung gefiltert habe, ein 2. Dropdownmenü erscheint, das mich einen Klienten der gewählten Abteilung auswählen lässt, nach dem wiederum gefiltert wird. (Für einen Klienten können mehrere Datensätze vorhanden sein, deshalb).

Das Problem ist, das ich keine Ahnung habe, wie ich das realisieren soll. Mit Drop-Down's und Filtern kenne ich mich aus, aber ich bräuchte hier eine Art Ansatz, wie das ganze funktionieren kann..

Vielen Dank im Vorraus,

J.R.

PS: MySQL-Version: 5.0.45

Content-ID: 126111

Url: https://administrator.de/contentid/126111

Ausgedruckt am: 22.11.2024 um 01:11 Uhr

BCCray
BCCray 30.09.2009 um 11:57:00 Uhr
Goto Top
Das müsstest du mittels AJAX lösen, denk ich mal....

Hier eine englisch-sprachige Variante von deinem Vorhaben (ich denke das ein Abändern auf deine Bedürfnisse möglich ist):
Ajax Dropdown
beckslevel91
beckslevel91 30.09.2009 um 13:21:23 Uhr
Goto Top
Okay, vielen Dank! Das ist genau das was ich brauche..

allerdings funktioniert das nicht so richtig...

trotzdem danke =)

J.R.
TWAWLW
TWAWLW 30.09.2009 um 15:14:33 Uhr
Goto Top
Hi,

mach doch ein Formular mit Deiner Liste und dann:

<select name="abc" onchange=submit()>

und frage die Variable auf Existenz bzw. Inhalt in Deinem Programm ab.

Mach ich dauernd so face-smile

Viel Erfolg,
TWAWLW
beckslevel91
beckslevel91 01.10.2009 um 08:33:16 Uhr
Goto Top
Hey, also ich habs jetzt wie folgt gelöst/versucht:

<form method="POST">  
	<?php
		include 'dbconnect.php';  
		$i = 1;
		$filterabfrage = "SELECT * FROM tablename WHERE abteilung = '".$filter."'"." order by name";  
	
		$result = $db->query($filterabfrage);
			if (!$result)
		{
			die('Der Query konnte nicht ausgef&uuml;hrt werden: '.$db->error);  
		}
		if ($result->num_rows)
		{
		echo '<select size="1" name="namefilter" onchange=submit()>';  
		echo '<option value="0">Alle</option>';  
			while ($row = $result->fetch_assoc())
			{
		echo '<option value='.$i.'>'.($row['name']).'</option>';  
			$i=$i+1;
			}
		}

		?>
		</select>
		<br><br>
	<br>
	</form>
<?php
	if(isset($_POST["namefilter"]))  
	{
		//??????????????
	}
?>

Anmerkungen:
- in "dbconnect.php" verbinde ich mich mit der Datenbank
- die $filter-Variable bekomme ich aus einem anderen Formular (dieses Formular wird selbst nur included, die $filter Variable wird also vorher schon übergeben)
- Es funktioniert soweit, dass wenn ich den 1. Filter auswähle (Abteilung) dass er mir dann die richtigen Namen ausspuckt (eben von d. jeweiligen Abteilung)

Hier der Inhalt meiner "getdbcontent.php" die nach dem oberen Formular ausgeführt wird und die Inhalte laden soll:

if($filter == "" && $namefilter == "")  
{
		$abfrage = "SELECT sonstiges, id, abteilung, name, betrieb, art, DATE_FORMAT(von, '%d.%m.%Y') AS von, DATE_FORMAT(bis, '%d.%m.%Y') AS bis FROM praktikum  
                                      ORDER BY abteilung, name";  
		$stand = "SELECT MAX(stand) FROM praktikum";  
	} else if($namefilter == ""){  
		$abfrage = "SELECT sonstiges, id, abteilung, name, betrieb, art, DATE_FORMAT(von, '%d.%m.%Y') AS von, DATE_FORMAT(bis, '%d.%m.%Y') AS bis FROM praktikum  
                                      WHERE abteilung = '".$filter."'"." ORDER BY abteilung, name";  
		$stand = "SELECT MAX(stand) FROM praktikum";  
	} else if($namefilter != ""){  
		$abfrage = "SELECT sonstiges, id, abteilung, name, betrieb, art, DATE_FORMAT(von, '%d.%m.%Y') AS von, DATE_FORMAT(bis, '%d.%m.%Y') AS bis FROM praktikum  
                                      WHERE  name = '".$namefilter."'"." ORDER BY betrieb";  
		$stand = "SELECT MAX(stand) FROM praktikum";  
	}
.....

Anmerkungen:
- nach diesen SQL-Befehlen werden die Datensätze in eine Tabelle geschrieben. -> Das funktioniert auch für den gesamten Inhalt einer Abteilung
kann mir i-jemand helfen, bitte?

Nun brauche ich eine Art Schleife/Abfrage (dort wo die ?? auskommentiert sind, der mir, anhand der ausgewählten Value im Dropdown einen namen (Datensatz-teil) oder den "angewählten Text im Dropdown) in die Variable "$namefilter" übergibt. Wie funktioniert das. Versteht überhaupt jemand was ich meine? Weiß nicht genau wie ich das noch erklären könnte, sry..

Gruß,

J.R.
beckslevel91
beckslevel91 01.10.2009 um 09:42:52 Uhr
Goto Top
Habs jetzt wie folgt gelöst (zumindest im Ansatz):

oben vor den SQL-Befehlen in "getdbcontent.php" habe ich folgendes:

if(isset($_POST["namefilter"]))  
{
$namefilter = $_POST["namefilter"];  
} else {
$namefilter = "";  
}

Gruß,

J.R.