Zum Inhalt springen

Dropdown Formular Anfrage an mehrere Tabellen?

Erstellt am 9. Mai 2008 · 5 Antworten · letzte Antwort am 9. Mai 2008

Tags: Datenbank, Frage

ÁndreMansfeld ·

Hallo Freunde,
hänge mal wieder an einem kleinen Problem.
Ich habe ein Formular in meiner EXTENSION. Dort kann man per Dropdown eine Auswahl treffen und nach dem Absenden wird dann der entsprechende Eintrag aus der Tabelle gelistet.
Mir ist eine Vereinfachung eingefallen und ich würde die jetzt gerne umsetzen. Es gibt mehrere Tabellen mit einfachen "JA - NEIN" Inhalten. Wenn ich danach suchen möchte, müßte ich ja eigentlich für jede Tabelle im FE auch ein Formular bereitstellen.
Der USER sucht aber eigentlich nur eine Sache (nie mehrere) Also würde ich gerne mein Formular so einrichten, dass alle Abfragen im Dropdown auftauchen, aber die Abfrage bezieht sich auf mehrere Tabellen. Ungefähr so!!! 😃 Funktioniert aber nicht!!!

<select name="tx_extention_pi1[angaben1,angaben2,angaben3]" id="angaben1,angaben2,angaben3">
                <option value="0" selected="">Alle</option>
                <option value="1">Kinder 0 - 3 Jahre</option>
                <option value="2">Kinder 3 - 6 Jahre</option>
                <option value="3">Schulkinder 6 - 10 Jahre</option>
                <option value="4">Teenies 11 - 13 Jahre</option>
                <option value="5">Jugendliche 14 - 17 Jahre</option>
                <option value="6">Jugendliche Erwachsene 18 - 27 Jahre</option>
                </select>

Die Werte werden in die DB schon mit verschiedenen Values geschrieben:
0 für NEIN
und
1 für JA, 2 für JA, 3 für JA u.s.w.

Alles funktioniert prächtig, solange ich in der

<select name="tx_extention_pi1[angaben1]" id="angaben1">

die Tabelle [angaben1] allein drin habe. Oder eben auch angaben2, angaben3, u.s.w.
Kann ich denn dort überhaupt mehrere Tabellen ansprechen??? So wie im ersten CODE!!!(nur eben richtig ) o.O

Die Funktion sollte letztlich so sein:
Der USER wählt z.B. Schulkinder 6 - 10 Jahre (also den WERT 3) und als Suchparameter 3 wird eben in den Tabellen angaben1 und angaben2 und angaben3 u.s.w. nach dem WERT 3 gesucht.
Wenn vorhanden dann Ausgabe.....

Für einen Denkanstoß würde ich mich freuen!!
Wenn jetzt jemand meint, ich solle doch in der Extention ein Checkbox Feld hernehmen #evil# ,
mit dem stehe ich im Kriegszustand, wegen der BINÄR Daten!!!!

Lieben Gruß
Andreas

ÁndreMansfeld ·

o.O
Danke!!! Hab gerade gegoogled und ich glaube, da muß ich auch noch ein Semester machen :-)
Aber ein geiler Ansatz ists alle Mal :-)

Lieben Dank

PS: Ich hab jetzt (aus Zeitgründen) die Suchkriterien als Checkboxen ins FE Form eingebaut, es läuft natürlich jetzt. Leider wird das Formular eben (Layoutmäßig) viel größer als ein einfaches PULL/DROP Down.
Ich werde dann dran weiterarbeiten, wenn ich eine Lösung gefunden habe.

Stoneage ·

Hallo Andreas,

Mehrere Tabellen kannst Du übrigens mit Union zusammenfügen.

(SELECT a FROM t1 WHERE a=10 AND B=1)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2)
ORDER BY a LIMIT 10;

Falls die Tabellen unterschiedlich groß sind, kannst Du eine 0 einfügen.

(SELECT a,b,c,d,0,e FROM t1 WHERE a=10 AND B=1)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2)
ORDER BY a,b,c,d,e,f LIMIT 10;

Das kannst Du gut gebrauchen, wenn Du einen Pagebrowser über mehrere Seiten realisieren willst.

MfG,

Chi Hoang

ÁndreMansfeld ·

Hallo Tetramatrix,
danke nochmal...
Ich muß die Suchabfrage aus dem HTML Template starten (FE)
Dort ist ein Submit welcher dann die Abfrage an die DB liefert.

Die Ausgabe der Liste erfolgt in der EXTENTION ganz einfach über

list($gesuchte,$ausDB)=each($SuchParameter)
ect pp

Also da wird eine Ausgabe erzeugt, wenn exakt der Wert von meinem Formular mit einem DB Eintrag übereinstimmt.
Deswegen würde ich mich ja freuen, wenn das Formular eben mehrere Tabellen einschliessen könnte, denn (in weiser Vorraussicht) habe ich im BE beim Eintragen in die DB schon verschiedene Werte genommen.
Die altersangaben sind eben hier 0 (für nicht angehakt-> keine Ausgabe)
altersangaben1 -> 0 (für nicht angehakt-> keine Ausgabe) und 1 -> (Value für angehakt)
altersangaben2 -> 0 (für nicht angehakt-> keine Ausgabe) und 2 -> (Value für angehakt)
altersangaben3 -> 0 (für nicht angehakt-> keine Ausgabe) und 3 -> (Value für angehakt)

Die Werte gibts also nur einmal innerhalb aller Tabellen!

Aber wie auch immer, ich muß noch viele viele Dinge lernen :-)
Ich habs jetzt mit einer Batterie von Checkboxen gelöst!!! In meinem Beispielcode sind ja nur 3 Tabellen. Reel sind aber 30 (nicht nur Alter, sondern auch noch andere Kriterien)
Sieht jetzt aus wie ein Fragebogen vom Finanzamt, :-) aber nun gut ........

Erstmal noch ein schönes WE + Feiertag

Andreas

Stoneage ·

Es muß natürlich so heissen:

(SELECT a,b,c,d,0,e FROM t1 WHERE a=10 AND B=1)
UNION
(SELECT a,b,c,d,e,f FROM t2 WHERE a=11 AND B=2)
ORDER BY a LIMIT 10;

Ich bitte um Entschuldigung.