Simple Suchmaske für Memberlist

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
issjut
Mitglied
Beiträge: 503
Registriert: 15.10.2007 22:05
Wohnort: Berlin
Kontaktdaten:

Simple Suchmaske für Memberlist

Beitrag von issjut »

Ich benötige ganz dringend Eine Suchmaske in der man(n) oder auch Frau nach Mitgliedern meines Forums suchen kann. Suchergebnis dann wie gewohnt als Ausgabe in der Memberlist, nur eben gefiltert!

Was ich meine sollte eigentlich Jeder von der ein oder anderen Datingseite kennen.

Ich bin [Mann] / [Frau] und suche [Mann] / [Frau] im Alter von [Alter bis Alter]

Die Angaben befinden sich ja alle in der Datenbank, also sollte doch eine Filterung bei der Ausgabe kein großes Problem sein, oder?

Also wir hätten das Geschlecht (Gender Mod), wir hätten die "Orientierung" der mitglieder (CPF_Suche_nach) und wir hätten das Alter (Geburtsdatum).

Liegt es also nur noch an der Umsetzung ;-)

Könnte mir vielleicht jemand dabei behilflich sein oder mir zumindest den richtigen Weg weisen :grin:?!
Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Beitrag von nickvergessen »

Das ist kein Ersatz für die Jobbörse hier ;)
kein Support per PN
Benutzeravatar
issjut
Mitglied
Beiträge: 503
Registriert: 15.10.2007 22:05
Wohnort: Berlin
Kontaktdaten:

Beitrag von issjut »

nee nee ich brauch ja nur hilfe^^

Nen bisschen will ich ja auch alleine machen.
Bin allerdings nicht ganz so fit was SQL Abfragen angeht :)
Benutzeravatar
issjut
Mitglied
Beiträge: 503
Registriert: 15.10.2007 22:05
Wohnort: Berlin
Kontaktdaten:

Beitrag von issjut »

ist das so schwierig, dass keiner Helfen kann? :(
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Dann poste doch erst mal ein paar Daten damit das überhaupt geht... Ich kann dir z.B. nicht helfen ohne zu wissen in welchen Tabellen die Daten gespeichert sind die du haben willst und wie die Tabellenspalten heißen. Das könntest du in KB:phpmyadmin nachsehen und dann hier posten um es etwas einfacher zu machen dir zu helfen.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
issjut
Mitglied
Beiträge: 503
Registriert: 15.10.2007 22:05
Wohnort: Berlin
Kontaktdaten:

Beitrag von issjut »

Also, ich stelle es mir ja so vor, dass im Grunde die normale Ausgabe der Mitgliederliste gefiltert wird

Auswahlmöglichkeiten die die Ausgabe filtern sind:
Ich bin [Geschlecht] und suche [Geschlecht] im Alter [Von] [Bis]

Demnach brauchte man folgende Daten:

Schritt 1: Filterung nach Orientierung

tabelle: php_users
Spalte: user_gender
Inhalt: 1 = Mann, 2 = Frau

und

tabelle: php_profile_fields_data
Spalte: pf_orientierung
Inhalt: 1 = finde es heraus, 2 = Mann, 3 = Frau, 4 = egal

Diese Bedingungen müssten dann entsprechend der Auswahl geprüft werden:

Bei, bin Mann suche Frau:
Zeigt alle User mit
user_gender = 2
pf_orientierung = 1 oder 2 oder 4

Bei, bin Frau suche Mann:
Zeigt alle User mit
user_gender = 2
pf_orientierung = 1 oder 3 oder 4

Bei, bin Mann suche Mann:
Zeigt alle User mit
user_gender = 1
pf_orientierung = 2

Bei, bin Frau suche Frau:
Zeigt alle User mit
user_gender = 2
pf_orientierung = 3

Schritt 2: Filterung nach Alter

tabelle: php_users
Spalte: user_birthday

Als Auswahl dann nach Möglichkeit das Feld VON und das Feld BIS
jeweils mit vorgegebenen Werten, z.B. 16, 18, 20, 25, 30, 35, 40 oder "kein Wert" als ne Art default (nach oben oder unten keine Grenze)

Bei, von 18 Jahren bis 25 Jahren
würden demnach nur Mitglieder im Alter von 18-25 Jahren angezeigt werden.

--------------------------------------------------------------------------

Ich hoffe ich konnte das ganze einigermaßen verständlich rüber bringen!
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Ok, da lässt sich was mit anfangen:

Code: Alles auswählen

$sql = "SELECT u.user_id FROM " . USERS_TABLE . " u
LEFT JOIN " . PROFILE_FIELDS_DATA_TABLE . " pfd ON pfd.user_id = u.user_id
WHERE u.user_gender = {was du haben willst, z.b. per Variable} AND " . $db->sql_in_set('pfd.pf_orientierung', array({liste der Zahlen die zulässig sind}));
Punkt zwei könnte was schwieriger werden, das Datumsformat der Geburtstagsspalte scheint ein wenig seltsam zu sein, direkte größenvergleiche sind anscheinend so ohne weiteres nicht möglich (man kann zwar nach speziellen Jahren suchen aber Geburtstag A > Geburtstag B ? geht nur über die Abfrage beider Geburtstage und anschließenden Vergleich so wie ich das sehe).

Wenn du das mit obiger Abfrage kombinieren willst kannst du aber auch per PHP sortieren, indem du obige Abfrage machst, allerdings noch den Geburtstag mit abfragst. Dann kannst du den Geburtstag per [php:explode]('-', $geburtstag) in einer Schleife zerpflücken, solltest auf Monat und Tag [php:trim]() anwenden (in der DB stehen bei einstelligen Daten leerzeichen!), dann die Werte in der Reihenfolge Jahr Monat Tag mit führender Null bei einstelligen werten aneinander hängen und dann nach diesem Wert sortieren, hieraus kannst du dann den gewünschten Datumsbereich extrahieren durch Größenabfrage, z.b. grob so:

Code: Alles auswählen

foreach($array as $value => $key)
{
if($value >= $datum_anfang && $value <= $datum_ende)
{
//Mach was auch immer du willst mit diesem wert, er liegt im bereich
}
elseif($value > $datum_ende)
{
//Zu groß, da wir sortiert haben gilt das für alle folgenden Werte
break;
}
}
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
hackepeter13
Valued Contributor
Beiträge: 3557
Registriert: 21.04.2004 12:22
Wohnort: Berlin
Kontaktdaten:

Beitrag von hackepeter13 »

@issjut

ich habe eben auf phpbb.com die MOD My Profile Space (MPS) entdeckt.

Auf dem Demoboard, gibt es auch einen Test-Acc, schau dir dort mal die MPS Suchseite an, ich glaube das ist doch genau das was du suchst.
Vllt. kannst du dir ja einiges aus der MOD raussuchen.
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“