Datenbankabfrage nach Suchkriterien

Grunge

Erfahrenes Mitglied
Hallo

Ich habe ein kleines Problem. Und zwar will ich eine User Datenbank nach diversen Kriterien durchsuchen.Name, Geschlecht, Alter (dabei wird ein Alter von bis angegeben) Wohnort.

Das ist ja alles kein Problem, nur das Alter macht mir Sorgen. Das Alter ist in Form des Geburtsdatums gespeichert. Alles anderen abfragen mache ich mit LIKE '%%'. Wenn nichts eingegeben wird, dann sucht er eben nach allem, ist ja logisch. Wie mach das nun, das der entsprechende Altersbereich selektiert wird?

Danke für eure Hilfe

Gruß

Ben
 
Um es mal als Pseudocode auszudrücken:
Code:
// Alter ermitteln
alter = heute - Geburtsdatum;

// Auswählen
SELECT * FROM `deine_Tabelle` WHERE `alter` >= minAlter AND `alter` <= maxAlter
 
Ja dann müsst ich doch vorher das geburtsdatum aus der DB holen, und trotzdem würde ich dann ja keine reelen Zahlen miteinander vergleichen können !
 
Ich habe sowas ähnliches für eine IP Sperre verwendet. Ist eigentlich relativ einfach. So in etwa sollte es bei dir funktionieren.

PHP:
$sql = "select * from Tabelle where now() < date_add(gebdat, interval ($jahre+1) year) and now() > date_add(gebdat, interval ($jahre-1) year) ;";
Dabei gibt er alle aus, deren Alter dem selektierten Alter +/- ein Jahr entspricht.

Beim PHPMyAdmin kannst du das im SQL Feld mit dieser Zeile direkt testen:
Code:
SELECT NOW( ) < DATE_ADD(  "1970-10-01", INTERVAL( 40 +1 ) YEAR ) 
AND NOW( ) > DATE_ADD(  "1970-10-01", INTERVAL( 40 -1 ) YEAR )

Siehe auch hier: date_add Damit kannst du das Alter auch noch differenzierter rechnen.
 
also irgendwie funktioniert das nicht. Ich hab es nun so gemacht:

PHP:
$sql="SELECT * FROM `monkey_users` WHERE `Name` LIKE '%".$_POST['textfield']."%' AND `geschlecht` LIKE '%".$geschlecht."%' AND `Ort` LIKE '%".$_POST['textfield4']."%' AND NOW() < DATE_ADD(`Alter`, INTERVAL ".$von." YEAR) AND NOW() > DATE_ADD(`Alter`, INTERVAL ".$bis." YEAR)";

Alter heißt die Spalte in der das Geburtsdatum gespeichert wird. Nur damit ihr bescheid wisst. von bis sind variablen die gefüllt werden je nachdem ob was eingegeben wurde oder nicht. Die Deklaration funktioniert.

Kann mir jemand helfen?
 
Zurück