PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Query nach Filter und danach Aufruf


dvhimm
12.06.2006, 21:34:58
Hallo, guten Abend!

Neuer Versuch. Gestern stand ich noch vor dem Abgrund, heute bin ich einen Schritt weiter.

Ich möchte auf Grund eines gewählten Filters die Abfrage meiner Datenbank ergänzen und die Seite sich selbst neu aufrufen lassen. So wenig Java wie möglich (sonst wär ich ja nicht hier im PHP-Forum ;) ).


<?php
session_start(); #hier Sessionauthorisierung mitsenden
# Berechtigungsmapping abholen/get Permissionmapping from database (rwx)
#include("../berechtigungskopf.inc.php");
# ---------------------------------------------------- #
# Ab hier Daten gemäß der Aufgabe abfragen/get server,user,password
include("../dbdata.inc.php");
@mysql_connect($server, $username, $password);
# Datenbankverbindung aufnehmen/get connection
@mysql_select_db($database) or die("Kann nicht mit Berechtigungsdatenbank verknüpfen");
# Abfrage absetzen ----------------------------------- #
if (!empty($_SESSION['subquery'])) {
if ($_SESSION['subquery']=='FilterFamilienname') {
$_SESSION['subquery'] =' ORDER BY Name'; } # standard
$query="SELECT * FROM vw_Facharzt".$_SESSION['subquery']; }
else {
$query="SELECT * FROM vw_Facharzt"; }
# ---------------------------------------------------- #
# and so on
?>
<html>
<head>
<title>Dynamische Auswahl Test</title>
</head>
<body>
<script language="javascript" type="text/javascript">
function hprocess(Filter)
{
subquery="";
if (Filter=="FN") {
subquery=" ORDER BY Name";
}
if (Filter=="FP") {
subquery=" ORDER BY PLZ";
}
if (Filter=="FM") {
subquery="FM"
}
if (Filter=="FA") {
subquery="FA"
}

alert(subquery);
//und so weiter
//location.reload();
}
</script>
<?php
function process($Filter) {
$_SESSION['subquery']='';
if ($Filter=="FN") {
$_SESSION['subquery']=' ORDER BY Name';
}
if ($Filter=="FP") {
$_SESSION['subquery']=' ORDER BY PLZ';
}
if ($Filter=="FR") {
$_SESSION['subquery']=' ORDER BY Fachrichtung';
}
if ($Filter=="FA") {
$_SESSION['subquery']=' WHERE MitgliederAusland=1';
}
return $_SESSION['subquery'];
}
?>
<?php
$filterarten = array(
"FL"=>"",
"FN"=>"Familienname",
"FP"=>"Postleitzahl",
"FR"=>"Fachrichtung",
"FM"=>"Mitglieder",
"FI"=>"Mitglieder Inland",
"FA"=>"Mitglieder Ausland",
"FE"=>"Ehrenmitglieder",
"FD"=>"Diplomierte"
);
?>
<p>
<form action=<?php echo $_SERVER['PHP_SELF']; ?> method="post" >
<select name="Filter" size="1" onChange="process(hprocess(this.form.Filter.options[this.form.Filter.selectedIndex].value))">
<?php
foreach ($filterarten as $key=>$element) {
echo "<option value=$key>$element</option>";
}
?>
</select>
</p>
</form>


<?php
# nice try...
if ($Filter) {
echo "Es ist folgender Filter gewählt:<br>";
foreach($Filter as $element) {
echo "$element<br>";
}
}
echo "$Filter<br>";
echo "$element<br>";
echo $_SESSION['subquery'];
echo "<a href='option_select.php?filter='".$subquery.">filtertest</a>";
?>

</body>
</html>




Ich hab mir zwei Ansätze vorgenommen, entweder Java oder PHP. Am Ende krieg ich ein bisserl was, wenn ich beides verwende, aber am dicken Ende (Neuaufruf) tut sich gar nichts. Kommentare vorhanden, Frust vorhanden, bitte, bitte.

Danke und noch einen schönen Abend.
Henry

Heinrich
12.06.2006, 21:54:47
Hi,

was sollte sich da am Ende auch tun - außer dass ein Link angezeigt wird. Vielleicht meinst du sowas:
header("Location: http://www.irgendeineseite.de/index.php");
Gruß
Heinrich

dvhimm
13.06.2006, 08:29:28
Hi,

was sollte sich da am Ende auch tun - außer dass ein Link angezeigt wird. Vielleicht meinst du sowas:
header("Location: http://www.irgendeineseite.de/index.php");
Gruß
Heinrich

Nun, in diesem Codefragment kann sich zugegebenermaßen nicht viel tun, das ist schon richtig. Ich habe hier den Datenbankanzeigeteil ausgespart, der ist ohnehin leicht.

Ich habe zwei Wege probiert, mir den Filter oder die Anzeigereihenfolge über ein Dropdown "auszurechnen". Beim Javadingsbums krieg ich immerhin die Anzeige, dass der Filter grundsätzlich mal gesetzt ist (alert...). - Ist das beim PHP-Abschnitt auch so?

Und der "Selbstaufruf" mit dem header-Part: ich kann mir vorstellen, dass ich den subquery-Teil in der Art

header("Location: http://www.irgendeineseite.de/index.php?subquery='ORDER BY Name'");

zusammenstoppeln könnte?

Danke für Deine prompte Antwort, ich komme (leider?) aus der Windows-Welt, das hier muß ich erst lernen. Und man lernt nie aus.

----------------------------------------------------------------
Ich hab's gleich, sagte der Programmierer vor 4 Monaten